因为我已经知道每个TCP连接有一个特定的端口号(目标和源)…
给一个请求到服务器时,发件人端使用源端口号,并与多个请求此端口号递增..(纠正我,如果我错了这个)
我的问题是在这个数字重置或者总是独一无二的?
这不会发生。 港口在会议期间应保持一致。 即使是接受检索新连接的调用,也会在同一个端口上结束。
端口号不会在请求/响应上递增。 端口号有点类似于电话分机…您的计算机向IP地址(电话号码)和特定端口(分机)发出请求。 端口号告诉接收端服务器这个请求属于哪个应用(一个端口号)。
因此,端口号保持一致,因此客户端应用程序可以与服务器应用程序联系。 如果这些数字发生变化,客户端将不知道哪个“扩展名”将请求发送到服务器端,导致请求无效或丢失。
客户端端口是任意的,被称为短暂的,供您参考。
您的源端口被操作系统分配 – 除非软件试图请求特定的源端口 – 通常操作系统使用顶端30k左右的端口作为源地址。 所以,如果你提出数以万计的请求,最终你必须回收你的源端口。
许多操作系统只是试图增加他们的最后的源端口,直到他们find一个可用的端口,而另一些从可用端口随机抽取。
源端口将随着新的TCP会话而改变,但不会在会话中改变。 会话中的变化是序列号 。 在一些操作系统上,这两种操作系统都可以以可预测的数量启动,而在其他操作系统上则是随机的。
我不是最新的,但是在Linux下,SELinux可以让设备随机化源端口和初始序列号(现在可能是标准的)。
我猜测潜在的问题是安全性,特别是会话劫持。 如果你真的想保护这种通信水平,你应该调查IPSec和VPN隧道的各种forms。
服务器上的入站端口被称为侦听端口。
在某些服务器应用程序上,连接是在侦听端口上进行的,在这种情况下,服务器将不接受新的连接,直到连接closures。
在其他情况下,连接在侦听端口上启动,然后切换到另一个端口,将侦听端口打开以进行新的连接。
最终的端口号在很大程度上是不相关的,除非有基于防火墙,安全等的特定需求。