视频课程见,B站@胡科大教书匠,瑞斯拜老师,yyds。
笔记整理如下:
运输层概述
概念
进程之间的通信
- 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
- 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到三层(到网络层)的功能。
进程之间通信流程
“逻辑通信”是指运输层之间的通信好像是沿水平方向传送数据,但事实上,这两条数据并没有一条水平方向的物理连接,要传送的数据是沿着图中上下多次的虚线方向传送的
进程Ap1与Ap4之间进行基于网络的通信,进程Ap2与Ap3之间进行基于网络的通信
在运输层使用不同的端口,来对应不同的应用进程
然后通过网络层及其下层来传输应用层报文
接收方的运输层通过不同的端口,将收到的应用层报文,交付给应用层中相应的应用进程
这里端口并不是指看得见、摸得着的物理端口,而是指用来区分不同应用进程的标识符
总结
运输层端口号、复用与分用的概念
为什么用端口号
发送方的复用和接收方的分用
多个进程(这里一个端口表示一个进程) 利用一个运输层协议(或者称为运输层接口)发送数据称为 复用
多个进程(这里一个端口表示一个进程) 利用一个运输层协议(或者称为运输层接口)接收时叫做 分用。
TCP/IP体系的应用层常用协议所使用的运输层熟知端口号
在运输层不管用TCP还是UDP协议,在网络层都得用IP协议。IP数据报首部中协议字段的值,表明了IP数据报数据载荷部分,封装的是何种协议数据单元。
运输层传输流程
举例
在浏览器输入域名,回车浏览
然后用户PC中的DNS客户端进程会发送一个DNS查询请求报文
DNS查询请求报文需要使用运输层的UDP协议
首部中的源端口字段的值,在短暂端口号49151~65535中挑选一个未被占用的,用来表示DNS客户端进程
首部中的目的端口字段的值:53,是DNS服务器端进程所使用的熟知端口号
之后,将UDP用户数据报封装在IP数据报中,通过以太网发送给DNS服务器
DNS服务器收到该IP数据报后,从中解封出UDP用户数据报
UDP首部中的目的端口号为53,这表明应将该UDP用户数据报的数据载荷部分,也就是DNS查询请求报文,交付给本服务器中的DNS服务器端进程
DNS服务器端进程解析DNS查询请求报文的内容,然后按其要求查找对应的IP地址
之后,会给用户PC发送DNS响应报文,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地址
现在用户PC中的HTTP客户端进程可以向Web服务器发送HTTP请求报文(和DNS发送和接收流程差不多)
UDP和TCP的对比
概念
- UDP 和 TCP 是TCP/IP体系结构运输层中的两个重要协议
- 当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。
- 当运输层采用无连接的 UDP 协议时,这种逻辑通信信道是一条不可靠信道。
可靠信道与不可靠信道
-
两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 TPDU (Transport Protocol Data Unit)。
-
TCP 传送的数据单位协议是 TCP 报文段(segment)。
-
UDP 传送的数据单位协议是 UDP 报文或用户数据报。
UDP的通信是无连接的,不需要套接字(Socket)
TCP是面向连接的,TCP之间的通信必须要在两个套接字(Socket)之间建立连接