熟悉并了解TCP和UDP协议的报文段格式的同学,对于端口这个词一定不陌生。在这些报文段格式中我们总能看到源端口和目的端口这些字段,那关于端口今天这篇文章我们便来了解一下。
我们知道两个进程要想在计算机内部尽享通信,可以有管道、共享内存、信号量、消息队列等方法。两个进程如果需要进行通信最基本的前提是能够唯一的表示一个进程,在本地进程通信中我们可以使用【PID(进程标识符)】来唯一标识一个进程。
但PID只在本地唯一,如果把两个进程放在不同的两台计算机上,然后他们进行通信的话PID就不可以了,所以就需要另外一种手段。
解决这个问题的方法就是在运输层使用【协议端口号】,简称【端口】。
IP层的ip地址可以唯一标识一台主机,而TCP协议和端口号可以唯一标识主机的一个进程,这样我们就可以利用(ip地址+协议+端口号)唯一标识网络中的一个进程。我们把这种模式称为【套接字(socket)】。
这就是说,虽然通信的重点是进程,但我们只要把传送的保温交给目的主机的摸一个合适的端口,剩下的工作就有TCP来完成了。
TCP 用一个 16 位端口号来标识一个端口,可允许有 65536 ( 2的16次方) 个不同的端口号,范围在 0 ~ 65535 之间。
端口号根据服务器使用还是客户端使用,以及常见不常见的维度来区分,主要有以下类别:
- 服务器端使用的端口号
- 熟知端口号
- 登记端口号
- 客户端使用的端口号