TCP 端口号

TCP 端口号

我知道每个 TCP 连接都有一个特定的端口号(目标和源)...

当向服务器发出请求时,发送方使用源端口号,并且随着多个请求,此端口号会增加..(如果我错了,请纠正我)

我的问题是这个数字在什么时候重置或者它是否始终是唯一的?

答案1

这种情况不会发生。端口应该在会话期间保持一致。即使调用 accept 来检索新连接,最终也会使用同一个端口。

答案2

端口号不会随着请求/响应而增加。端口号有点像电话分机号……您的计算机向 IP 地址(电话号码)和特定端口(分机号)发出请求。端口号会告诉接收端的服务器此请求属于哪个应用程序(即端口号)。

因此,端口号保持一致,以便客户端应用程序可以与服务器应用程序取得联系。如果这些数字发生变化,客户端将不知道该将请求发送到服务器端的哪个“扩展”……导致请求无效或丢失。

答案3

客户端上的端口是任意的,称为临时的,供您参考。

答案4

源端口将随着新的 TCP 会话而改变,但不会在一个会话内改变。在一个会话内改变的是序列号在某些操作系统上,这两者都可以以可预测的数字启动,而在其他操作系统上则是随机的。

我还没有更新,但使用 Linux SELinux 可以启用随机化源端口和初始序列号的功能(这现在可能是标准)。

我猜想根本问题是安全性,尤其是会话劫持。如果您真的想保护这一级别的通信,您应该研究各种形式的 IPSec 和 VPN 隧道。

相关内容