网络协议系列之八:TCP差错控制

TCP的差错控制主要使用校验和确认超时重传这三个工具进行差错控制。

校验和主要用来检验数据报文是否受到损伤。如果校验和无效,报文就会在终点被丢弃。

确认是接收端用来证实确实收到了报文,在TCP中,使用的是累计确认,接收端会告诉发送端其下一个希望接收的字节编号。

超时重传是差错控制的核心。实际上当发送端发送一段字节的数据后,会把这个报文段保存在一个队列中,并启动一个计时器,这个计时器也叫RTO(重传计时器),若计时器超时发送端还没有收到接收端的ACK确认,那么发送端会把队列中的首部报文重新发送。

当然RTO的值是动态的,与RTT有关,RTT是一个报文自发送到接收端返回确认的时间。如果RTO的值不是很大。使用简单的超时重传也就够了,但是如果RTO的值足够大,再使用超时重传就不太切实际了。

TCP是这样处理的:如果发送端连续收到三个重复的超时重传ACK,那么发送端可以不必等待计时器到达而选择马上重传报文段,这种机制也称为快重传

还有一点要注意的是:接收端接收的数据可能不是按序到达的,当接收到不是按序到达的数据的时候,接收端不会丢弃该数据,而是先保存起来,并立即发送一个ACK,当其他失序的报文都到达后才把数据交付给接收进程。由于当RTO的值比较大的时候,TCP会采用快重传机制重传丢失的报文段,所以当发送完一个报文段后,如果发送端连续接收到3个重复的ACK确认的时候就会马上重传报文段,即使RTO计时器还没有超时。下图是快重传的一个流程图:

针对这个流程图说明快重传的机制:

  1. 当发送端收到接收端ackNo=301的报文的时候,继续传输起始编号为301长度为100字节的数据,但是这个报文段丢失了,而发送端继续传输了字节编号从401到500的字节,接收端于是收到了失序但无差错的报文段,接收端把这段报文保存起来,并在接收窗口隔一个空隙,表示还有失序的报文没有到达,并给发送端发送ackNo=301的报文,表示起始编号为301的字节数据我这边还没有收到,你那边注意一下,准备重传吧
  2. 发送端收到这个报文后,仍然继续传输起始编号为501到600的字节,接收端接收到后保存起来,并重新发送ackNo=301的报文
  3. 发送端继续发送起始编号为601到700的字节,接收端收到后保存起来,并再次发送ackNo=301得的报文,由于这已经是第四次收到重复的ACK确认了,虽然这时RTO计时器还没有到达,但是发送端立即发送起始编号为301的字节数据。
时间: 2024-11-02 11:16:06

网络协议系列之八:TCP差错控制的相关文章

网络协议系列之十二:互联网协议入门(二)

(接上文) 七.一个小结 先对前面的内容,做一个小结. 我们已经知道,网络通信就是交换数据包.电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通信.数据包的结构,基本上是下面这样: 发送这个包,需要知道两个地址: * 对方的MAC地址 * 对方的IP地址 有了这两个地址,数据包才能准确送到接收者手中.但是,前面说过,MAC地址有局限性,如果两台电脑不在同一个子网络,就无法知道对方的MAC地址,必须通过网关(gateway)转发. 上图中,1号电脑要向4号电脑发送一

协议系列之TCP/IP协议

根据前面介绍的几种协议,将IP协议.TCP协议.UDP协议组合起来,于是便有了TCP/IP协议.现在很多的应用的通信都是建立在TCP/IP协议的基础上,运用非常广泛,很有必要对其学习一下. 打个不太恰当的比方,TCP/IP协议可以看成是邮局与邮递员的关系(实际TCP/IP协议族会包含四层,应用层.传输层.网络层.链路层).这个协议族中的IP协议定位到哪台计算机,而具体到这台计算机的哪个端口(应用程序)就需要TCP协议,一个属于网络层,一个属于传输层,互相依赖,提供有效的解决通信问题的措施.这就好

网络协议系列之五:TCP简介

