端口号(port)
端口号(port)是传输层协议的内容。
端口号是一个2字节、16比特位的整数。
端口号用来标识一个进程,告诉操作系统当前数据要交给哪一个进程来处理。
IP地址 + 端口号能够唯一标识网络上的某一台主机的某一个进程。
一个端口号只能被一个进程占用。
任何的网络服务或网络客户端,如果要进行正常的数据通信,必须要使用端口号来唯一标识自己。一个进程可以与一个端口号绑定,再加上主机IP地址该端口号就在网络层面上唯一标识一台主机上的唯一一个进程。
这种IP+port标识的方案叫做socket通信。
PID vs PORT
一台机器上会存在大量的进程,为了区分所有的进程,设计了PID来加以区分(系统的概念);但是只有部分进程需要进行网络数据请求,所以用port来标识这些需要进行网络数据请求的进程(网络的概念)。
这类似于身份证号可以唯一标识每一个人,但是在学校里又用学号来唯一标识每一个人。身份证号可以看做PID,学号可以看做port,它们之间并不冲突,都是在各自场景下最合适的管理方案。
注意,端口是传输层才有的概念。
传输层用一个 16 位端口号来标志一个端口。端口号只具有本地意义,它只是为了标志本计算机应用层中的各个进程在和传输层交互时的层间接口。在互联网的不同计算机中,相同的端口号是没有关联的。