运输层中的端口

已经了解到,应用层所有的应用进程都可以通过运输层再传入IP层,这是运输层的复用。运输层从IP层收到发送给各应用进程的数据后,必须分别交付指明的各应用进程,这就是运输层的分用。所以,在运输层的复用和分用下,给每个应用层中的应用进程赋予一个标志是非常重要的。

端口的提出

我们已经知道,在单个计算机中通过进程标识符来标志进程。在互联网中,进程标识符在各计算机系统不同下其格式也是不同的,肯定是行不通的。所以,想到为了让不同操作系统的进程间能够通信,就必须用统一的方法。另外,我们往往利用主机的功能来识别重点,不需要知道具体实现这个进程是哪一个。

所以就在运输层中提出了协议端口号(protocol port number),或通常简称为端口(port)。就是说虽然通信的终点是进程,但只要把报文交由目的主机的某个端口,剩下的工作(即最后交付目的进程)就由TCP/UDP来完成。

注意:这种协议端口是软件端口,即应用层的各种协议与运输实体进行层间交互的一种地址。并不是用以不同硬件设备交互的硬件接口。

TCP/IP运输层用一个16位端口号标志一个端口,16位的端口号可允许有65535 个不同端口号。但是,端口号只具有本地意义,只是为了标志本计算机应用层中的各个进程在和运输层交互是的层间接口。在互联网中不同计算机中,相同端口号是没有关联的

端口的分类

又上可见,两个计算机要互相通信,肯定要知道对方IP(找到对方计算机)和端口号(找到计算机上的进程)。互联网中的计算机通常采用客户-服务器的方式。所以可将端口分为以下两类:

服务器端使用的端口号

这里又分为两类,最重要一类是熟知端口号(wellknown port number)系统端口号,数值为0~1023。这些数值可以在www.iana.org查到。IANA把这些端口号指派给了TCP/IP中的一些应用程序,所以每当一个新程序出现,IANA必须为它指派一个端口,以方便其被所有用户熟知以与其通信。下表为一些常用端口号:

应用程序 FTP TELENT SMTP DNS TFTP HTTP SNMP SNMP(trap) HTTPS
熟知端口号 21 23 25 53 69 80 161 162 443

另一类叫做登记端口号,数值为1024~49151。这类端口号是为没有熟知端口号的应用程序使用的。必须在IANA登记以防重复。

客户端使用的端口号

数值为49152~65535。由于这类端口号只在客户程序进程运行时才动态选择,因此又叫短暂端口号。这类端口号留给客户进程选择暂时使用。当服务进程收到客户进程的报文时,就知道了客户进程所使用的端口号,因此可以把数据发送给客户进程。通信结束后,刚才使用过的客户端端口号就不复存在,这个端口号也就可以供其他客户进程使用了。