wireshark中带有SLE和SRE的SACK包详解
2015-09-09 17:26
1206 查看
一、名词解释
SLE: Sequence Left Edge of already acknowledged data when Selective Acknowledgments are used. 即已收到tcp数据的左边界。
SRE: Sequence Right Edge of already acknowledged data when Selective Acknowledgments are used. 即已收到tcp数据的右边界。
二、 使用场景
SACK在数据丢包需要重传时起作用。比如,服务器已发送的数据为1~34454个包,但是,客户端只收到了“1~22774,28614~34454”这些序列的包,也就是说“22775~28613”这些包已经丢了。这个时候,客户端会向服务器请求发送回馈包,说我收到了seq为22774的包,同时也乱序收到了"SLE为28614,SRE为34454"的包。那么,服务器就知道,接着从seq=22775的包开始发送,发送到seq=28613的包的时候,就不用在发送seq=28614的包了,因为客户端已经收到了。
如果ACK中不带SLE和SRE会怎样呢?那服务器就会重发从"22775"开始之后的所有的包,包括其实客户端已经收到的"28614~34454"序号的包,那就浪费网络带宽了,不是么。
三、多个乱序段的情况
实际情况中较少见,因为这代表着隔三差五就有丢包,丢包率应该很大。
就我们使用的有线链路而言,丢包率不足0.1%,无线链路大约在5%左右。【注 1】
在RFC2018中详述了SACK包格式。
有多个数据块乱序的情况下,SLE和SRE也可以有多组,但因为头部字节限制,最多为4组。
sack选项
选项类型: 5
选项长度: 可变,但整个TCP选项长度不超过40字节,实际最多不超过4组边界值。
+--------+--------+
| Kind=5 | Length |
+--------+--------+--------+--------+
| Left Edge of 1st Block |
+--------+--------+--------+--------+
| Right Edge of 1st Block |
+--------+--------+--------+--------+
| |
/ . . . /
| |
+--------+--------+--------+--------+
| Left Edge of nth Block |
+--------+--------+--------+--------+
| Right Edge of nth Block |
+--------+--------+--------+--------+
图2是1组边界的抓包截图
注:
【1】无线链路的丢包率不确定,也有20%的情况
参考:
https://ask.wireshark.org/questions/1389/what-are-sre-and-sle?sort=votes http://blog.chinaunix.net/uid-28387257-id-3624060.html
SLE: Sequence Left Edge of already acknowledged data when Selective Acknowledgments are used. 即已收到tcp数据的左边界。
SRE: Sequence Right Edge of already acknowledged data when Selective Acknowledgments are used. 即已收到tcp数据的右边界。
二、 使用场景
SACK在数据丢包需要重传时起作用。比如,服务器已发送的数据为1~34454个包,但是,客户端只收到了“1~22774,28614~34454”这些序列的包,也就是说“22775~28613”这些包已经丢了。这个时候,客户端会向服务器请求发送回馈包,说我收到了seq为22774的包,同时也乱序收到了"SLE为28614,SRE为34454"的包。那么,服务器就知道,接着从seq=22775的包开始发送,发送到seq=28613的包的时候,就不用在发送seq=28614的包了,因为客户端已经收到了。
如果ACK中不带SLE和SRE会怎样呢?那服务器就会重发从"22775"开始之后的所有的包,包括其实客户端已经收到的"28614~34454"序号的包,那就浪费网络带宽了,不是么。
三、多个乱序段的情况
实际情况中较少见,因为这代表着隔三差五就有丢包,丢包率应该很大。
就我们使用的有线链路而言,丢包率不足0.1%,无线链路大约在5%左右。【注 1】
在RFC2018中详述了SACK包格式。
有多个数据块乱序的情况下,SLE和SRE也可以有多组,但因为头部字节限制,最多为4组。
sack选项
选项类型: 5
选项长度: 可变,但整个TCP选项长度不超过40字节,实际最多不超过4组边界值。
+--------+--------+
| Kind=5 | Length |
+--------+--------+--------+--------+
| Left Edge of 1st Block |
+--------+--------+--------+--------+
| Right Edge of 1st Block |
+--------+--------+--------+--------+
| |
/ . . . /
| |
+--------+--------+--------+--------+
| Left Edge of nth Block |
+--------+--------+--------+--------+
| Right Edge of nth Block |
+--------+--------+--------+--------+
图2是1组边界的抓包截图
注:
【1】无线链路的丢包率不确定,也有20%的情况
参考:
https://ask.wireshark.org/questions/1389/what-are-sre-and-sle?sort=votes http://blog.chinaunix.net/uid-28387257-id-3624060.html
相关文章推荐
- 二、CXF与springMVC整合的webService客户端调用
- 如何清除xcode里面的mobileprovision文件
- 0909编译原理
- Andoird Studio 错误: 非法字符: '\ufeff' 解决方案。
- 0909关于编译原理的理解
- 0909 关于编译原理的思考
- Failed to add reference to 'System.Net.Http'. Please make sure that it is in the Global Assembly Cache.
- MariaDB数据库在Linux下的编译安装配置
- HTTP协议传输数据,大小有上限吗?
- svn系列之三服务端配置代码仓库
- Web开发:Struts2 Spring Hibernate整合(二)——Spring的使用
- winform的listbox拖动(拖拽)排序实例,源码在下方免积分下载
- sizeof和strlen
- 纯js与jquery两种方法,获得某元素同级节点内容,进行值替换
- Angular学习
- Json概述以及python对json的相关操作
- JConsole & JVisualVM远程监视Websphere服务器JVM的配置方法
- 动态获取键盘高度
- vi常用到的命令
- 小白写爬虫之第一天