TCP差错控制和拥塞控制

TCP(Transmission Control Protocol)是基于连接的协议

拥塞控制:
1、如果网络上的负载(发送到网络上的分组数)大于网络上的容量(网络同时能处理的分组数),就可能引起拥塞,判断网络拥塞的两个因素:延时和吞吐量。拥塞控制机制是:开环(预防)和闭环(消除)(见网络原理相关书籍,略)
tcp处理拥塞的三种策略:慢启动(指数增大),拥塞避免(加法增大),拥塞检测(除2减少,或叫做乘法减少)

A) 慢启动:指数增大
/* ssthresh是慢开始门限,slow start threshold表示一个上限,一般的实现为65535B */
cwnd = 1;(1表示一个MSS报文段,不是一个字节)
while ( cwnd < ssthresh )
if( 发出的报文段确认 )
cwd *= 2;

B) 拥塞避免:加法增大
当到达ssthresh之后,就是加法阶段了,每收到一个确认,cwd += 1;

C) 拥塞检测:乘法减少(除2减少)
当报文需要重传时,说明拥塞可能发生了,由于重传有2种情况,所以也分两种处理
(1)、由于超时重传,这是拥塞的可能性比较大,如下做强反映调整
a、 ssthresh /= 2;
b、 cwnd = 1;
重新慢启动过程
(2)、由于收到3个重复的ACK的重传,采取弱反映:
a、ssthresh /= 2;
b、cwnd = ssthresh;
c、开始拥塞避免过程

 

差错控制:TCP必须保证数据:按序,没有差错,没有部分丢失,没有重复的交给应用层。方法就是:校验和,确认,超时重传

A) 校验和:和UDP的做法一样,也要伪首部,和UDP不同的是这个功能在TCP中是必须的
B) 确认:ACK的确认机制

a、ACK报文不需要确认,也不消耗序号
b、当一端发送数据时,尽量包含捎带确认。
c、收端推迟发送ACK报文段,如果仅有一个未确认的按序报文段;延迟到500ms,或者有第二个报文段接收时(转d),或者有数据要发送时(转b)
d、任何时候,不能有两个(以上)未确认的报文段(就是说如果收端有两个未确认的按序报文段,就马上发送ACK报文段进行确认)
e、当收到一个序号比期望序号还大的报文段时,马上发送ACK,让发端进行快重传
f、收到重复的报文段,就立即发送确认(解决ACK丢失问题)
g、丢失的报文段到达,发送确认,表示已经收到了丢失的报文

C) 重传(两种情况) : 重传定时器时间到,或者 发端收到重复的三个ACK(快重传)



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值