跳到主要内容

3. 错误检查

3a. 所有在网络上发送的报文最初都会进行错误检查, 以帮助隔离软件和硬件缺陷。​

3b. 每条报文都将关联一个校验和, 它是顺序相关的。​

3b1. 以下是可以使用的一种算法:​

3b1a. 长度 1 的校验和可以通过将待检查字符串中的相继字段串行相加, 并将进位位加到和的最低位位置来形成。​

              +--------------+
| |
+---FIELD 1----+

ADD +--------------+
| |
+----FIELD 2---+

+-+--------------+
| | |
+-+--------------+
\
\ +--+
ADD CARRY---> | |
+--+

+--------------+
| |
+----RESULT----+
3b1a1. 这一过程称为折叠。​
3b1a2. 如果若干字段在相加后被适当地折叠, 则它们可以并行相加并折叠。​
              +---------+---------+---------+---------+
              | FIELD 4 | FIELD 3 | FIELD 2 | FIELD 1 |
              +---------+---------+---------+---------+

              +---------+---------+---------+---------+
              | FIELD 8 | FIELD 7 | FIELD 6 | FIELD 5 |
              +---------+---------+---------+---------+
            ADD
            +-+---------+---------+---------+---------+
            | |         |         |         |         |
            +-+---------+---------+---------+---------+
             |      |        |         |         |
             |      |        |         |         v
             |      |        |         |    +---------+
             |      |        |         |    |         |
             |      |        |         |    +---------+
             |      |        |         |
             |      |        |         \    +---------+
             |      |        |          `-> |         |
             |      |        |              +---------+
             |      |        |
             |      |        \              +---------+
             |      |         `-----------> |         |
             |      |                       +---------+
             |      |
             |      \                       +---------+
             |       `--------------------->|         |
             |                              +---------+
             |
             \                                    +---+
              `-----CARRY------------------------>|   |
                                                  +---+
                                  ADD
                                  +---------+---------+
                                  |         |         |
                                  +--CARRY--+---------+
                                       |
                                       \        +-----+
                                    ADD `-----> |     |
                                                +-----+

                                            +---------+
                                            |         |
                                            +-RESULT--+
3b1a2a. 使用这种方案, 假定如果有 n 个字段, 则来自前 n-1 个字段的进位会自动加到下一个更高字段的低位位置, 因此在折叠时, 只需将 [n] 个结果字段加到来自第 n 个字段的进位, 然后加上该加法产生的适当大小的进位 (并重复所需的次数以获得结果)。​
3b1a3. 以这种方式计算的校验和有一个优点, 即不同机器的字长都可以得到最优利用:​
3b1a3a. 如果选择长度合适的字符串来计算校验和, 并选择适当的校验和字段长度, 则每台机器的校验和技术都将是相对最优的。​
3b1a3a1. 字段长度: 288 位 (24、32、36 的最小公分母)​
3b1a3a2. 校验和长度: 8 位 (对所有机器都方便的字段大小)​

3b1b. 如果将报文分成若干字段组, 并且每组都以这种方式计算校验和, 则可以通过将每组的校验和移位, 并 (依次) 将其加到下一组的校验和上, 得到一个顺序相关的校验和​

3c. 将提供一种设施, 使两个 HOST 可以进入一种要求对所有报文进行肯定验证的模式。该验证通过控制链路发送。​