web - 'port' 到底是什么,它与互联网有什么关系?

标签 web network-programming port

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

7 天前关闭。




Improve this question




我已经对这个主题进行了广泛的搜索,但我仍然对“端口”到底是什么感到困惑。
我知道它“概念上”是什么,并且我知道有许多不同的端口,并且某些数字(例如 80)是为某些用途保留的,而且我知道通过在 CMD 中输入“netstat”命令我可以检查如果它们正在使用中。
但我还是不明白什么是端口。它“物理”存在于我的计算机上吗?因为我看到的只是我插入的一根以太网连接线,而不是一些做不同事情的 6000 个不同的端口。
而且我真的不明白它与我的互联网浏览器有什么关系。当我点击我的“Chrome.exe”时。图标,这是否“打开”了 80 号端口?

最佳答案

要在任何联网计算机上访问服务,您需要知道 3 个参数。其中一些是您明确提供的,其中一些是由操作系统隐式推断的。三个参数是IP Address , Protocol , Port number .因此,任何正在运行的服务都可以通过这三个数字的组合来唯一地描述。

想象一下,我们没有使用端口号。这意味着在每台计算机上,我们只能拥有使用任何协议(protocol)的一项服务。所以Web服务器只能提供HTTP协议(protocol),邮件服务器只能提供SMTP服务等等。

端口的使用允许我们在同一台计算机上多路复用服务。端口号无非是一个数字,表示哪个服务应该得到一个数据包。所以我们可以让 HTTP 服务器、SMTP 服务器和 SSH 服务器都运行在同一台计算机上,并且都使用相同的协议(protocol)——即 TCP。

此外,这些端口与您在计算机上看到的物理端口无关。再一次 - 它们只是一个数字,允许区分哪个服务(即程序)应该接收哪个数据包。

例如,当我在 Web 浏览器地址栏中输入 www.stackoverflow.com 时,我的操作系统会向 {IP:104.16.34.249, Proto: TCP, Port: 80} 发送 HTTP 请求。 .它是怎么知道这些数字的? IP 地址是使用 DNS 协议(protocol)从主机名解析的。 Web 浏览器运行 HTTP 协议(protocol),该协议(protocol)使用 TCP。端口 80 是 HTTP 的默认端口。在幕后,每个数据包的目标地址 IP 设置为上述值,TCP 有效负载的目标端口设置为 80。在 SO 计算机上,将运行一个 Web 服务器,它正在监听在端口 80 上接收到的数据并回复我的数据包。

关于web - 'port' 到底是什么,它与互联网有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35358596/

相关文章:

delphi - 并行 ping 多个网络设备的最佳方法是什么?

linux - 在 Linux 中从 kernel/net/sched 文件夹加载不同的模块

c - 未定义的端口号作为输出 - UDP/C/Linux

python - 如何在python中获取特定范围内的空闲端口

javascript - 谷歌地图 View 更改自动行为

javascript - Vue 组件不会在新的 $router.push 上重新渲染

java - Spring上传多个文件如何识别每个文件?

c# - Blazor 客户端发送电子邮件

c++ - visual c++并口控制

docker - Windows下的Docker主机网络容器服务访问