【问题标题】:how does the tcp packet “size” reported by tcpdump correlate to the actual IP packet sent?tcpdump 报告的 tcp 数据包“大小”与发送的实际 IP 数据包有何关联?
【发布时间】:2011-12-07 02:37:30
【问题描述】:

当我运行 tcpdump 时——在最低和最高序列号之后的 () 之间报告的数字究竟是什么意思?

  1. 如果它与发送的IP数据包相关,它怎么可能大于 1500的mtu?
  2. 始终在此流的接收端 tcpdump 看到 1448 或更小的数据包——这些数据包在哪里 碎片整理和重组?我可以用 tcpdump 看到吗?
  3. 这个数字和tcp socket的大小有关系吗 缓冲?

即:发送方的典型 tcpdump:

11:47:18.278352 IP 1.1.1.36.41034 > 1.1.1.37.60960: . 3263771:3272459(8688) ack 1 赢 54 11:47:18.278371 IP 1.1.1.36.41034 > 1.1.1.37.60960:. 3272459:3282595(10136) 确认 1 赢 54 11:47:18.278620 IP 1.1.1.36.41034 > 1.1.1.37.60960:. 3282595:3298523(15928) ack 1 赢 54 11:47:18.278727 IP 1.1.1.36.41034 > 1.1.1.37.60960:. 3298523:3301419(2896) ack 1 赢 54 11:47:18.278731 IP 1.1.1.36.41034 > 1.1.1.37.60960: P 3301419:3301719(300) ack 1 赢 54 11:47:18.777160 IP 1.1.1.36.41034 > 1.1.1.37.60960: P 3301719:3301723(4) ack 1 win 54 11:47:18.777175 IP 1.1.1.36.41034 > 1.1.1.37.60960:. 3301723:3303171(1448) ack 1 赢 54

接收者:

11:47:18.277895 IP 1.1.1.36.41034 > 1.1.1.37.60960: P 990413:990417(4) ack 1 win 54 11:47:18.277948 IP 1.1.1.36.41034 > 1.1.1.37.60960:. 990417:991865(1448) ack 1 赢 54 11:47:18.277953 IP 1.1.1.36.41034 > 1.1.1.37.60960:. 991865:993313(1448) ack 1 赢 54 11:47:18.277958 IP 1.1.1.36.41034 > 1.1.1.37.60960:. 993313:994761(1448) ack 1 赢 54 11:47:18.278028 IP 1.1.1.36.41034 > 1.1.1.37.60960:. 994761:996209(1448) ack 1 赢 54

【问题讨论】:

    标签: linux sockets ip tcpdump mtu


    【解决方案1】:

    这是数据的长度,你可以看到如果你减去两个序列号(在为 SYN 和 FIN 标志计算 +1 后,如果它们存在于数据包中)。

    至于为什么它大于 MTU,要么您的网卡可以发送巨型帧(在 1Gbps 卡上很正常),要么您的网卡可以接受大段并在硬件上划分它们(称为 LSO/GSO 或一些类似的首字母缩写词我似乎不记得了)。

    编辑:Large Segment Offload on Wikipedia

    【讨论】:

    • 所以这样说是否正确:1.它是从内核(或 ring_buffer)到 NIC 的 DMA 字节数和 2.它与套接字缓冲区的大小无关
    • 1.它是数据部分的大小,还有 TCP/IP/以太网标头。 2. 一个 skbuff 在传递给设备之前包含所有内容。
    猜你喜欢
    • 2013-12-04
    • 2017-03-17
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    相关资源
    最近更新 更多