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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 基于Wireshark的TCP SACK重传介绍 -> 正文阅读

[网络协议]基于Wireshark的TCP SACK重传介绍

1 TCP SACK重传简介

基于TCP的通信是可靠通信,这种可靠通信是通过重传机制实现的。即如果接收端没有收到发送端发送的数据,则发送端会重新发送。

《基于Wirshark的TCP三次握手介绍》中提到,接收端会通过向发送端发送ACK数据包来向发送端确认已收到的数据包。当发送端同时向接收端发送多个数据包,例如发送了数据包1-5,而接收端接收到了数据包1、数据包3、数据包4和数据包5,没有接收到数据包2,此时接收端会向发送端发送ACK数据包来提示客户端从数据包2开始发送。

而客户端是怎么知道是只发送数据包2还是发送数据包2-5的呢?这就需要引入SACK,它是TCP重传机制的一种,是(Selective Acknowlegement)即选择确认的简称。SACK将额外信息保存在TCP包头部的选项段中,该信息表示接收端已经收到了哪些数据包,发送端可以根据该信息选择性地向接收端发送数据包。

2 SACK数据包

SACK数据包包括两种类型,一种是“Sack-Permitted Option”即Sack许可选项;另一种是“Sack Option”即Sack选项。

2.1 Sack-Permitted Option

2.1.1?Sack-Permitted Option格式

Sack许可选项的作用是通知对方在建立的TCP连接中使用Sack重传机制。Sack许可选项必须包含SYN包中,不能在其他类型的包中。

Sack许可选项的长度是2字节,包含两部分内容,如图1所示。

?图1 Sack许可选项

其中,第一个字节表示Sack的类型;第二个字节表示Sack数据的长度。

2.1.2 Wireshark捕获的Sack-Permitted Option

在Wireshark的显示过滤语句中输入“tcp.option_kind == 4”,可以过滤显示Sack-Permitted Option数据包,如图2所示。

?图2 ?Sack许可选项数据

如图2所示,第一部分表示Sack选项的类型,值是0x04,表示其类型是Sack许可选项,而Wireshark的显示过滤语句中的option_kind的含义是选项类型,4表示其类型是Sack许可选项;第二部分表示Sack数据的长度,值是0x02,数据包的长度是2字节。

2.2 Sack Option

Sack Option在接收端发送给发送端的TCP数据包头部中,表示已经收到的数据包。

2.2.1 Sack Option结构

Sack Option结构如图3所示。

?

图3 Sack Option结构

如图3所示,Sack Option结构的前两个字节分别表示类型和长度,与“2.1 Sack-Permitted Option格式”中提到的相同,需要注意的是Sack Option的类型值是0x05。

接下来的8个字节分成两部分,分别是“Left Edge of 1st Block”和“Right Edge of 1st?Block”,每个部分4个字节,表示已经接收的数据序号的下限和上限,需要注意的是“Right Edge of 1st Block”实际上表示的是接收到的数据上限序号加1。也就是说,接收端已经接收到了[Left Edge of 1st Block,Right Edge of 1st Block)之间的数据包。当接收端收到该SOCK信息之后,会发送[Left Edge of 1st Block,Right Edge of 1st Block)区间之外的数据包,接收端收到数据之后,会发送修改后的“Left Edge of 1st Block”和“Right Edge of 1st Block”的ACK包。由于每个区间信息的大小是8字节,而TCP头部的选项段最大字节数是40字节,因为2+8*4=34,所以每个TCP头部的选项段最多包含4个SACK区间。

2.2.2 Wireshark捕获的Sack Option

将Wireshark的显示过滤语句设置为“tcp.option_kind == 5”,表示只显示选项类型为0x05的数据包,如图4所示。

?图4 Wireshark捕获的Sack Option

从图4中可以看出,该SACK信息中,包含1个SACK区间,[29914,34233),也就是说,接收端通知发送端,已经成功接收了[29914,34233)这个区间内的数据,发送端收到该信息之后,会向接收端重新发送这个区间外的数据。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 12:32:49  更:2021-08-30 12:33:28 
 
开发: 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年11日历 -2024/11/25 22:39:52-

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