c++ - TCP over IPv4 的最小数据包大小是多少

标签 c++ tcp ip packet

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

大家好,我对这个问题很困惑。

假设我想传输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

但是我尝试用我的 friend 检查结果,我们得到了不同的结果..

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

TCP header 为 20 字节 和上面的计算(我使用所有粉红色的 TCP 伪 header )。

我的计算做错了什么?因为我的 2 个 friend 的答案比我多 6 个字节

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

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

谢谢

最佳答案

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

关于c++ - TCP over IPv4 的最小数据包大小是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14526139/

相关文章:

c++ - 无法连接到远程ip

java - 我的服务器看到我的路由器的 IP 而不是客户端的

c++ - 如何初始化 std::array<T, 2> 其中 T 不可复制且不可默认构造?

c++ - for 循环异常 C++

c++ - 数据不变时避免重新计算

firefox - 如何在浏览器中访问一个IP地址的子域?

python - inet_aton 类似 IPv6 的功能

c++ - 将字符串输入到 int 会在 c/c++ 中产生错误的输出

c++ - 如何检查 TCP 端口是否已被监听?

windows - Windows 应用程序上的不规则套接字错误 (10054)