计网——26 UDP和TCP及拥塞
UDP的特点
- UDP时面向无连接的,不需要建立连接就可以传输数据
- UDP尽最大可能交付,不保证可靠交付
- UDP是面向报文,对应用层传输的报文添加首部后就直接发送,不合并不拆分
- UDP没有拥塞控制
- UDP支持一对一,一对多,多对一,多对多
- UDP首部八个字节,开销小
可靠的传输原理
- 无差错情况:A发送一个分组M1,B收到向A确认,A继续发送分组M2,依次下去….直到全部发送完。
- 出现差错:B接受分组出现差错则直接丢弃,A没有收到确认消息,就一直等待,直到超时重传。每次发送一个分组都会暂时保留这个分组的副本,为发生超时重传时使用;分组和确认分组必须编号,确认哪些收到哪些没有收到;超时计时器必须比数据在分组传输的平均往返时间更长一些。
- 确认丢失和确认迟到:接受方确认消息丢失了,发送方超时重传该消息,接受方收到后丢弃重复的消息,重传确认消息;接受方确认消息迟到,发送方重传后也收到确认,这个时候迟到的确认消息到来,则接受方收到后丢弃。
信道利用率:总时间 = 发送时间+往返时间+确认消息发送时间T。信道利用率 = 发送时间/总时间。往返时间一般远大于发送时间。
TCP的特点
- TCP时面向连接的,先建立TCP连接才能传输数据,传输完成需要释放以及建立的TCP连接
- TCP连接两个端口(套接字),点对点
- TCP提供可靠交付
- TCP提供全双工通信
- TCP是面向字节流,TCP根据对方给出的窗口值和网络拥塞状况来决定一个数据报的长度,如果缓存数据太长则划分短一些再传送,如果数据太短,则等待积累更多后一起传送。
1建立TCP连接
- 客户向服务器发送 TCP SYN报文段
指定初始序号
没有数据 - 服务器收到SYN报文段, 用SYNACK报文段回复
服务器为该连接分配缓冲区和变量
指定服务器初始序号 - 客户接收到 SYNACK, 用ACK报文段回复,可能包含数据
2释放TCP连接
拥塞控制
原理
- 网络拥塞条件
对资源的需求 > 可用资源 - 到拥塞点时,网络吞吐量随输入负载的增大而急剧下降,网络进入拥塞状态
拥塞的危害
- 当分组以大于或接近链路容量的速率到达时,分组将承受很大的时延
- 因分组丢弃而进行不必要的重传,导致转发不必要的分组拷贝
底层分组丢弃,高层要求重发 - 当分组沿路径而最终被丢弃时,上游路由器用于转发该分组的传输资源也都浪费掉
R3丢弃分组,使得R1到R2的转发,以及R2到R3的转发毫无价值
思路
- 网络需求是动态的,网络设计者无法完全预测网络应用需求的变化
- 应用对网络资源的需求是多方面的,任何一种资源的不平衡都可能引起网络局部的结构性拥塞
- 闭环控制:基于反馈环路的控制方法,对环境具有更强的适应性,因而实践中广泛采用
TCP拥塞控制机制
- 慢启动
- 加性增和乘性减
- 对基本机制的改进方法
快速重传
快速恢复
TCP慢启动
- 连接开始时, 接收窗口很大,但拥塞窗口值 = 1 MSS
- 获得带宽可能 >> MSS/RTT
- 当连接开始,以指数率快速增加速率,直到进入拥塞避免区域或发生丢包
快速重传
当某报文段出现丢失事件时,因为超时周期通常设置得相对较长,这就迫使发送方要等待很长时间才重传丢失的分组
快速恢复
对TCP Tahoe,当发生丢包事件,立即将拥塞窗口减速至1 MSS,然后转入慢启动阶段。对新版TCP Reno,增加:一旦收到3个冗余ACK后,取消慢启动并转入拥塞避免阶段;这又称快速恢复(fast recovery)方法