分享免费的编程资源和教程

网站首页 > 技术教程 正文

最大65535TCP连接是怎么回事

goqiw 2024-09-08 17:07:27 技术教程 13 ℃ 0 评论

问题

一个端口最多接受一个客户端的65535个TCP连接?


原理

系统通过一个四元组来标识一条TCP连接,结构如:{本地IP,本地端口,远程IP,远程端口}

在IPv4上, 本地IP和远程IP是32位,本地端口和远程端口为16位,即IP可以是2^32=4294967296,端口可以是2^16=65536。因此可以有TCP连接2^(32+16+32+16)=79228162514264337593543950336 个,这个是理论值。在IPv6上就更不用说了。

一个服务端口可以建立多少个TCP连接?

一个服务一般端口和IP是绑定的,因此能变的就是远程IP和远程端口,即可以建立 2^(32+16)=281474976710656 个TCP连接。

一个服务端口可以和一个客户端建立多少个TCP连接?

对于服务端来说,确定的是本地IP和端口,一个客户端表示远程IP也是固定的,即可以建立 2^16 = 65536 TCP连接。(一般说的65535是不包含0,0不会用)

以上都是理论值。


实际

客户端一般会有一些保留端口用于自身的服务,不用全部用于远程连接,因此一般不会达到65535这个极限。

例如客户端是windows操作系统,一般会有网络邻居的服务等占用端口。

比如Linux客户端上内核上可以通过内核参数net.ipv4.ip_local_port_range限制,用户远程连接的端口范围

cat /proc/sys/net/ipv4/ip_local_port_range
32768	60999

注:前面要是偶数,后面要奇数,不然会有告警信息。

还有一些使用nat的网络环境,只有一个公网IP,也会限制客户端建立TCP连接。


总结

一个端口最多接受一个客户端的65535个TCP连接,这个主要看客户端有没有这么多端口用,不是服务端的限制。

个人总结,有问题留言一起讨论

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表