【问题标题】:What is the minimum packet size for TCP over IPv4 [duplicate]IPv4上TCP的最小数据包大小是多少[重复]
【发布时间】:2013-01-09 16:08:37
【问题描述】:

TCP over IPv4 的最小数据包大小是多少?

大家好,我很纠结这个问题。

假设我要传输 12KB 的数据

并通过 IPv4 TCP

我做了以下计算

 20 Bytes for TCP Headers
 4 Bytes for Source Address
 4 Bytes for Destination Address
 4 Bytes on Zeros, Protocol and TCP Length
 2 Bytes on Checksum
 12 Bytes on Data

但我尝试用我的朋友检查结果,我们得到不同的结果..

我在 TCP 上使用维基百科上的示例,我只是假设

TCP 头是 20Bytes 和上面的计算(我使用所有粉红色的 TCP Pseudo Header)。

我在计算中做错了什么。因为我的 2 个朋友的回答比我多 6 个字节

我的 TCP 标头是 20 字节 IPV4 为 14 字节 数据为 12 字节

我们之间唯一的区别是我的普通 IPv4 是 20 字节。我在计算 ipv4 时做错了哪个字段?

谢谢

【问题讨论】:

  • 你的好友算什么?
  • @Caesar 他得到 20 个 tcp 标头(相同),12 个数据(相同)和 20 个 ipv4,而我只有 14 个字节用于 ipv4
  • IPv4 帧有 20 个字节:IPv4 frame

标签: c++ tcp ip packet


【解决方案1】:

最小 TCP 标头大小为 20 字节,最小 IPv4 标头大小为 20 字节。因此,假设您实际上可以通过 TCP 发送 0 字节,那么包含 0 字节数据的 TCP/IPv4 数据包将至少为 40 字节,而您不能。因此,最小值为 41 个字节。

【讨论】:

  • 能告诉我20字节的最小IPv4标头包含哪些标头吗?
  • 当然可以发送空段。您一直都在这样做,例如在初始 SYN 中或在没有数据要发送时进行 ACK 时。
【解决方案2】:

在 Google 上快速搜索会得到这个diagram of the TCP header

您似乎缺少以下字段。

  • 2 字节拥塞窗口
  • 4 字节序列
  • 2 字节紧急指针

不确定您将哪个归类为“协议”等,但缺少的主要内容看起来像序列号。 TCP 标头的最小长度应为 20 字节。

【讨论】:

    猜你喜欢
    • 2013-01-03
    • 2020-05-25
    • 2011-03-29
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 2010-09-28
    相关资源
    最近更新 更多