最多能创建多少个 TCP 连接?
首先,要清楚,创建一个TCP连接需要有一个四元组
(源IP,源端口,目标IP,目标端口),其中,源IP,源端口会由操作系统自行分配【端口号是有限的0 ~ 65535
】,我们在创建的时候,只需要指定目标IP和目标端口号。
当一个TCP连接创建成功后,操作系统需要为每个TCP连接本身以及这个连接所用到的缓冲区,分配一定的内存
,然后返回一个文件描述符
【Linux一切皆文件】,并且,每建一个TCP连接都需要消耗一个线程
,占用一定的CPU
。
理解了上面的内容,我们就可以发现,能创建多少个TCP连接,与五方面内容有关:
- 端口号资源
- 文件描述符资源
- 线程资源
- 内存资源
- CPU资源
现在我们分别展开来讲一讲每一块的内容。
端口号资源
每建一个TCP连接,操作系统需要分配一个端口号。
端口号是 16 位的,范围是 1~65535,但是,Linux 对可使用的端口范围是有具体限制的,一般前1024个端口号主要用于系统端口,不会分配,所以