这里只是对TCP协议做个简要的介绍. TCP协议是基于流的可靠的传输层协议,不同于UDP协议,UDP不保证信息传输的可靠性.这就意味着应用程序把数据流交付给TCP后,要依靠TCP保证数据流完整.一致以及按序到达接收方的应用程序上.TCP主要通过差错控制机制保证可靠性的传输. 1.差错控制机制包括校验和.确认.超时重传这三个工具.校验和主要用来检验数据报文是否受到损伤.如果校验和无效,报文就会在终点被丢弃.确认是接收端用来证实确实收到了报文,在TCP中,使用的是累计确认,接收端会告诉发送端其下一个

网络协议系列之七:TCP拥塞控制

拥塞控制是TCP传输中很重要的一环,TCP拥塞控制使用一个拥塞窗口以及拥塞策略来进行拥塞控制.在前面的流量控制中提到发送端的发送窗口取决于接收窗口,实际上,发送方的窗口大小是接收窗口与拥塞窗口中的较小值.拥塞窗口的大小又取决于网络的拥塞状况.而具体确定拥塞窗口大小则需要拥塞策略来决定. 拥塞策略包括慢开始.拥塞避免.拥塞检测.TCP的一般是从一个比较小的传输速率开始,然后迅速增大到阈值,到达阈值后以一个比较小的速率继续传输,如果传输过程中遇到了网络拥塞就执行拥塞避免或者拥塞检测算法传输数据,直到

网络协议系列之六:TCP流量控制

TCP的流量控制就是TCP接收端对发送端发送多少字节的数据进行控制,防止接收端处理不及而丢失数据.差错控制就是保证接收端接收的数据是完整未受损伤的,是可靠性的重要保证. 这里以TCP连接的建立过程说明流量控制,则流量控制的过程如下: TCP发送端向接收端发送一个SYN=1.seqNo=100的连接请求.这里的SYN=1表示一个建立连接的标志位,seqNo表示发送端发送数据的起始字节的编号是100 接收端收到SYN=1.seqNo=100的报文后,给客户端发送ACK=1.seqNo=1000.ac

网络协议系列之九:TCP计时器

在TCP中有四种计时器:重传计时器.持续计时器.保活计时器和TIME-WAIT计时器 重传计时器 在拥塞控制中有提到RTO--重传计时器.重传计时器是对发送出去的数据进行重传计时,如果在计时器超时后没有收到返回的ACK确认,发送端就会重新发送队列中重传报文.一般俩讲,使用RTO重传计时器有如下规则: 当TCP发送了位于发送队列最前端的报文段后就启动这个RTO计时器 如果队列为空则停止计时器,否则重启计时器 当计时器超时后,TCP会重传发送队列最前端的报文段 当一个或者多个报文段被累计确认后,这个

网络协议系列之四:IGMP、ICMP和ARP

前言 IGMP协议是一个组管理协议,它帮助多播路由器创建以及更新与每一个路由接口相连的忠实成员列表(就是与该路由接口连接频率较高).ICMP协议实际上就是差错控制协议,弥补了IP协议没有差错纠正机制以及差错报告的缺憾.ARP是一个地址映射协议,可以把一个IP地址映射为MAC地址. IGMP协议 1.IGMP是管理组成员关系的协议 2.IGMP报文分为成员关系报告报文和成员关系查询报文.成员关系查询报文是为了查找网络中活跃的组成员而发送的报文,而成员关系报告报文是为了记录响应者在网络中的成员关系而

网络协议系列之三:IP

前言 这篇博客主要对IP协议中一些基础知识点加以总结,并将书中一些晦涩难懂的部分去除了.IP地址协议是网络层中最重要的协议,IP地址协议可以对因特网上的所有设备进行唯一标识,也正因为有了IP协议,我们的计算机才能实现与全球任意一台设备进行通信. 同时这也是网络层存在的意义,我将对部分的内容分为两个部分加以总结:一.首先对IP协议部分的知识加以总结:二.对网络层其他的协议加以总结,包括ICMP.IGMP.ARP等协议. IP协议基础篇 地址空间 这个概念很好理解,如果一个协议用a位(a个bit)表

网络协议系列之十一:互联网协议入门(一)

前言 我们每天使用互联网,你是否想过,它是如何实现的? 全世界几十亿台电脑,连接在一起,两两通信.上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗? 互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite).它们对电脑如何连接和组网,做出了详尽的规定.理解了这些协议,就理解了互联网的原理. 下面就是我的学习笔记.因为这些协议实在太复杂.太庞大,我想整理一个简洁的框架,帮助自己