重学TCP协议(7) Timestamps 选项

1.Timestamps 选项的组成部分

image.png
时间戳选项占10个字节= kind(1字节) + length(1字节) + info (8字节),其中kind=8,length=10,info由timestamp(TS value)和timestamp echo(TS Echo Reply)两个值组成,各4个字节的长度。

2. Timestamps 选项工作原理

以一次抓包为例:
image.png

  1. 发送方发送数据时,将一个发送时间戳 1590508660 放在发送方时间戳TSval中
  2. 接收方收到数据包以后,将收到的时间戳 1590508660 原封不动的返回给发送方,放在TSecr字段中,同时把自己的时间戳 1499872733 放在TSval中

3. Timestamps 选项的作用

时间戳选项主要的功能有两个

3.1 用来计算往返时间RTT

发送方在发送报文段时把当前时钟的时间值放入时间戳字段,接收方在确认该报文段时把时间戳字段值复制到时间戳回送回答字段。因此,发送方在收到确认报文后,可以准确计算出RTT。时间戳是一个单调增长的值,接收方只需要回显收到的内容,因此是不需要关注时间戳的单元是什么,也不需要连接双发的时钟同步。

image.png
例如:主机a向主机b发送一个报文s1,在发送时将内核时刻ta1记录到报文s1的选项字段时间戳timestamp区域;主机b接收到报文s1后,从s1的时间戳timestamp区域将ta1取出来,复制到应答报文s2的时间戳timestampecho区域。如此一来,主机a收到s2时,此时的内核时刻是ta2,那么RTT = ta2 - ta1。这在一定程度上就能反映网络的拥堵情况了。

为什么需要用Timestamps计算RTT

TCP 在发送一个包时,会记录这个包的发送的时间 t1,用收到这个包的确认包时 t2 减去 t1 就可以得到这次的 RTT。这里有一个问题,如果发出的包出现重传,计算就变得复杂起来。无法得知收到的确认 ACK 是对第一次包还是重传包的的确认

image.png

3.2 PAWS:防止回绕的序号

我们知道序列号只有32位,而每增加2^32个序列号后就会重复使用原来用过的序列号。假设我们有一条高速网络,通信的主机双方有足够大的带宽用来快速的传输数据。例如1Gb/s(TCP 的窗口经过窗口缩放可以最高到 1GB(2^30))的速率发送报文段,则不到35秒钟数据字节的序列号就会重复。这样对TCP传输带来混乱的情况。这种情况之出现在高速链路上。而采用时间戳选项,可以很容易的分辨出相同序列号的数据报,哪个是最近发送,哪个是以前发送的。

4. Timestamps 选项在三次握手中造成的RST

三次握手中的第二步,如果服务端回复 SYN+ACK 包中的 TSecr 不等于握手第一步客户端发送 SYN 包中的 TSval,客户端在对 SYN+ACK 回复 RST。示例包如下所示。

image.png

5.使用Timestamps 选项的注意事项

  • Timestamps是双向的,必须双方都开启才有效
  • Timestamps也会溢出回绕
  • timestamps 值是一个单调递增的值,但是两端 timestamps 值增加的间隔也可能步调不一致

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/391161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++ 时间序列工具包_我的时间序列工具包

c 时间序列工具包When it comes to time series forecasting, I’m a great believer that the simpler the model, the better.关于时间序列预测,我坚信模型越简单越好。 However, not all time series are created equal. Some time series have a strongly defi…

bash 的相关配置

