运输层是通信子网和资源子网的分界线,但其并不是通信子网和资源子网的一部分。运输层协议为 进程 之间提供了逻辑通信(即 端到端通信 ),而网络层提供的是 主机 之间的逻辑通信(即 点到点通信 )。

运输层提供的功能有:

  • 进程之间的逻辑通信

  • 通过套接字实现复用和分用

  • 对收到的报文(首部和数据部分)进行差错校验

  • 提供面向连接的、可靠的 TCP 和 无连接的、不可靠的 UDP 服务

只有主机之间的通信才用到运输层协议,而转发网络(路由器和交换机)只需要用到下三层协议

运输层通过套接字来区分不同主机上的应用进程,通过端口号来区分同一主机上的不同应用进程。端口号长达 16 bit,其将主机上的端口划分如下:

熟知端口号

0~1023

登记端口号

0~1023

临时端口号

1024~49151

客户端使用的端口号又被称为 临时端口。这是因为这些端口号在客户端使用时动态地选择,使用后又立即销毁

常用的应用端口为:

应用程序

FTP

Telnet

SMTP

DNS

TFTP

HTTP

SNMP

熟知端口号

20, 21

23

25

53

69

80

161

UDP

UDP 是无连接、不可靠的协议,其在 IP 之上只提供两个附加服务:多路复用和差错校验。UDP 适用于实时性强、不要求数据完整性、或者传输数据量少的情况。比如: TFTP, DNS, SNMP, RTP

UDP 具有以下优点:

  • 无需建立连接

  • 无连接,无需维护连接状态

  • 分组首部开销小(只有 8B )

  • 没有拥塞控制,网络中的拥塞不会影响主机的发送效率

UDP 是面向报文的,报文是 UDP 处理的最小单位。其对应用层交付的报文既不分割也不合并,在加入首部后就直接交付给 IP 层

UDP 首部为:

16 位源端口号

16位目的端口号

16位 UDP 长度

16位 UDP 校验和

数据(若有)

  • UDP 长度字段代表 首部 + 数据 的总长度

若 UDP 发现报文中的目的端口号不正确,则直接丢弃该报文,并发送 ICMP :目标不可达 差错报文

UDP 校验和有两种特殊情况:

  • 若校验和字段全为 0 ,说明发送方不使用校验和校验数据

  • 若校验和字段全为 1 ,说明校验和实际上是全为 0

若校验失败,则可以丢弃报文或者是交付给上层,同时附加上错误报告

停等协议

对于停等协议而言,其动作如下:

  • 发送方发送一个分组并等待 ACK, 超时重传。

  • 发送的分组使用 \{0, 1} 对分组进行编号,若接收方接收到序号相同的分组,则丢弃。

停等协议相当于发送窗口和接收窗口均为 1 的滑动窗口。

GBN

回退 N 步( GBN (Go Back N) )动作如下:

  • 若接收方接受到有序分组则发送 ACK 进行确认,否则直接丢弃分组。

  • GBN 使用 累计确认

  • 发送方向接收方以流水线形式连续发送多个分组,分组的数量收发送窗口的大小制约

  • 若发送方等待 ACK 超时,则重传超时分组以及之后的所有分组

GBN 相当于发送窗口为 n , 接受窗口为 1 的滑动窗口。

若采用 n bit 进行编号,则发送窗口的大小 \(W_t\) 应当满足: \(1\leq W_t\leq 2^n-1\)

当 \(W_t = 2^n-1\) 会如何呢?

这里设使用 3 bit 进行编号,设 \(W_t = 2^n = 8\) 。在发送端发送了 0~7 号共 8 个分组后,有两种情况:

  1. 所有分组都得到了确认,这时发送端会发送一组新的分组,序号循环使用,依然为 0~7

  2. 分组全部丢失,这时发送端要重新发送之前的分组,序号依然是 0~7

那么在两种情况下,接收端将无法判断新到达的分组是新分组还是重发的分组。

SR

选择重传( SR (Select Retransmission) )。相比 GBN 而言,当分组丢失、失序的时候,将失序的分组进行缓存而不是直接丢弃,其缓存大小受接受窗口限制。

SR 具有以下特点:

  1. 接收方不再使用累计确认,对于接收到的、序号位于当前窗口之内和当前窗口之前的分组都发送 ACK 确认

  2. 发送方发送的所有分组都需要被确认,否则超时重传

若采用 n bit 进行编号,则发送窗口 \(W_T\) 和接受窗口 \(W_R\) 应满足 \(W_R + W_T \leq 2^n\) 。其中 \(W_R\leq \frac{1}{2} 2^n\)

Last moify: 2025-01-28 10:14:49
Build time:2025-07-18 09:41:42
Powered By asphinx