5.2 运输层端口号、复用与分用的概念
# 5.2 运输层端口号、复用与分用的概念
复用:就是可以重复使用的意思,即各个应用层协议都可以使用TCP协议;
分用:就是TCP根据端口号,将报文分给不同的应用进程。
本节课我们介绍运输层、端口号、复用与分用的概念。在上节课中我们对运输层进行了概述,运输层的任务是直接为应用进程间的逻辑通信提供服务,运输层使用端口号来区分不同的应用进程。
我们知道运行在计算机上的进程是使用进程标识符PID来标志的。然而因特网上的计算机并不是使用统一的操作系统,不同操作系统例如WINDOWS、LINUX、MAC OS等,又使用不同格式的进程标识符,为了使运行不同操作系统的计算机的应用进程之间,能够进行网络通信,就要必须使用统一的方法,对TCPIP体系的应用进程进行标识。
TCP体系的运输层使用端口号来区分应用层的不同应用进程。端口号是用16比特来标识,取值范围是0~65535,分为以下三种
- 第一种是熟知端口号,取值范围是0~1023,因特网数字分配机构IANA把这些端口号指派给了TCPIP体系中最重要的一些应用协议。例如 FTP协议使用21和22号端口,HTTP协议是要80号端口,DNS使用53号端口。
- 第二种是登记端口号,取值范围是1024~49151,为没有熟知端口号的应用程序所使用,使用这类端口号必须在IANA按照规定的手续登记,以防止重复。例如微软远程桌面应用程序,使用的端口号是3389。
- 第三种是短暂端口号,取值范围是49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。
- 需要注意的是端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程,在因特网中不同计算机中的相同端口号是没有联系的。
接下来我们介绍发送方的复用和接收方的分用,如图所示,这是收发双方的应用进程,发送方的某些应用进程所发送的不同应用报文,在运输层使用UDP协议进行封装,这称为UDP复用。而另一些应用进程做发送的不同应用报文,在运输层使用TCP协议进行封装,这称为TCP复用,运输层使用端口号来区分不同的应用进程。不管是使用运输层的UDP协议,封装成的UDP用户数据报,还是使用TCP协议封装成的TCP报文段,在网络层都需要使用IP协议封装成IP数据报,这称为IP复用。
IP数据报首部中协议字段的值,用来表明IP数据报的数据载荷部分,封装的是何种协议数据单元,取值为6表示封装的是TCP报文段,取值为17表示封装的是UDP用户数据报接收方的网络层,收到IP数据报后,进行IP分用
若IP数据报首部装协议字段的值为17,则把IP数据报的数据载荷部分所封装的UDP,用户数据报上交运输层的UDP,
若协议字段的值为6,则把IP数据报的数据载荷部分所封装的TCP报文段,上交运输层的TCP
运输层对UDP,用户数据报进行UDP分用,对TCP报文段进行TCP分用,也就是根据端口号将它们交付给上层相应的应用进程。
下面我们给出TCPIP体系的应用层常用协议所使用的运输层熟知端口号,这些是TCPIP体系的应用层常用协议,其中这些协议在运输层使用UDP协议,这是他们各自使用的运输层熟知端口号,
这些协议在运输层使用TCP协议,这是他们各自使用的运输层熟知端口号,不管在运输层使用UDP还是TCP协议,在网络层都需要使用IP协议,IP数据报首部中协议字段的值,表明了IP数据报数据载荷部分封装的是何种协议数据单元。
接下来我们通过一个实例来进一步说明运输层端口号的作用。如图所示用户PC,DNS服务器,WEB服务器通过交换机进行互联,它们处于同一个以太网中,假设这是WEB服务器的域名,DNS服务器中记录有该域名所对应的IP地址,我们在用户PC中使用网页浏览器来访问WEB服务器的内容,在网页浏览器的地址栏中输入WEB服务器的域名,用户PC中的DNS客户端进程,会发送一个DNS查询请求报文,其内容为域名www.PARTS.COM,所对应的IP地址是什么?DNS查询请求报文,需要使用运输层的UDP协议封装成UDP,用户数据报,其首部中的源端口自断值,在短暂端口号49151到65535中挑选一个未被占用的用来表示DNS客户端进程,例如49152。目的端口字段的值设置为53,这是DNS服务器端进程所使用的熟知端口号。之后将UDP、用户数据报封装在IP数据报中,通过以太网发送给DNS的服务器 DNS服务器端收到该数据报后,从中解封出UDP用户数据报,UDP首部中的目的端口号为53,这表明应将该UDP用户数据报的数据载荷部分,也就是DNS查询请求报文交付给本服务器中的DNS服务器端进程,DNS服务器端进程解析DNS查询请求报文的内容,然后按其要求查找对应的IP地址之后,会给用户PC发送DNS响应报文,及内容为域名wWw.PART TEST.COM,所对应的IP地址是192.168.0.3,DNS响应报文,需要使用运输层的UDP协议封装成UDP,用户数据报,其首部中的源端口字段的值,设置为熟知端口号53,表明这是DNS服务器端进程所发送的UDP用户数据报,目的端口字段的值设置为49152,这是之前用户PC中发送DNS查询请求报文的 DNS客户端进程所使用的短暂端口号。
之后将UDP用户数据报封装在IP数据报中,通过以太网发送给用户PC,用户PC收到该数据报后,从中解封出UDP用户数据报,UDP首部中的目的端口号为49152,这表明应将该UDP用户数据报的数据载荷部分,也就是DNS响应报文交付给用户PC中的DNS客户端进程,DNS客户端进程解析DNS响应报文的内容。就可知道自己之前所请求的WEB服务器的域名所对应的IP地址为192.168.0.3。
现在用户PC中的HTTP客户端进程,可以向WEB服务器发送HTTP请求报文了,其内容为首页内容是什么?HTTP请求报文,需要使用运输层的TCP协议,封装成TCP报文段,其首部中的原端口字段的值在短暂端口号49151到65535中,挑选一个未被占用的用来表示HTTP客户端进程,例如仍然使用之前用过的49152目的端口字段的值设置为80,这是HTTP服务器端进程所使用的熟知端口号。之后将TCP报文段封装在IP数据报中,通过以太网发送给WEB服务器,WEB服务器收到该数据报后,从中解封出TCP报文段,TCP首部中的目的端口号为80,这表明应该将该TCP报文段的数据载荷部分,也就是HTTP请求报文交付给本服务器中的HTTP服务器端进程,HTTP服务器端进程,解析HTTP请求报文的内容,然后按其要求查找首页内容之后,会给用户PC发送HTTP响应报文,其内容是 HTTP客户端所请求的首页内容,HTTP响应报文,需要使用运输层的TCP协议,封装成TCP报文段,其首部中的原端口号字段的值,设置为熟知端口号80,表明这是HTTP服务器端进程所发送的TCP报文段,目的端口字段的值设置为49152,这是之前用户PC中发送HTTP请求报文的HTTP客户端进程所使用的短暂端口号。之后将TCP报文段封装在IP数据报中,通过以太网发送给用户PC,用户收到该数据报后,从中解封出TCP报文段,TCP首部中的目的端口号为49152,这表明应该将该TCP报文段的数据载荷部分,也就是HTTP响应报文,交付给用户PC中的, HTTP客户端进程,解析HTTP响应报文的内容,并在网页浏览器中进行显示,这样我们就可以在网页浏览器中看到WEB服务器所提供的首页内容了,
本节课的内容小结如下