一.Port详细
端口号标识了一个主机进行通信的不同应用程序
一台主机的端口从0~65535:
0-1023:是知名端口号,例如HTTP是默认为80端口,HTTPS是默认为443端口,FTP是默认为21,SSH默认为22号端口
1024~65535:作系统动态分配的端口号. 客户端程序的端口号, 就是由操作系统从这个范围分配的
对于知名端口,如果是我们自己写的相关程序是要避开这些端口的,可以绑定OS动态分配的端口
在 TCP/IP 协议中, 用 "源 IP", "源端口号", "目的 IP", "目的端口号", "协议号" 这样一个五元组来标识一个通信,知道这个对于我们后续UDP学习非常重要
下面我们来解决一些特别有意思的问题:
一个进程是否可以 bind 多个端口号?
显然,一个进程是可以绑定多个端口的,我们知道一个进程可以打开多个文件描述符,而一个描述符对应一个端口,也就是说一个进程就可以绑定多个端口。
一个端口号是否可以被多个进程 bind?
一般来说一个端口号只能被一个进程绑定,但是在特俗情况下一个端口是可以被多个进程绑定的,例如:父进程绑定一个端口号,而子进程是也可以绑定该端口号。