如何获取浏览器上任何网站当前 TCP 连接的 SYN 和 SYN+ACK 值?

如何获取浏览器上任何网站当前 TCP 连接的 SYN 和 SYN+ACK 值?

据我所知

'$sysctl | grep net.ipv4.tcp'

给出系统范围的 TCP 参数值,我需要在 Bash 中为我的大学实践文件创建一个脚本,其中如果我们打开浏览器并输入 URL,例如www.google.com然后需要获取此连接建立的 SYN 时间和 SYN+ACK 时间并与系统范围参数进行比较以做出延迟决定并显示有关 SYN 和 SYN+ACK 的消息?

答案1

tcpdump 将允许您查看 SYN 和 SYN/ACK 之间的时间差,这将为您提供初始 RTT(假设您从客户端捕获)。

例如,tcpdump -nS -s0 host www.google.com -ttt显示您正在寻找的信息。

如果您只想自动提取初始往返时间,一种简单的方法(但不是无误的)是将 tcpdump 输出重定向到文件,并使用 grep 和 awk 仅提取 SYN/ACK 数据包的增量时间。例如:

  1. tcpdump -nS -s0 host www.google.com -ttt > /tmp/handshake.txt
  2. cat /tmp/handshake.txt | egrep '\[S\.\]' | awk 'BEGIN { FS = " " } ; { print $1 }'

可以将上述命令添加到简单的 bash 脚本中以满足您的要求。

我不确定您说的与“系统范围参数”进行比较是什么意思。没有 sysctl 值可以控制往返时间,它因您正在讨论的服务器而异。

相关内容