代码之家  ›  专栏  ›  技术社区  ›  jack-nie

为什么tcpdump的输出与三次握手的定义不同

  •  0
  • jack-nie  · 技术社区  · 8 年前

    我使用tcpdump和telnet在mac操作系统上运行了tcp连接测试。下面是我的命令:

    telnet localhost 3000
    tcpdump -i lo0 port 3000
    

    结果如下:

    16:44:23.751241 IP6 localhost.59405 > localhost.hbci: Flags [S], seq 396289691, win 65535, options [mss 16324,nop,wscale 5,nop,nop,TS val 896927289 ecr 0,sackOK,eol], length 0
    16:44:23.751315 IP6 localhost.hbci > localhost.59405: Flags [S.], seq 588037038, ack 396289692, win 65535, options [mss 16324,nop,wscale 5,nop,nop,TS val 896927289 ecr 896927289,sackOK,eol], length 0
    16:44:23.751331 IP6 localhost.59405 > localhost.hbci: Flags [.], ack 1, win 12743, options [nop,nop,TS val 896927289 ecr 896927289], length 0
    16:44:23.751345 IP6 localhost.hbci > localhost.59405: Flags [.], ack 1, win 12743, options [nop,nop,TS val 896927289 ecr 896927289], length 0
    16:44:53.758011 IP6 localhost.hbci > localhost.59405: Flags [F.], seq 1, ack 1, win 12743, options [nop,nop,TS val 896957275 ecr 896927289], length 0
    16:44:53.758085 IP6 localhost.59405 > localhost.hbci: Flags [.], ack 2, win 12743, options [nop,nop,TS val 896957275 ecr 896957275], length 0
    16:44:53.758101 IP6 localhost.hbci > localhost.59405: Flags [.], ack 1, win 12743, options [nop,nop,TS val 896957275 ecr 896957275], length 0
    16:44:53.758188 IP6 localhost.59405 > localhost.hbci: Flags [F.], seq 1, ack 2, win 12743, options [nop,nop,TS val 896957275 ecr 896957275], length 0
    16:44:53.758260 IP6 localhost.hbci > localhost.59405: Flags [.], ack 2, win 12743, options [nop,nop,TS val 896957275 ecr 896957275], length 0
    

    第三行的ack值是1而不是588037039,为什么?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Prabhu    8 年前

    从…起

    http://linux.die.net/man/8/tcpdump

    ack序列号是一个小整数(1)。第一次 tcpdump看到一个tcp“对话”,它从 数据包。在会话的后续数据包中 当前数据包的序列号和该初始序列之间 打印数字。这意味着第一个 可以解释为对话中的相对字节位置 数据流(每个方向的第一个数据字节为“1”)-S’ 将覆盖此功能,导致原始序列号 输出。