6 port network-programming web
我已经对这个主题进行了广泛的搜索,但我仍然对“端口”究竟是什么感到困惑。
我知道它是什么“概念上”,我知道有很多不同的端口,有些数字,比如 80 是为某些用途保留的,我知道通过在 CMD 中输入“netstat”命令我可以检查如果它们在使用中。
但是我还是不明白什么是端口。它是否“物理地”存在于我的计算机上?因为我所看到的只是我插入的一根以太网连接线,而不是一些 6000 个不同的端口来做不同的事情。
我真的不明白这与我的互联网浏览器有什么关系。当我点击我的“Chrome.exe”时。图标,是否“打开”了 80 号端口?
如果这看起来像一个新手问题,我非常抱歉,但在此先感谢您。
要在任何联网计算机上访问服务,您需要知道 3 个参数。其中一些是您明确提供的,而其中一些是由操作系统隐式推导出来的。三个参数是IP Address, Protocol, Port number。因此,任何正在运行的服务都可以通过这三个数字的组合来唯一地描述。
想象一下,我们没有使用端口号。这意味着在每台计算机上,我们只能有一个使用任何协议的服务。所以Web服务器只能服务HTTP协议,邮件服务器只能提供SMTP服务等等。
端口的使用允许我们在同一台计算机上复用服务。端口号无非是一个数字,表示哪个服务应该得到一个数据包。所以我们可以让 HTTP 服务器、SMTP 服务器和 SSH 服务器都运行在同一台计算机上,并且都使用相同的协议 - 即 TCP。
此外,这些端口与您在计算机上看到的物理端口无关。再一次 - 它们只是一个数字,允许区分哪个服务(即程序)应该接收哪个数据包。
例如,当我在网络浏览器地址栏中输入 www.stackoverflow.com 时,我的操作系统将 HTTP 请求发送到{IP:104.16.34.249, Proto: TCP, Port: 80}. 它是如何知道这些数字的?IP 地址是使用 DNS 协议从主机名解析的。Web 浏览器正在运行使用 TCP 的 HTTP 协议。端口 80 是 HTTP 的默认端口。在幕后,每个数据包的目标地址 IP 设置为上述值,TCP 有效负载的目标端口设置为 80。在 SO 计算机上,将有一个 web 服务器正在运行,它正在侦听端口 80 上接收到的数据并回复我的包裹。
简而言之,端口只是与操作系统之上运行的服务(或服务器软件)(ftp 服务器、Web 服务器等)相关的逻辑编号(物理上不存在)。当存在寻址到特定端口的传入连接(或任何流量)时,操作系统可以将流量转发到正确的服务进行处理。
默认情况下,浏览器使用端口号 80 寻址给定站点,因此 http://www.randomsite.com和http://www.randomsite.com:80是相同的。