一个唯一确定的连接要通过四元组,即源IP、源端口、目标IP和目标端口。四元组的其中一个参数发生改变,即为一个新的连接。
客户端与客户端之间不能随意使用TCP连接,因为处于不同内网里。如果有直接连接需求,可以在路由器设置端口转发,但是这样使用起来就很麻烦。因此,TCP连接一般用于客户端与服务器之间的连接。
服务器在提供服务时,会通过bind函数绑定一个端口,然后通过该端口监听客户端的连接。此时,四元组中的目标IP和目标端口在当前进程下被固定了,会变化的就剩下源IP和源端口,即客户端IP和客户端端口。客户端的IP可以是符合IPV4标准的IP,因此可以连接的数量是符合条件的IP * 总端口数(65536),即 * = 个。但是,服务器的其他进程也会绑定不同端口。因此,服务器的最大连接数量是 * * =个。
客户端需要连接服务器时,在客户端只有一个IP的情况下,四元组的源IP、目标IP和目标端口被固定,能变化的就剩下源端口。因此,在一个IP的情况下,客户端的最大连接数是个,也就是65536个。如果客户端有多个IP,那么就能加多次65536个。
实际上,这些数字是理想的情况下,实际上是不能达到的,除非硬件水平得到巨大突破。因此,理解这个问题的目的是为了加深对四元组的理解。