【问题标题】:Using HTTP to request an html file, why TCP sequence number not continuous?使用HTTP请求html文件,为什么TCP序列号不连续?
【发布时间】:2020-09-30 18:00:45
【问题描述】:

当我访问 HTTP html 时,我使用了 wireshark 来嗅探 TCP 数据包。前四个 TCP 数据包简要描述如下。我想知道为什么在第四个数据包中,序列号是1而不是2?我想现在第三个包的序号是1,第四个应该是2。

Src to Dst: 192.168.1.104   128.119.245.12  TCP     Port: 52721 → 80 [SYN] Seq=0 
Src to Dst: 128.119.245.12  192.168.1.104   TCP     Port: 80 → 52721 [SYN, ACK] Seq=0 Ack=1 
Src to Dst: 192.168.1.104   128.119.245.12  TCP     Port: 52721 → 80 [ACK] Seq=1 Ack=1 
Src to Dst: 192.168.1.104   128.119.245.12  HTTP    Port: 52721 GET /wireshark-labs/TCP-wireshark-file1.html HTTP/1.1    Seq=1 Ack=1 

【问题讨论】:

    标签: http networking tcp


    【解决方案1】:

    序列号不计算数据包;它们计算字节数,加上 SYN 和 FIN 标志,每个序列号空间占用一个“滴答”,即使它们没有出现在数据中。

    1. .104 发送 SYN 标志,序号为 0。
    2. .12 确认 SYN,并发送自己的 SYN,序列号也为 0。
    3. .104 确认来自 .12 的 SYN。它不发送任何数据,因此它的序列号保持为 1。
    4. .104 开始发送数据,从序列号 1 开始。

    实际上,序列号有一个随机偏移量,使它们更难预测,但 Wireshark 在显示数据包之前会减去这个偏移量..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-02
      • 2011-07-24
      • 1970-01-01
      • 2011-10-07
      • 2012-10-16
      • 2016-02-02
      • 2018-01-28
      相关资源
      最近更新 更多