[计算机网络笔记]第三部分——传输层之TCP 可靠传输实现
2016-11-16 13:35
676 查看
可靠数据传输需要用到的机制:
自动重传(ARQ):如果报文出错了,需要重传,这需要差错检测、接收方反馈(ack表示成功确认和nak表示失败确认)、重传三部分
有序到达:需要序号来标识数据包,确认是否是重传报文或者是否乱序到达报文
定时器:用于限制时延,超时则确认是丢包
流水线:为了加快传输速率,提高带宽利用率,在流水线中如果出现丢包或者乱序到达有两种应对方法
a)
GBN(回退N步):只要出现丢包或者乱序到达,以后的数据包都不接收,全部需要重传
b)
SR(选择重传):出现了丢包或者乱序到达,保留后接收到的数据包,同时提醒发送方重发丢失的数据包
TCP可靠传输的实现:
实现了自动重传,有ack应答报文,但是没有nak报文(nak时使用重复上一次ack代替,形成冗余ack报文)
实现了有序到达,用序列号标识一个报文,同时序号不是按“个”计算的,而是按字节计算的。举例来说,相邻的两个TCP报文,各100字节大小,它们的需要不会是0,1,而是0,100
实现了定时器:丢包的定时器时间设定在TCP当中是一个很有技巧的事情。TCP通过随机检测报文的送达情况获得若干个RTT(往返时间)样本,然后将其加权(新RTT样本的权重比旧RTT样本的更大),然后加上一个RTT偏差(不可能正好一个RTT就回得来,需要一个可容忍的浮动时间),得到超时重传的时间。公式是:
TimeoutRTT=EstimeedRTT(指数加权移动平均RTT)+4DevRTT(4倍的RTT偏差)
实现了流水线,当出现丢包或乱序时采取的策略既不是GBN也不是SR,看起来更像GBN一些。
超时时间计算:每一次确认丢包,TCP认为是网络拥塞,会将下一次的超时时间*2,避免加重拥塞
重复的ACK报文:即接收到对发送的同一报文的多次ACK报文,这是由于TCP没有否定确认,如果出现数据出错,或者报文乱序到达,只会重复应答最后一次正确接受的报文。TCP处理时认为这就是数据出错、发送数据乱序到达或者丢包的意思,但是网络的拥塞并不严重,此时TCP会启动快速重传机制
快速重传:即不用等丢包的计时器超时才重发报文,而是在3次冗余ACK之后立即发送冗余ACK确认的下一个序号的报文
自动重传(ARQ):如果报文出错了,需要重传,这需要差错检测、接收方反馈(ack表示成功确认和nak表示失败确认)、重传三部分
有序到达:需要序号来标识数据包,确认是否是重传报文或者是否乱序到达报文
定时器:用于限制时延,超时则确认是丢包
流水线:为了加快传输速率,提高带宽利用率,在流水线中如果出现丢包或者乱序到达有两种应对方法
a)
GBN(回退N步):只要出现丢包或者乱序到达,以后的数据包都不接收,全部需要重传
b)
SR(选择重传):出现了丢包或者乱序到达,保留后接收到的数据包,同时提醒发送方重发丢失的数据包
TCP可靠传输的实现:
实现了自动重传,有ack应答报文,但是没有nak报文(nak时使用重复上一次ack代替,形成冗余ack报文)
实现了有序到达,用序列号标识一个报文,同时序号不是按“个”计算的,而是按字节计算的。举例来说,相邻的两个TCP报文,各100字节大小,它们的需要不会是0,1,而是0,100
实现了定时器:丢包的定时器时间设定在TCP当中是一个很有技巧的事情。TCP通过随机检测报文的送达情况获得若干个RTT(往返时间)样本,然后将其加权(新RTT样本的权重比旧RTT样本的更大),然后加上一个RTT偏差(不可能正好一个RTT就回得来,需要一个可容忍的浮动时间),得到超时重传的时间。公式是:
TimeoutRTT=EstimeedRTT(指数加权移动平均RTT)+4DevRTT(4倍的RTT偏差)
实现了流水线,当出现丢包或乱序时采取的策略既不是GBN也不是SR,看起来更像GBN一些。
超时时间计算:每一次确认丢包,TCP认为是网络拥塞,会将下一次的超时时间*2,避免加重拥塞
重复的ACK报文:即接收到对发送的同一报文的多次ACK报文,这是由于TCP没有否定确认,如果出现数据出错,或者报文乱序到达,只会重复应答最后一次正确接受的报文。TCP处理时认为这就是数据出错、发送数据乱序到达或者丢包的意思,但是网络的拥塞并不严重,此时TCP会启动快速重传机制
快速重传:即不用等丢包的计时器超时才重发报文,而是在3次冗余ACK之后立即发送冗余ACK确认的下一个序号的报文
相关文章推荐
- [计算机网络笔记]第三部分——传输层之TCP 拥塞控制
- [计算机网络笔记]第三部分——传输层之TCP 连接建立与拆除的过程
- [计算机网络笔记]第三部分——传输层之TCP 报文结构
- 计算机网络(七)--TCP的可靠传输原理及实现(一)
- 计算机网络【七】:可靠传输的实现 (tcp窗口滑动以及拥塞控制)【转】
- [计算机网络笔记]第三部分——传输层之UDP
- 计算机网络【七】:可靠传输的实现
- 计算机网络可靠传输的实现 (窗口)
- 计算机网络【七】:可靠传输的实现
- 【计算机网络常见面试题】实现可靠传输的协议
- 计算机网络- 可靠数据传输协议-停等协议的设计与实现
- 计算机网络【七】:可靠传输的实现
- 基础计算机网络——传输层(Transport Layer)笔记
- 黑马程序员——自学笔记15(网络传输2—UDP传输和TCP传输)
- 计算机网络 Andrew 传输层笔记
- TCP/IP(四) —— TCP可靠传输的实现
- TCP可靠传输的实现
- TCP采用哪些机制来实现可靠数据传输、流控和拥塞控制?
- TCP采用哪些机制来实现可靠数据传输、流控和拥塞控制?
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分