//应用,传输,网络
//TCP:提供可靠数据传输,通过使用流量控制,序号,确认和定时器等技术
//拥塞控制
/*1.自动重传机制
A---->B(ACK,NAK)
不知道是数据分组丢失,ACK丢失,或者二者延迟。采用的动作是重传,
发送方:1每次发送一个分组启动一个定时器 2响应定时器中断 3终止定时器
校验和,序号,定时器,肯定确认,否定确认
2.流水线技术
停等效率很低
流水线差错回复 1.回退N步 2.选择重传
base nextseqnum
| |
----------------------------------
{ 滑动窗口长度N }
base:最小的未被确认的序号
nextseqnum:最小未被使用的序号
滑动窗口:即已经发送但未被确认的可以达到的最大数量
为什么要限制:1.流量控制 2.TCP拥塞控制
发送方:如果滑动窗口满了,暂停发送
接收方:对序号为n的分组的确认采取累积确认,表明接收方已正确接收到序号n包括n的所有分组
GNB:重传
选择重传
加倍超时间隔:TCP重传时间间隔加倍
快速重传:在某报文段的定时器过期之前重传丢失的报文段
3.流量控制
用以消除发送方使接收方缓存溢出的可能性,使发送方的速率和接收方的速率匹配
A->B A保存一个B的接收缓冲区大小,通过B通知A
4.连接管理
三次握手
c:syn比特 = 1 客户端起始序号client_isn放入序号字段中
s:syn比特 = 1 确认字号client_isn+1 序号字段server_isn
c:syn比特 = 0 确认字段server_isn+1 序号:client_isn
fin->
<-ack
<-fin
->ack
time_wait:客户端最后一步,使得tcp客户端重传最终确认报文,以防止该ack丢失,30s,1分钟。。
4.拥塞控制
如果不存在拥塞,TCP会增加其发送速率,如果有拥塞,TCP减小发送速率
1.TCP发送方如何限制向连接发送流量的速率
(LastByteSent - LastByteAcked)(未被确认的数据量) <= min(CongWin, RcvWindow)
假如RcvWindow足够大,则CongWin限制,如果发送CongWin字节数据,RTT时间内进行确认,则发送速率CongWin/RTT,通过调节CongWin(拥塞窗口)就能调节发送速率
2.如何感知路径上存在拥塞
超时或者收到接收方3个冗余ACK
3.当拥塞发送时采用什么算法来改变发送速率
TCP拥塞控制算法 1.加性增 乘性减 2慢启动 3对超时事件做出反应
1.加性增 乘性减:当TCP发送方端到端无拥塞时就加性的增加其发送速率,当察觉到有路径拥塞时就乘性的减小其发送效率每次/2
2.慢启动 TCP发送方在初始阶段不是线性的增加发送速率,而是以指数的速度增加,即每一个RTT将CongWin值翻倍。直至出现丢包,然后减半,然后走普通流程
---> ----> -----> 1,2,4这样,每发送一个MSS,如果在超时之前返回,则CongWin+1,在慢启动阶段,每过一个RTT,CongWin的值将有效的增加一倍
----> ----->
----->
----->
3.对超时事件作出反应
1.收到3个冗余ACK,会将拥塞窗口减半,然后线性增长(快速恢复)
2.如果超时 则将拥塞窗口置为1,然后窗口以指数级别增长