IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> (王道考研计算机网络)第五章传输层-第三节1-3:TCP可靠传输 -> 正文阅读

[网络协议](王道考研计算机网络)第五章传输层-第三节1-3:TCP可靠传输

IP层是不可靠的,所以TCP的任务就是在IP层上提供一种可靠的数据传输服务。TCP提供的可靠数据传输服务保证接收方进程从缓存区读出的字节流与发送方发出的字节流完全一样,使用以下四种机制来达到此目的

一:序号

序号:用于保证数据能有序提交给应用层。TCP会将数据视为一个无结构但有序的字节流,序号建立在传送的字节流之上,而不建立在报文段之上。TCP连接传送的数据流中的每个字节都编上一个序号。序号字段的值是指本报文段所发送的数据的第一个字节的序号

如下图,假设 A A A B B B之间建立了一条TCP连接, A A A的发送缓存区中共有10B,序号从0开始标号,第一个报文包含第0~2个字节,则该TCP报文段的序号是0,第二个报文段的序号是3

在这里插入图片描述

二:确认

确认:TCP首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号

如下图,发送方先发送【123】给接收方

  • 为防止丢失,在确认【123】到达之前接收方要一直保存

在这里插入图片描述

接收方在收到【123】后返回确认给发送方,由于收到序号为3,下一个要收到的应该是4,所以该确认报文确认号字段为4

  • 有时它会把该报文结合在一起一并发送给发送方(捎带确认)

在这里插入图片描述

发送方在收到确认报文4后,获悉接收方已经正确接收,所以在其缓存中删除【123】

在这里插入图片描述

发送继续发送【456】和【78】,【78】正确接收,但【456】报文由于种种原因未能及时送达

在这里插入图片描述

此时TCP会采用累计确认机制,虽然【78】已经接收,但这里确认号字段仍然为4

在这里插入图片描述

接着发送方就会继续重传【456】,【456】正确到达后,下一个确认号字段将会填9

三:重传

重传:有两种事件会触发TCP重传机制

  • 超时
  • 冗余ACK

(1)超时重传

超时重传:TCP每发送一个报文段,就对这个报文段设置一次计时器。计时器设置的重传时间到期但还未收到确认时,就重传这一报文段

  • RTTs:为计算超时计时器的重传时间,TCP采用一种自适应算法,它记录一个报文段发出的时间,以及收到相应确认的时间,这两个时间之差称为报文段的往返时间(RTT)。 TCP保留了RTT的一个加权平均往返时间RTTs,它会随新测量RTT样本值的变化而变化。显然,超时计时器设置的超时重传时间( RTO) 应略大于RTTs

在这里插入图片描述

TCP会采用以下公式计算RTO

在这里插入图片描述

(2)冗余ACK(快速重传)

  • 超时触发重传存在的一个问题是超时周期往往太长。所幸的是,发送方通常可在超时事件发生之前通过注意所谓的冗余ACK来较好地检测丢包情况

冗余ACK:冗余ACK就是再次确认某个报文段的ACK,而发送方先前已经收到过该报文段的确认

如下图所示

  • 第一份Seq1先送到了,于是就Ack返回2
  • 结果Seq2因为某些原因没收到,Seq3 到达了,于是还是Ack返回2
  • 后面的Seq4Seq5都到了,但还是Ack返回2,因为Seq2还是没有收到
  • 发送端收到了三个Ack = 2的确认,知道了Seq2还没有收到,就会在定时器过期之前,重传丢失的Seq2
  • 最后,收到了Seq2,此时因为Seq3Seq4Seq5 都收到了,于是Ack返回6

在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-07-05 23:42:56  更:2022-07-05 23:43:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 12:43:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码