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--+