bash 参数自动补全 请安装 bash-completion bash 提示符 说明:参考文档 1. 简洁风格 if [[ ${EUID} 0 ]] ; then PS1\[\033[01;32m\][\[\033[01;35m\]\u\[\033[01;37m\] \w\[\033[01;32m\]]\$\[\033[00m\] else PS1\[\033[01;32m\][\u\[\033[01;37m\] \w\[\033[01;…

LINUX系统安装和管理

目录 一.应用程序 对比应用程序与系统命令的关系 典型应用程序的目录结构 常见的软件包装类型 二.RPM软件包管理 1.RPM是什么? 2.RPM命令的格式 查看已安装的软件包格式 查看未安装的软件包 3.RPM安装包从哪里来? 4.挂载的定义 挂载命令moun…

adobe 书签怎么设置_让我们设置一些规则…没有Adobe Analytics处理规则

adobe 书签怎么设置Originally published at Analyst Admin.最初发布于Analyst Admin 。 In my experience working with Adobe Analytics, I’ve found that Processing Rules help in some cases, but oftentimes they create more work. I try to avoid using Processing R…

详解linux下安装python3环境

1、下载python3.5源码包首先去python官网下载python3的源码包,网址:https://www.python.org/ 进去之后点击导航栏的Downloads,也可以鼠标放到Downloads上弹出菜单选择Source code,表示源码包,这里选择最新版本3.5.2&am…

重学TCP协议(8) TCP的11种状态

TCP的11种状态 为了逻辑更加清晰,假设主动打开连接和关闭连接皆为客户端,被动打开连接和关闭连接皆为服务端 客户端独有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 &…

肯尼亚第三方支付_肯尼亚的COVID-19病例正在Swift增加,我们不知道为什么。

肯尼亚第三方支付COVID-19 cases in Kenya are accelerating rapidly. New cases have increased 300% month-over-month since April of this year while global and regional media have reported on the economic toll of stringent lock-down measures and heavy-handed go…

Java 集合 List Arrays.asList

2019独角兽企业重金招聘Python工程师标准>>> 参考链接:阿里巴巴Java开发手册终极版v1.3.0 【强制】使用工具类 Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方 法,它的 add/remove/clear 方法会抛出 UnsupportedO…

重学TCP协议(9) 半连接队列、全连接队列

1. 半连接队列、全连接队列基本概念 三次握手中,在第一步server收到client的syn后,把相关信息放到半连接队列中,同时回复synack给client(第二步),同时开启一个定时器,如果超时还未收到 ACK 会进…

分类预测回归预测_我们应该如何汇总分类预测?

分类预测回归预测If you are reading this, then you probably tried to predict who will survive the Titanic shipwreck. This Kaggle competition is a canonical example of machine learning, and a right of passage for any aspiring data scientist. What if instead …

“机器换人”之潮涌向珠三角,蓝领工人将何去何从

企业表示很无奈,由于生产需要,并非刻意换人。 随着传统产业向更加现代化、自动化的新产业转型,“机器换人”似乎是历史上不可逆转的潮流。 据报道,珠三角经济圈所在的广东省要从传统的制造大省向制造强省转变,企业转型…

深入理解InnoDB(6)—独立表空间

InnoDB的表空间 表空间可以看做是InnoDB存储引擎逻辑结构的最高层 ,所有的数据都是存放在表空间中。 1. Extent 对于16KB的页来说,连续的64个页就是一个区,也就是说一个区默认占用1MB空间大小。 每256个区被划分成一组,第一组的前3个页面是…

神经网络推理_分析神经网络推理性能的新工具

神经网络推理Measuring the inference time of a trained deep neural model on different hardware devices is a critical task when making deployment decisions. Should you deploy your inference on 8 Nvidia V100s, on 12 P100s, or perhaps you can use 64 CPU cores?…

Eclipse断点调试

1.1 Eclipse断点调试概述Eclipse的断点调试可以查看程序的执行流程和解决程序中的bug1.2 Eclipse断点调试常用操作:A:什么是断点:就是一个标记,从哪里开始。B:如何设置断点:你想看哪里的程序,你就在那个有效程序的左边双击即可。C…

深入理解InnoDB(7)—系统表空间

系统表空间 可以看到,系统表空间和独立表空间的前三个页面(页号分别为0、1、2,类型分别是FSP_HDR、IBUF_BITMAP、INODE)的类型是一致的,只是页号为3~7的页面是系统表空间特有的 页号3 SYS: Insert Buffer …

CodeForces - 869B The Eternal Immortality

题意&#xff1a;已知a,b&#xff0c;求的最后一位。 分析&#xff1a; 1、若b-a>5&#xff0c;则尾数一定为0&#xff0c;因为连续5个数的尾数要么同时包括一个5和一个偶数&#xff0c;要么包括一个0。 2、若b-a<5&#xff0c;直接暴力求即可。 #include<cstdio>…

如何在24行JavaScript中实现Redux

90% convention, 10% library. 90&#xff05;的惯例&#xff0c;10&#xff05;的图书馆。 Redux is among the most important JavaScript libraries ever created. Inspired by prior art like Flux and Elm, Redux put JavaScript functional programming on the map by i…

卡方检验 原理_什么是卡方检验及其工作原理?

卡方检验 原理As a data science engineer, it’s imperative that the sample data set which you pick from the data is reliable, clean, and well tested for its usability in machine learning model building.作为数据科学工程师&#xff0c;当务之急是从数据中挑选出的…

Web UI 设计(网页设计)命名规范

Web UI 设计命名规范 一.网站设计及基本框架结构: 1. Container“container“ 就是将页面中的所有元素包在一起的部分&#xff0c;这部分还可以命名为: “wrapper“, “wrap“, “page“.2. Header“header” 是网站页面的头部区域&#xff0c;一般来讲&#xff0c;它包含…

27个机器学习图表翻译_使用机器学习的信息图表信息组织

27个机器学习图表翻译Infographics are crucial for presenting information in a more digestible fashion to the audience. With their usage being expanding to many (if not all) professions like journalism, science, and research, advertisements, business, the re…