【问题标题】:IP Checksum with insufficient number of bits位数不足的 IP 校验和
【发布时间】:2012-11-03 22:20:09
【问题描述】:

我必须计算和验证 IP 数据包的校验和(我正在用 C 语言编写路由器)。表示 IP 标头的结构具有 16 位校验和,但结构中的总位数不能被 16 整除——它短 8 位。

我的问题是这样的。我是否一次读取 struct 16 位并用零填充最后一组位以计算校验和?

【问题讨论】:

    标签: ip checksum


    【解决方案1】:

    如果您的位数有误,您将在数据的 end 处填充零位。

    然而,IP 是通过标头字段计算的,因此总是有一个 16 位的倍数来计算校验和。 TCP 有时在数据末尾需要一个额外的零字节。

    http://en.wikipedia.org/wiki/IPv4_header_checksum

    【讨论】:

      猜你喜欢
      • 2015-12-21
      • 1970-01-01
      • 2012-09-03
      • 1970-01-01
      • 2015-06-29
      • 2014-03-09
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      相关资源
      最近更新 更多