课程地址:【计算机网络微课堂(有字幕无背景音乐版)】 https://www.bilibili.com/video/BV1c4411d7jb/?share_source=copy_web&vd_source=b1cb921b73fe3808550eaf2224d1c155
目录
5.2.3 TCP/IP体系应用层常用协议所使用的运输层熟知端口号
5 运输层
5.1 运输层概述
具体内容如下。
如上图所示,局域网1上的主机,与局域网2上的主机,通过互联的广域网进行通信。
网络层的作用范围是主机到主机,但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。
上图,AP1和AP2是局域网1这台主机中的与网络通信相关的2个应用进程。AP3和AP4是局域网2上这台主机的与网络通信相关的2个应用进程。
AP是应用进程的英文缩写词。
运输层协议又称为端到端协议,运输层的作用范围是应用进程到应用进程,也称为端到端。
从计算机网络体系结构的角度看运输层
应用进程在应用层。
假设AP1与AP4之间进行基于网络的通信,AP2与AP3之间进行基于网络的通信。
在运输层使用不同的端口对应不同的应用进程。
然后通过网络层及其下层传输应用层报文。
接收方的运输层通过不同的端口将收到的应用层报文交付给应用层相应的应用进程。
需要注意:这里的端口不是指看得见摸得着的物理端口,而是指用来区分不同应用进程的标识符。
简单起见,认为运输层直接为应用进程间的逻辑通信提供服务。
逻辑通信的意思是,运输层之间的通信,好像是沿水平方向传送数据。但事实上,两个运输层之间并没有一条水平方向的物理连接。要传送的数据是沿着图中上下多次的虚线方向传送的。
运输层向高层用户屏蔽了下面网络核心的细节。
总结
5.2 运输层端口号、复用与分用
具体内容如下。
5.2.1 运输层端口号
运输层的任务是直接为应用进程间的逻辑通信提供服务。
运输层使用端口号来区分不同的应用进程。
5.2.2 发送方的复用和接收方的分用
如图所示,这是收发双方的应用进程。
发送方的某些应用进程所发送的不同应用报文,在运输层使用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分用,也就是根据端口号将他们交付给上层相应的应用进程。
5.2.3 TCP/IP体系应用层常用协议所使用的运输层熟知端口号
这些是TCP/IP体系的应用层常用协议。
其中这些协议在运输层使用UDP协议,这是他们各自使用的运输层熟知端口号。
这些协议在运输层使用TCP协议,这是他们各自使用的运输层熟知端口号。
不管在运输层使用UDP还是TCP协议,在网络层都是使用IP协议。IP数据报首部中协议字段的值,表明了IP数据报数据载荷部分封装的是何种协议数据单元。
5.2.4 案例-运输层端口号的作用
如图所示,用户PC、DNS服务器、Web服务器通过交换机进行互联,他们处于同一个以太网中。
假设这是Web服务器的域名。DNS服务器装记录有该域名所对应的IP地址。
我们在用户PC中使用网页浏览器来访问Web服务器的内容。
在网页浏览器的地址栏中输入Web服务器的域名。用户PC中的DNS客户端进程会发送一个DNS查询请求报文,其内容为域名www.parttest.com所对应的IP地址是什么?
封装UDP用户数据报:DNS查询请求报文需要使用运输层的UDP协议封装成UDP用户数据报,其首部中的源端口字段值,在短暂端口号49151到65535中挑选一个未被占用的,用来表示DNS客户端进程,例如49152。目的端口字段的值设置为53,这是DNS服务器端进程所使用的熟知端口号。
封装IP数据报:之后,将UDP用户数据报封装在IP数据报中,通过以太网发送给DNS服务器。
解析IP数据报:DNS服务器端收到该数据包后从中解封出UDP用户数据报。UDP首部中的目的端口号为53,这表明应将该UDP用户数据报的数据载荷部分,也就是DNS查询请求报文,交付给本服务器中的DNS服务器端进程。
解析UDP数据报:DNS服务器端进程解析DNS查询请求报文的内容,然后按其要求查找对应的IP地址,之后会给用户PC发送DNS的响应报文,其内容为域名www.porttest.com所对应的IP地址是192.168.0.3。
发送DNS响应报文:DNS响应报文需要使用运输层的UDP协议封装成UDP用户数据报,其首部中的源端口字段的值设置为熟知端口号53,表明这是DNS服务器端进程所发送的UDP用户数据报,目的端口字段的值设置为49152,这是之前用户PC中发送DNS查询请求报文当DNS客户端进程所使用的短暂端口号。
之后将UDP用户数据报封装在IP数据报中。
通过以太网发送给用户PC。
解析UDP数据报:用户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客户端所请求的首页内容。
HTTP响应报文需要使用运输层的TCP协议封装成TCP报文段,即首部中的源端口号字段的值设置为熟知端口号80,表明这是HTTP服务器端进程所发送的TCP报文段。目的端口字段的值设置为49152,这是之前用户PC中发送HTTP请求报文当HTTP客户端进程所使用的短暂端口号。
之后,将TCP报文段封装在IP数据报中,通过以太网发送给用户PC。
用户PC收到该数据包后从中解封出TCP报文段。TCP首部中的目的端口号为49152,这表明应该将该TCP报文段的数据载荷部分也就是HTTP响应报文,交付给用户PC中的HTTP客户端进程。
HTTP客户端进程解析HTTP响应报文的内容,并在网页浏览器中进行显示。
这样我们就可以在网页浏览器中看到web服务器所提供的首页内容了。
总结
5.3 UDP和TCP的对比
具体内容如下。
TCP/IP体系结构应用层中的某些协议,需要使用运输层的TCP提供的服务,而另一些协议,需要使用运输层的UDP提供的服务。
5.3.1 无连接和面向连接
这是因特网上的两台主机,他们在运输层使用UDP协议进行通信,纵坐标为时间。使用UDP协议的通信双方可以随时发送数据。
再来看使用TCP协议的情况。使用TCP协议的通信双方在进行数据传输之前,必须使用三报文握手来建立TCP连接