1. 停止等待协议
1.概述
发送方每次只能发送一个数据包,确认方每次只能发送一个确认。发送方收到重复的确认会丢弃(接收方已经接收),接收方收到重复的数据,会把数据丢弃,但是会发送确认(防止上一个确认消息丢失)
2. 信道利用率
信道利用率很低
2. TCP中可靠传输机制
1. 发送端与接收端行为
超时重传与快速重传,正常传送是针对发送方来说的,确认单个,确认一批(窗口)选择确认与重复确认是针对接收方来说的
- 发送端
发送端超时重传与快速重传机制同时存在。当某个数据包超出计时器时间还没有收到确认,就重传该数据包,(超时重传)当某个数据包未超过计时器时间,但是已经连续收到三个确认,则重传(快速重传)。 - 接收端
- 接收端当前收到的数据包序号与之前收到的数据包序号相连(不丢包),则发送该数据包的序号。
- 如果当前数据包与之前收到的数据包序号有间隔(丢包),则发送ack(丢包)
- 为了指明哪些数据包已经接收,SACK字段指明哪些数据包已经被接受了,格式为【SACK左,SACK右),重传【ack,sack左)选择性确认
- 在接收窗口读取了若干连续的数据包,则ack(当前数据包)
- 当接收方已经接收到了数据,再次接收到同样的数据,SACK字段表示重复接收的数据 【SACK左,SACK右)
2. 各种机制解决的问题
- 超时重传
单纯的超时重传解决数据包传输丢失与确认丢失问题,这是可靠传输的底线,即使其余机制出现问题,超时重传机制也能保证数据的可靠传输。 - 快速重传机制
解决超时重传数据包等待时间过长的问题,提高传输速率(原先要等到到达重传时间再重传,现在由于接收端的通知,可以提前重传,数据传输速率增加) - 选择确认
解决快速重传时应该重传哪些数据包 - 重复确认
解决了接收端重复接收数据包问题- ack丢包
- 网络延迟
3. 常见的网络故障
- 数据丢失
数据包传输过程丢失 - 数据延迟
数据包传输过程中延迟 - 确认丢失
确认数据包返回时丢失 - 确认延迟
确认数据包返回时延迟