3.传输层
UDP特点和应用场景
UDP是一种无连接的、轻量级传输层协议,提供了最简单的服务模型。没有连接,直观上就应该比TCP更高效。
特点:
- 不可靠的数据传输:发送端将数据Push入UDP Socket后,UDP并不保证数据最终会到达接收端,即使到达也不保证是按序到达;
- 没有congestion control机制:发送方可以以任意的速率向网络中发送数据,不管网络的拥塞状况。但发送的数据可能最终到达不了接收方,产生丢包。
优点:
- 应用可更好控制何时发送何种数据:无须建立连接,UDP可尽快将消息发给网络层;TCP可能需要重传在规定时间内没有到达的Segment。UDP没有建立连接所引入的延迟,这可能是DNS选择UDP而不是TCP的最主要原因。
- 实现简单:UDP因为是无连接的,Host因而无须维护连接状态,实现简单;
- 头部开销小:UDP的Segment头部字段共8个字节;而TCP的头部共包括20个字节.
可靠数据传输的原理
rdt 1.0
接收方无返回确认信息
rdt2.0
接收方进行检错,并发送ACK 或 NAK反馈给发送方。
(解决了数据包出错的情况)
rdt 2.1
加入序列号0和1
(解决了ACK、NAK包出错的情况)
rdt 2.2
接收方不再发NAK而将ACK中加入序列号
rdt 3.0
发送方引入定时器
(解决了丢包的问题)
GBN
GBN(Go-Back-N)也叫滑动窗口协议(sliding-window protocol) 。发送方有N个窗口,接收方不需要缓存。
缺点:在此系统中,一个分组或其ACK的丢失可能造成GBN重传太多的分组。当信道差错率逐渐变大,信道会被不必要的重传分组所塞满。
SR(Selective Repeat)
例子: