首页 理论教育TCP/IP协议:传输层端口简介

TCP/IP协议:传输层端口简介

【摘要】:在TCP/IP协议中,传输层使用的端口号用一个16位的二进制数表示。因此,在传输层如果使用TCP协议进行进程通信,则可用的端口号共有216个。由于UDP也是传输层一个独立于TCP的协议,因此,使用UDP协议时也有216个不同的端口。另外,当服务器要向客户端传输数据时,由于服务器可以从客户的请求报文中获得其端口号,因此也可以正常通信。

数据链路层接收数据帧之后,由数据帧中的协议类型字段(以太网)就可以知道要把数据送到高层的哪个协议。IP层在收到低层送来的数据时,根据IP数据报头中的上层协议类型字段,就可以知道要把IP数据报送到高层的哪个协议。在TCP/IP协议的传输层之上是应用层。现在用户使用的操作系统都是多任务操作系统,也就是说,在IP层之上可能有多个网络应用程序(进程)在进行数据传输,那么传输层收到的数据究竟要送到哪个应用程序呢?

为了识别传输层之上不同的网络通信程序(进程),传输层引入了端口的概念。在一台主机上,要进行网络通信的进程首先要向系统提出动态申请,由系统(操作系统内核)返回一个本地唯一的端口号,进程再通过系统调用把自己和这个特定的端口联系在一起,这个过程称为绑定(Binding)。这样,每个要通信的进程都与一个端口号对应,传输层就可以使用其报文头中的端口号,把收到的数据送到不同的应用程序,如图8-16所示。

在TCP/IP协议中,传输层使用的端口号用一个16位的二进制数表示。因此,在传输层如果使用TCP协议进行进程通信,则可用的端口号共有216个。由于UDP也是传输层一个独立于TCP的协议,因此,使用UDP协议时也有216个不同的端口。

每个要通信的进程在通信之前都要先通过系统调用动态地申请一个端口号,TCP/IP协议在进行设计时就把服务器上守候进程的端口号进行了静态分配。这些端口号由Internet数字分配机构(Internet Assigned Numbers Authority,IANA)来管理。一些常用服务的TCP和UDP的端口号见表8-5和表8-6。

978-7-111-35607-3-Chapter08-20.jpg

图8-16 传输层端到端通信

表8-5 常用的TCP端口号(www.chuimin.cn)

978-7-111-35607-3-Chapter08-21.jpg

表8-6 常用的UDP端口号

978-7-111-35607-3-Chapter08-22.jpg

256~1023之间的端口号通常都是由Unix系统占用的,以提供一些特定的Unix服务。现在IANA管理1~1023之间所有的端口号。任何TCP/IP实现所提供的服务都使用1~1023之间的端口号。

客户端口号又称为临时端口号(即存在时间很短暂)。这是因为客户端口号是在客户程序要进行通信之前,动态地从系统申请的一个端口号,然后以该端口号为源端口,使用某个众所周知的端口号为目的端口号(如在TCP协议上要进行文件传输时使用21)进行客户端到服务器端的通信。通信完成后,客户端的端口号就被释放掉,而服务器则只要主机开着,其服务就在运行,相应端口上的服务就存在。另外,当服务器要向客户端传输数据时,由于服务器可以从客户的请求报文中获得其端口号,因此也可以正常通信。大多数TCP/IP实现时,给临时端口分配1024~5000之间的端口号。大于5000的端口号是为其他服务预留的(Internet上并不常用的服务)。