本文主要介绍TCP的窗口、差错控制、流量控制、拥塞控制相关知识。
1. 差错控制
tcp发送的报文交给IP协议进行传输,而IP协议只能提供尽力而为的服务,所以在传输过程中发生错误是不可避免的事情。为支持可靠的传输,所以提供了差错控制。
差错控制 主要是通过差错检测,确认和重传方式实现。
1.1滑动窗口
首先介绍一个十分重要的概念 ,滑动窗口。TCP协议是使用以字节为单位的滑动窗口协议来进行发送、接收、确认和重传。通过该窗口来跟踪和记录发送字节的状态,从而达到差错控制。
接收方有一个接收缓存,对其设置一个接收窗口,窗口值等于接收缓存可以继续接收字节流的大小。接收窗口的大小取决于接收方根据接收缓存剩余的空间大小、应用程序读取字节流的速度。
发送方有一个发送缓存,针对该缓存设置了发送窗口,发送方能够利用TCP连接发送字节流的大小取决于发送窗口的大小。发送窗口的大小取决于拥塞窗口和接收窗口的大小( min(拥塞窗口,接收窗口))
如图发送端:

字节流有上述四种状态。 发送窗口等于第二类+第三类窗口字节数之和. 可用窗口的大小等于第3类状态字节数。
-
如果一切正常,TCP发送可用窗口内的数据, 上图第3类数据变为已发送但没有确认。 滑动窗口向左移动,从序号35的字节 又变成了 尚未发送但接收方已准备的数据。
-
当发送过去的数据 收到 接收方的确认后,上图中第2类数据 变为已发送且被确认的数据,刺死滑动窗口继续向左移动。
1.2 重传
当接收方收到字节流序号不连续时,可以进行选择性重传。 只重发丢失的数据。
至于何时重传,通过重传定时器来设定。
每当发送一个报文后,启动一个重传定时器,

最低0.47元/天 解锁文章
2963

被折叠的 条评论
为什么被折叠?



