如何理解TCP端口
问题:一台主机配置多张网卡,假设同时配置了2张网卡,这个时候这台主机有多少个TCP Port可用?
Port
这个问题让我重新思考TCP Port的作用,它是用来标识应用层的网络服务的!原来的理解认为,一台主机只会有65536个端口,并且是0-65535,每个都惟一的。并且在学socket
编程的时候,有一个SO_Reuse_Addr
的问题,更是坚定了Tcp Port
惟一的想法。但是现在看来,事实并不是这样的。
现在个人计算机比较普及,并且99.99%的个人计算机只会同时连接一个网络,即使我们的Laptop同时拥有Eth0
及WLan0
两张网卡,即大部分人的一台机器在一个时候只会用一个IP
地址,所以我们平时在一个主机上都不会看到重复的端口号。
复用一张网卡
重新描述一下上面关于端口作用的表述:在复用单一网络地址时,TCP Port
用于在应用层区分目的服务方。即我们在应用层复用了一张网卡,从这张网卡上收到的数据,可以传输给不同的服务程序,每个服务程序使用Port来区分。
如何我们有两张网卡,那么每张网卡各有同样的端口号。
##内核如何管理重复的Port
创建socket的接口:
int socket(int domain, int type, int protocol);
命名socket的接口:
int bind(int socket