问题:linux机器上可以创建多少个TCP链接
唯一标识一条TCP链接,使用的是一个四元组信息,有(srcIP,srcPORT,dstIP,dstPORT),所以理论上只要这个四元组不同就是不同的TCP链接。
在linux作为服务器的时候,本地IP和PORT是明确的,所以只看源IP和PORT了,这个组合也是相当的大,另一方面打开一个TCP链接需要消耗文件描述符以及内存存储,所以主要还是受系统资源限制。
在linux作为客户端的时候,本地IP是确定的,而本地PORT在connect的时候是由系统随机分配的,但是不能重复绑定,也就是虽然服务端的IP和PORT仍然可以组合,但是系统分配本地PORT确是独占的,这个值最大也就65535个PORT可以分配,且还有保留PORT的。
作为客户端是否可以bind到同一个端口,然后去链接不同的服务,尝试了一下是不行的,会报错。
用go编写了一个server,在8080 8081各启动一个进程监听。
用go编写了一个client,指定同一个本地端口11111去链接8080 和 8081,第二次链接的时候报错了。
Error dialing: dial tcp 1.1.1.1:11111->127.0.0.1:8081: bind: address already in use