客户端和服务器最多能发送和接收多少TCP连接数?

1.  对于服务器,每一个tcp连接都要占一个文件描述符,一旦这个文件描述符使用完了,就会返回错误。

   我们知道操作系统上端口号1024以下是系统保留的,从1024-65535是用户使用的。由于每个TCP连接都要占一个端口号,所以我们最多可以有60000多个并发连接?但是事实并不是这样。

   我们还知道对于TCP连接是由:原IP,原端口,目的IP,目的端口。但是监听server端TCP连接4元组中只有remote ip(也就是client ip)和remote port(客户端port)是可变的,因为它是固定在本地的端口上去监听,所以最大TCP连接为:客户端ip数×客户端port数

2.  而对于客户端,网络通信过程中服务端监听一个固定的端口,客户端主动发起连接请求后要经过三次握手才能与服务器建立起一个TCP连接.客户端每次发起一个TCP连接时,系统会随机选取一个空闲的端口,该端口是独占的不能与其他TCP连接共享,因此理论上一台机器有多少空闲的端口,就能对外发起多少个TCP连接。根据TCP/IP协议,端口port使用16位无符号整数unsigned short来存储,因此本地端口一共有2^16=65536个,即0-65535,其中0~1023是预留端口,0有特殊含义不能使用,1024以下端口都是超级管理员用户(如root)才可以使用,因此就算使用root权限,一台机器最多能使用的端口也只有65535个。但是一台机器最多只能利用28232个端口。具体的细节解释可以看这里https://www.jianshu.com/p/c77e7026531a



猜你喜欢

转载自www.cnblogs.com/jkzr/p/10587013.html