linux的TCP连接数量最大不能超过65535个吗

你这个提问中有一些逻辑的错误,我来一一给你解释一下 。
第一个错误的地方是,TCP连接数量和Linux没有关系 。不管是Windows还是Linux,只要使用TCP/IP , 那么单个IP地址连接相同互联网服务的TCP连接数,就不会超过65535个 , 甚至在一般情况下,我们认为不会超过4万个(注意 , 这里指相同互联网服务,即相同目的地址和端口) 。
【linux的TCP连接数量最大不能超过65535个吗】这个原因是因为,TCP/IP中,一个TCP连接,就要耗费源IP地址一个TCP端口 , 而TCP的端口数量也就是65535个,因为协议规定了TCP端口的长度也就是16位(二进制),所以换成十进制也就是1~65535.
这也就意味着,如果你的电脑要访问一个网站,那么你的电脑只能和这个网站建立65535个连接,一个连接消耗一个TCP端口 。当然这是理想的情况,实际的情况是 , 有很多端口被一些知名的协议占据了,或者做了预留 , 例如80端口就属于HTTP的,所以一般认为能使用的端口就是4万个左右 。

linux的TCP连接数量最大不能超过65535个吗

文章插图
第二个错误是 , TCP的端口数量和服务器没有关系 。因为这里所说的4万个TCP的端口,是指源端口,也就是你访问网站时使用的个人电脑使用的端口ip地址与网络上的其他系统有冲突怎么解决,而对于目的端口,也就是网站的端口 , 使用的TCP端口也就是相同的23端口 。这个意思也就意味着,4万个连接都连的是这个网站的23端口,换一个用户又可以用4万个连接连接服务器的23端口 。
所以我们可以粗略估算一下 , 如果是100万个并发连接,在1个用户4万个访问的情况下ip地址与网络上的其他系统有冲突怎么解决 , 也就是25个并发的用户 。当然 , 实际使用时,你的PC机不会有4万个连接访问相同的网站,假设我们按照一个PC机4个连接访问网站计算,100万个并发也就是25万个用户访问 。
最后回答一下你的问题,服务器如何撑住百万千万个TCP连接呢?这个和服务器的资源有关 。实际上单个服务器支持的TCP连接数的确是有限的 , 单个服务器所支持的TCP连接不可能到达理论值,服务连接一多,CPU撑不住内存也顶不?。悦扛龇衿鞫加泄娓裣拗?nbsp;, 硬件性能越强,服务器支持的TCP连接数越大 。
但是一个网站可以有多个服务器?。梢杂屑悍衿靼?nbsp;, 服务器的规模越大,支持的访问能力就越强,所以这个也不是问题 。
比如阿里巴巴是如何撑过双11的?阿里云在北上广深等很多地方都有服务器,而且每个地方的服务器都是弹性集群,这些服务器实时同步保障淘宝上的数据一致 。所以双11访问淘宝时,有的访问的是北京的服务器,有的访问的是上海的服务器,这样通过分布式服务分布式的存储,网站可以应对的并发自然就很大了 。
本文到此结束,希望对大家有所帮助!

猜你喜欢