tcp timestamp

Description

Protocol suite: TCP/IP.

Protocol type: Transport layer protocol.

Option length: 10 bytes.

The TCP Timestamp option obsoletes the TCP Echo request and Echo reply options.

RFC 1323:

The timestamps are used for two distinct mechanisms: RTTM (Round Trip Time Measurement) and PAWS (Protected Against Wrapped Squences).

结构图

Kind. 8 bits. Set to 8.

Length. 8 bits. Set to 10.

Timestamp Value (TSval). 32 bits.

This field contains the current value of the timestamp clock of the TCP sending the option.

TImestamp Echo Reply (TSecr). 32 bits.

This field only valid if the ACK bit is set in the TCP header. If it is valid, it echos a timestamp value that was sent by the remote TCP in the TSval field of a Timestamps option. When TSecr is not valid, its value must be zero. The TSecr value will generally be from the most recent Timestamp option that was received; however, there are exceptions that are explained below. A TCP may send the Timestamp option in an initial SYN segment(i.e., segment containing a SYN bit and no ACK bit), and may send a TSopt in other segments only if it received a TSopt in the initial SYN segment for the connection.

Linux内核中的使用

如果支持Timestamp选项,那么可以用此选项来计算RTT。

static void tcp_ack_saw_tstamp(struct sock *sk , int flag)

{

/* RTTM Rule: A TSecr value received in a segment is used to

* update the averaged RTT measurement only if the segment

* acknowledges some new data, i.e., only if it advances the

* left edge of the send window.

*

* Changed: reset backoff as soon as we see the first valid

* sample. If we do not, we get strongly overestimated rto.

* With timestamps samples are accepted even from very

* old segments: f.e., when rtt=1 increases to 8, we retransmit

* 5 times and after 8 seconds delayed answer arrives rto

* becomes 120 seconds!

*/

struct tcp_sock *tp = tcp_sk(sk);

tcp_valid_rtt_meas(sk, tcp_time_stamp - tp->rx_opt.rcv_tsecr);

}

rtt即等于现在的时间tcp_time_stamp减去Timestamp Echo Reply,即tp->rx_opt.rcv_tsecr。

TCP timestamp option的作用:

1)allow more accurate round-trip time measurements for deriving the retransmission timeout estimator.

2)protect against old segments from the previous incarnations of the TCP connection.

3)allow detection of unnecessary retransmissions.

tcp_tw_recycle/tcp_timestamps都开启的条件下,60s内同一源ip主机的socket connect请求中的timestamp必须是递增的。

原文

http://blog.csdn.net/zhangskd/article/details/7195795

tcp_tw_recycle和tcp_timestamps导致connect失败问题

http://blog.sina.com.cn/s/blog_781b0c850100znjd.html

时间: 2024-10-14 02:29:03

tcp timestamp的相关文章

TCP/IP协议栈中的TimeStamp选项

原文转自:http://www.cnblogs.com/lovemyspring/articles/4271716.html TCP应该是以太网协议族中被应用最为广泛的协议之一,这里就聊一聊TCP协议中的TimeStamp选项.这个选项是由RFC 1323引入的,该C建议提交于1992年,到今天已经足足有20个年头.不过相信大部分程序猿对这个建议还是相当陌生.要理解为啥需要用TimeStamp选项,还需要从TCP协议的几个基本设计说起. TCP协议的几个设计初衷,以及引发的问题:1. 协议规定收

TCP连接建立系列 — 客户端的端口选取和重用

主要内容:connect()时的端口选取和端口重用. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 端口选取 connect()时本地端口是如何选取的呢? 如果用户已经绑定了端口,就使用绑定的端口. 如果用户没有绑定端口,则让系统自动选取,策略如下: 1. 获取端口的取值区间,以及区间内端口的个数. 2. 根据初始偏移量,从端口区间内的某个端口开始,遍历整个区间. 2.1 如果端口是保留的,直接跳过. 2.2 如果端口已经被使用了. 2.2.1 不

Linux TCP 系统参数

性能调优仅在于需要的时候进行调整,调整以后需要采集数据与基准测试数据进行比较. 不需要盲从地调整这些参数. 1.TCP keepalive TCP连接保鲜设置 echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time echo 15 > /proc/sys/net/ipv4/tcp_keepalive_intvl echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes keepalive是TCP保鲜定时器

tcp_tw_recycle和tcp_timestamps的文章汇总

临近年关,人会变得浮躁,期间写的代码可谓乱七八糟.不过出来混始终是要还的,这不最近就发现一个PHP脚本时常连不上服务器. 遇到这类问题,我习惯于先用strace命令跟踪了一下看看: shell> strace php /path/to/file EADDRNOTAVAIL (Cannot assign requested address) 从字面结果看似乎是网络资源相关问题.这里顺便介绍一点小技巧:在调试的时候一般是从后往前看strace命令的结果,这样更容易找到有价值的信息. 查看一下当前的网

Python 中 socket 和 socketserver模块

Client/Server Architecture (CS架构) 说socket之前先说一点cs架构的问题.什么是CS架构? 不同的人对于这个问题有不同的回答以及你说的是硬件还是软件,但是无论哪一种情况都离不开一个前提假设:服务端是为一台或多台客服端提提供服务的硬件和软件的结合体.它存在的仅有的目的就是等待客服端的请求,对客服端提供反应,之后等待更多的请求. 客服端(client)为特殊的请求链接服务器,发送必要的数据,等待服务器回复,要么完成请求要么失败.服务端无限制的运行,不断的处理请求:

hping原理、安装、使用详解介绍

[原理基础]  Hping是一个命令行下使用的TCP/IP数据包组装/分析工具,其命令模式很像Unix下的ping命令,但是它不是只能发送ICMP回应请求,它还可以支持TCP.UDP.ICMP和RAW-IP协议,它有一个路由跟踪模式,能够在两个相互包含的通道之间传送文件.Hping常被用于检测网络和主机,其功能非常强大,可在多种操作系统下运行,如Linux,FreeBSD,NetBSD,OpenBSD,Solaris,MacOs X,Windows. Hping的主要功能有: 防火墙测试 实用的

用户能ping通和tracert通网站,但打不开

问题描述: 最近更换升级了服务器后,一直有个问题,就是很多用户能ping通和tracert通我们的网站,但登陆的时候不正常,偶尔刷新能打开,很不正常. 抓包发现,用户过来的IP能到服务器,但服务器没有回复. 感谢黄总的分析!!!! 以下是从网上找的一些解决方法总结. ====================================================================================================================

减少TIME_WAIT连接状态

减少TIME_WAIT连接状态.网络上已经有不少相关的介绍,大多是建议: shell> sysctl net.ipv4.tcp_tw_reuse=1 shell> sysctl net.ipv4.tcp_tw_recycle=1 注:通过sysctl命令修改内核参数,重启后会还原,要想持久化可以参考前面的方法. 这两个选项在降低TIME_WAIT数量方面可以说是立竿见影,不过如果你觉得问题已经完美搞定那就错了,实际上这样可能会引入一个更复杂的网络故障. 关于内核参数的详细介绍,可以参考官方文档

linux系统安全标准规范

首先确保所使用的linux系统中的所有软件都已经安装到最新版本. linux下的漏洞或者叫做不规范大致如下几点: 用户登录,openssl, CA证书,GRUB加密,SMB密码永不过期,无任何所属用户用户组的文件,文件权限为777的,所使用到的软件严重滞后,tcp timstamp, 数据库的open access, ICMP redirection, ip forward, umask值的默认设置,磁盘分区的weakness 1. 使用root用户在终端登录. sed -i '/^tty[0-