在我的网络通信中,为什么源端口和目标端口不同?

网络工程 协议理论 传输协议
2021-07-22 16:36:31

我只是从理论上知道两台主机如何通过端口和协议进行通信,我一直认为它们必须在两端使用相同的端口号进行通信,但是查看iftop我计算机上的网络流量(在 unix 上使用)会感到困惑我有点。如您所见,有一个 https 请求(端口 443),但在我这边它使用了几个不同的未知端口,这是为什么?

192.168.0.253:47262       <=> 151.101.0.162:443             0b    419Kb   105Kb 
192.168.0.253:59526       <=> 151.101.64.162:443            0b   53.8Kb  13.5Kb 
192.168.0.253:45034       <=> 151.101.128.162:443           0b   41.7Kb  10.4Kb 
192.168.0.253:59534       <=> 151.101.64.162:443            0b   41.4Kb  10.4Kb 
192.168.0.253:45050       <=> 151.101.128.162:443           0b   39.0Kb  9.76Kb 
1个回答

源端口是从未注册的端口范围中随机生成的。

源/目标端口的工作方式与您的 IP 类似。您发送的端口也是服务将回复的端口。例如; 网站只是一个侦听端口 80(或 443)上的连接的服务器。

当您尝试加载网站时,您会从未注册的范围内生成一个免费端口,并从 192.168.1.1:45676(选择的源端口)发送请求,然后您的浏览器将请求发送到 200.20.20.20:80(例如 IP)服务器正在侦听此端口。

与您的 IP 非常相似,当服务器回复您时,它会在数据包标头中将目标 IP 和端口设置为接收请求的源 IP/端口。这使您可以一次运行多个网页。

如果您打开了 4 个网页,所有网页都在端口 80 上发送和接收,则它不知道响应流量将被定向到哪里。这就是使用源端口的原因。

这是一篇可能会帮助您更好地理解它的文章;

http://www.firewall.cx/networking-topics/protocols/tcp/133-tcp-source-destination-ports.html

这个视频可能也很有趣:):

https://www.youtube.com/watch?v=PBWhzz_Gn10