当前课程知识点:网络技术与应用 > 第7讲 传输层 > 7.4 传输控制协议TCP > TCP差错控制机制
TCP协议提供的是面向连接的服务
也就是说 向应用层提供的是按序 可靠的数据传输服务
为了实现这种按序 可靠的传输
应该提供一整套的差错控制机制
下面就来详细学习TCP的差错控制机制
首先分析一下出错现象
然后学习差错控制机制的三个重要过程
数据分段 确认应答和重传
数据在传输过程当中 多种原因可以造成数据出错
比如 端到端之间存在多条传输路径
TCP报文经过网络传输以后 到了接收端
可能出现错序的现象
第二个 端到端传输路径经过的某条物理链路出现问题
导致数据在传输过程当中丢弃
第三个 接收端可能会接收到重复的某个TCP报文
TCP报文在传输过程当中可能会出错
到了接收端以后 通过检验和检测出数据出错
而被丢弃
还有分组交换设备因为拥塞导致端口输出队列溢出
可能会丢弃某个TCP报文
这种现象是数据出错的主要原因
这些出错的原因归纳起来有这样两个方面
一个是接收端接收到了数据 从而检测出错误
第二种情况 是在传输过程当中就被丢弃了
接收端没有接收到数据
接收到的数据检测出错误总体说有这样三种情况
一种是数据本身错了
第二种 顺序错了
第三种情况是重复接收了
对于这样一些错误 接收端都应该检测出这些错误
并且进行纠正
也就是说 差错控制机制的核心应该是 检错和纠错
纠错主要是通过确认应答和重传
怎么来检错和纠错呢
接收端接收到正确的数据以后
就应该向发送端发送确认应答
如果接收到错误的数据 就丢弃
这是对于接收端的要求
对于发送端
发送数据以后保留发送的报文
直到接收到接收端发送的确认应答后才能删除
TCP用确认序号给出接收端已经成功接收的字节流
用确认序号来告诉发送端哪些数据已经接收到了
发送端如果在规定时间内接收不到确认应答的话
就重新发送数据报文
发送端发送数据的时候 采用连续ARQ传输机制
也就是说
不是一个数据发送完后等待确认应答再发送下一个数据
用连续ARP机制连续发送数据
在发送数据之前
首先要对数据进行分段
前面说过 因为TCP协议面向的是字节流的服务
也就是 应用层提供给传输层是一连串的字节流
传输层对字节流分段 重新封装成一系列的报文
假设这有一个8000字节长度的字节流
传输层接收到应用层的这个字节流以后
把它分成8段 每一段是1000个字节
这1000个字节的数据加上TCP首部以后
形成TCP报文
在首部控制信息当中有一个序号
这是序号是报文序列当中第一个字节的序号
比如第一个报文 它的序号为1
第二个报文的序号是1001
最后一个报文的序号值为7001
通过序号的值 到了接收端重新组装的时候
它就知道这个报文应该在原始数据字节流的位置
传输层对字节流进行分段的时候
要综合考虑重传的效率 接收端缓冲区的大小
也要考虑不能超过IP分组的最大长度
尽量避免IP分组重新被分片
分段的长度是由TCP进程确定的
主要综合考虑这些因素
这是数据分段
发送端对数据分段以后
接收端接收到相应的一系列报文以后要重新组装
组装主要依据序号
我们来看一下接收端应该做什么
接收端接收到正确的数据要进行确认应答
确认应答的过程应该是什么样呢
我们来看一下
确认应该可以有多种方式
首先可以通过逐个确认应答
比如发送端发送一个初始序号为1的报文
接收端接收到这个报文马上给一个确认应答
这个确认应答的确认序号是1001
因为报文的长度是1000个字节
也就是告诉发送端1001以下所有的字节
已经被正确地接收了
这是逐个报文的确认
也可以进行累积确认
比如发送端发送了两个报文以后
接收端才发送一个确认应答
这个确认应答里面的确认序号应该是
接收到所有数据的最大序号加1
比如确认应答是3001
表示3001以下的字节流全部被正确接收了
还有一个种情况
报文在传输过程当中 因为时延的抖动
引发错序的情况
那么接收端怎么确认呢
看一下 这是一个发送端发送的序号为3001的报文
但是接收端并没有收到这样一个报文之前
就先接收到了发送端发送的序号为4001的报文
这个时候接收端应该发送一个确认应答
它的确认序号应该是什么呢
它的确认序号是前一个报文的最后一个字节的序号加1
也就是说 确认序号和前一个报文的确认应答序号一样的
还是3001
那么当接收到了序号为3001的报文以后
发送一个确认应答
这个确认应答把序号为3001 4001的这两个报文
一并进行确认
也就是确认序号是5001
这是传输时延抖动引发错序的情况的确认
还有一种情况
因为丢失一些报文引发的错序的情况
接收端怎么来确认
比如发送端发送了一个序号为5001的报文
在发送过程当中丢失了
接收端并没有接收到这个报文
接收到序号为6001的报文以后
那么接收端应该怎么发送确认应答
同样还是发送和前面序号相同的确认应答
也就是确认序号是5001
那么发送端连续 按序发送后面的报文
接收端接收到这些报文以后
一直发送跟前面确认序号一样的报文 一直是5001
一直到接收到序号5001的报文以后
才对后面的报文进行确认
这是接收端对确认应答发送的过程
就是确认应答的过程
下面看一下发送端应该做什么
发送端应该对错误的数据进行重传
看一下重传的条件是什么呢
因为差错控制的本质是出错重传
那么什么样的情况是出错了呢
一个是TCP报文在传输过程中丢失了
二是 因为TCP报文内容在传输过程中出错
接收端检测出这个错误被丢弃了
第三个是因为错序
并且TCP报文当中字节的序号已经不属于接收窗口范围
被接收端丢弃
发送端怎么来确定TCP报文出错了呢
它有两个依据
一是发送端在发送报文以后设置重传定时器
如果重传定时器溢出了
没有接收到相应报文的应答的话
那么就要重传数据了
二是当连续接收到4个确认序号相同的确认应答的时候
那么它确定报文丢失了 要重传了
我们来看一下这几种情况
第一个 在发送过程当中偶尔丢失TCP报文的情况
发送端按照发送窗口内的序号按序发送数据
比如发送端发送第一个报文 第二个报文 第三个报文
在传输过程当中
第一个和第二个报文都收到了它的确认应答
在发送序号为2001的报文的时候
假设中途报文丢失了
发送端继续发送后续的数据
而接收端一直接收到后面的数据时候
发送的应答一直是确认序号为2001的确认应答
导致接收端可能接收到4个序号相同的确认应答
发送端接收到了4个确认序号相同的确认应答的时候
那就需要重传
确认应答里确认序号对应的报文
这是偶尔丢失TCP报文导致发送端
能够接收到4个确认序号相同的确认应答的情况
还有一种情况 就是在发送的过程当中
假设发送的最后一个TCP报文在传输过程中丢失了
在接收端再也接收不到相应的数据
也就是说 接收端不肯能发送应答帧
那么导致发送端的重传定时器溢出了
这种情况也要重传数据
通常情况下
重传定时器溢出的时间大于
接收到4个确认序号相同的确认应答的时间
这是发送端能够接收到接收端4个相同确认序号的应答帧
或者重传定时器溢出的情况
都要进行重传
下面来看一下
在发送数据的过程当中大量TCP报文丢失的情况
比如发送端按序发送报文
但是在发送的过程当中
大量的TCP报文丢失了
不光是大量的TCP报文丢失
接收端发送的确认应答也大量丢失
导致发送端的定时器溢出
这种情况发送端就要重发数据
因为应答帧丢失 数据也丢失的大量的数据丢失
这种情况使得发送端接收不到连续的4个
确认序号相同的确认应答
只会出现重传定时器溢出
这是发送端要重传的情况
总体来说
发送端根据发送窗口连续发送数据
接收端根据接收窗口接收数据
对于接收端来说 按序到达的数据要调整确认序号
没有按序到达的数据维持确认序号不变
两种情况下发送端要重传数据
一个是重传定时器溢出
第二个连续接收4个确认序号相同的确认应答
这个就是TCP的差错控制机制的内容
-课程先导语
--先导语
-1.1 网络内涵
--网络内涵
-1.2 互联网发展过程
--互联网发展过程
-1.2 互联网发展过程--作业
-1.3 交换方式
--电路交换
-- 虚电路交换
--数据报交换
--三种交换方式比较
--html
-1.3 交换方式--作业
-1.4 计算机网络体系结构和协议
--分层结构
--OSI体系结构
-1.4 计算机网络体系结构和协议--作业
-第一讲内容的启示
--html
-例题分析
--例题分析
-测验--作业
-本讲内容简介
-2.1 数据传输系统
-2.1 数据传输系统--作业
-2.2 信号
--2.2 信号
-2.2 信号--作业
-2.3 编码和调制
--2.3-1 编码
--2.3-2 调制
-2.3 编码和调制--作业
-2.4 差错控制
-2.4 差错控制--作业
-2.5 传输媒体
--2.5 传输媒体
-2.5 传输媒体--作业
-2.6 Packet Tracer6.2使用说明
-第二讲内容的启示
--html
-例题分析
--例题分析
-测验--作业
-以太网发展过程与内容简介
-以太网发展过程与内容简介--作业
-3.1 总线形以太网
-3.1 总线形以太网--作业
-3.2 网桥与冲突域分割
-3.2 网桥与冲突域分割--作业
-3.3 交换式以太网与VLAN
-3.3 交换式以太网与VLAN--作业
-3.4 以太网标准
-3.4 以太网标准--作业
-第三讲内容的启示
--html
-例题分析
--例题分析
-案例设计
--案例设计
-测验--作业
-本讲内容简介
--无线局域网
-4.1 无线局域网概述
-4.1 无线局域网概述--作业
-4.2 无线局域网应用方式
-4.2 无线局域网应用方式--作业
-4.3 无线局域网MAC层
-4.3 无线局域网MAC层--作业
-4.4 终端接入无线局域网过程
-4.4 终端接入无线局域网过程--作业
-4.5 无线局域网设计和分析
-第四讲内容的启示
--html
-例题分析
--例题分析
-测验--作业
-本讲内容简介
-- IP与网络互连
-5.1 网络互连机制
-5.1 网络互连机制--作业
-5.2 网际协议
-5.2 网际协议--作业
-5.3 IP分组传输过程
-5.3 IP分组传输过程--作业
-5.4 路由表建立过程
-5.4 路由表建立过程--作业
-5.5 IP over以太网
-5.5 IP over以太网--作业
-5.6 三层交换机与VLAN间通信过程
-5.7 Internet控制报文协议
-5.7 Internet控制报文协议--作业
-第五讲内容启示
--html
-案例设计
--案例设计
-例题分析
-测验--作业
-本讲内容简介
--本讲内容简介
-6.1 Internet接入控制机制
-6.1 Internet接入控制机制--作业
-6.2 以太网和ADSL接入技术
-6.2 以太网和ADSL接入技术--作业
-6.3 家庭局域网接入方式与无线路由器
-6.3 家庭局域网接入方式与无线路由器--作业
-6.4 接入综合演示实验
-6.4 接入综合演示实验--作业
-第六讲内容的启示
--html
-例题分析
--第六讲 例题分析
-测验--作业
-本讲内容简介
--传输层
-7.1 传输层服务特性
--传输层服务特性
-7.1 传输层服务特性--作业
-7.2 端口号
--端口号
-7.3 用户数据报协议UDP
-7.3 用户数据报协议UDP--作业
-7.4 传输控制协议TCP
--TCP特点和格式
-- TCP的几点说明
-7.4 传输控制协议TCP--作业
-第七讲内容启示
--html
-例题分析
--例题分析
-测验--作业
-本讲内容简介
-- 应用层
-8.1 应用结构
--应用结构
-8.1 应用结构--作业
-8.2 域名解析
-8.2 域名解析--作业
-8.3 动态主机配置协议
-8.3 动态主机配置协议--作业
-8.4 万维网
-- 万维网
-8.4 万维网--作业
-8.5 电子邮件
--html
-8.6 文件传输协议
--html
-例题分析
--例题分析
-案例设计
--CH8 案例设计
-应用层启示
--html
-测验--作业
-本讲内容简介
-9.1 网络安全概述
-9.1 网络安全概述--作业
-9.2 网络安全基础
-9.2 网络安全基础--作业
-9.3 病毒检测与防御技术
-9.3 病毒检测与防御技术--作业
-9.4 以太网安全技术
-9.4 以太网安全技术--作业
-9.5 无线局域网安全技术
-9.5 无线局域网安全技术--作业
-9.6 防火墙
-9.6 防火墙--作业
-9.7 安全协议
--9.7 安全协议
-9.7 安全协议--作业
-例题分析
--例题分析
-防火墙演示实验
-- 防火墙演示实验
-案例设计
--案例设计
-网络安全的启示
--html
-测验--作业
-附录1:综合应用分析
--综合应用分析
-附录2:Cisco实际设备网络构建与配置
-期末考试--考试试题