ipv4 - 为什么在 IPV4 数据包中,校验和是根据 IP header 计算的,而不是像传输协议(protocol) tcp/udp 这样的整个数据包?

标签 ipv4

为什么在 IPV4 数据包中,校验和是根据 IP header 计算的,而不是像传输协议(protocol) tcp/udp 这样的数据?

最佳答案

这有两个很好的理由。

一、将数据封装在 IPv4 中的所有高级协议(protocol)
数据报有一个覆盖整个数据包的校验和字段。因此,校验和
对于 IPv4 数据报不必检查封装的数据。

二、 IPv4 数据包的 header 随每个访问的路由器而变化,但数据不会。所以校验和
仅包括已更改的部分。如果包含数据,每个路由器必须重新计算整个数据包的校验和,这意味着处理时间的增加。

资料来源:Behrouz A. Forouzan 的数据通信和网络

关于ipv4 - 为什么在 IPV4 数据包中,校验和是根据 IP header 计算的,而不是像传输协议(protocol) tcp/udp 这样的整个数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9205169/

相关文章:

PHP 将 IPv6 转换为二进制(/内存)表示形式

docker - 绑定(bind)到单个 docker 容器中的多个 ip 地址

sql - 给定子网范围和 IP 列表,选择 IP 所在的所有行

mysql - 如何防止从触发器或存储过程保存到数据库?

mysql - 在 RDBMS (MySQL) 中存储 IPv4 和 IPv6

postgresql - 由于 IPV6 需要 128 位(16 字节)那么为什么在 postgres CIDR 数据类型中存储为 24 字节(8.1)和 19 字节(9.1)?

c - 套接字 sendto() 返回 EINVAL

python - IPv6 地址 Python

mysql - 将 IPv4 和 IPv6 地址存储在单个列中

java - 从起始 ip 和广播 ip 确定子网/cidr