端口号相关疑问

网络工程 通讯协议 协议理论 传输协议 第4层
2021-07-13 19:22:35

假设我们有两个浏览器(Chrome 和 Firefox)同时运行,并且都在请求一个网页。让我们假设 Chrome 正在请求www.facebook.com,而 Firefox 正在请求www.youtube.com

我们还假设 HTTP 的默认端口是 TCP 80。

以下哪个案例是正确的?

案例 1:两个浏览器都使用 TCP 端口号 80(但一次一个)发出 HTTP 请求,并且该请求到达相应的 Web 服务器,然后 Web 服务器通过 TCP 端口号 80 发回响应。因此,两者请求和响应使用 TCP 端口 80。

案例2:两个浏览器使用不同的TCP端口进行HTTP请求,然后Web服务器默认使用TCP端口号80进行响应。

PS:我很困惑 HTTP 默认 TCP 端口 80 是由客户端用于发出请求,还是由 Web 服务器用于发送响应,或者两者都使用。

4个回答

用户应用程序使用随机临时端口进行传出连接。TCP 端口 80 只是服务器端用于 WWW 的默认端口。

一个 TCP 套接字连接由源 IP、源端口、目的 IP、目的端口组成。只有当所有这些都相同时,它才是同一个插座。

每个 TCP 数据包都有两个端口字段;一个是源端口,另一个是目的端口。

youtube.com 服务器正在侦听端口 80。这意味着您的计算机传输youtube.com 的任何数据包的目标端口 = 80,源端口 =(临时)。youtube.com传输到您的计算机的任何数据包都具有源端口 = 80,目标端口 =(短暂的)。

(ephemeral) 是从 1025 到 65535 之间的任何数字。当连接开始时,这个数字固定为这个范围内的某个值,并且只要 TCP 会话有效,就保持不变。这就是为什么您可以在计算机上同时启动两个 youtube 会话,并且两者都可以正常工作而不会相互干扰:两个会话的(临时)编号不同。

另一部分是,通常对于客户端/服务器应用程序,服务器端进程将侦听有问题的端口(套接字)(在本例中为端口 80),然后当请求进来时,它将创建一个新的唯一处理该特定连接的过程。主进程将使用源端口 = * (any) / 源 IP = * 和目标端口 80 / 目标 IP = 进程绑定的服务器 IP 侦听服务器。

NEW 进程将特定于来自每个浏览器的连接:

Firefox: src port = 4000, srcIP = 1.1.1.1; dst port =80, dstIP=3.3.3.3
Chrome:  src port = 4001, srcIP = 1.1.1.1; dst port =80, dstIP=3.3.3.3

这允许服务器和客户端唯一地标识和单独处理每个连接。当连接关闭时,独特的进程被拆除。

当用户访问网页(http)时,将为该 TCP 连接打开一个唯一的套接字,其源端口由操作系统分配,目的端口 80(广泛用于 http)、源 IP 和目的 IP。在 TCP/IP 中,具有 5 元组(协议、源 IP、源端口、目标 IP、目标端口)的唯一会话将处理每个通信。由于源端口是由操作系统分配的,即使您从不同的浏览器访问同一个网站,您的进程也将是唯一的。