TCPIP: UDP / TCP контрольной суммы

UDP / TCP контрольной суммы

1Content Таблица

Интернет контрольная сумма

1 в дополнение сумма

UDP / TCP контрольной суммы

 

2Internet контрольная сумма

(1) Соседние октеты быть спарены контрольная сумма для формирования 16-бит

целые числа, и 1 дополнение суммы этих 16-битовых целых чисел формируется.

(2) Для того, чтобы сгенерировать контрольную сумму, поле контрольной суммы сам по себе очищается,

16-битное дополнение сумма 1 вычислена над октетами заинтересованных и дополнение 1 в этой сумме помещаются в поле контрольной суммы.

(3) Для проверки контрольной суммы, 1 дополнение суммы вычисляется по одной и той же совокупности октетов, включая поле контрольной суммы. Если результат все 1 бит (= 0 в 1 с дополнением арифметика), проверка успешна.



31 в дополнение сумма

Контрольная сумма блока данных является дополнением к своему дополнению 16-битовой суммы блока. Если контрольная сумма включается в блок данных, новый блок данных будет иметь свою контрольную сумму ноль. Это как контрольная сумма используется для обнаружения ошибок в передачах дейтаграмм.

В качестве примера рассмотрим блок данных:

0x23fb

+ 0x34c0

+ 0xa090

+ 0xbcaf

+ 0xfc05

-----------

0x2b1ff

Для того, чтобы вычислить 16-бит 1 в дополнении суммы, избыточную цифру 2 должны быть добавлены обратно значащих 16 бит:

0xb1ff

+ 0x2

-----------

0xb201

Дополнение это 0x4dfe. Это контрольная сумма блока данных.

Обратите внимание, что: контрольная сумма (контрольная сумма + данные) = 0

Таким образом, если мы передать блок данных, включая поле контрольной суммы, приемник должен видеть контрольную сумму 0, если нет битовых ошибок.



4UDP / TCP контрольной суммы

 

Although the basics for calculating the UDP checksum are similar to the general Internet checksum (the one’s complement of the one’s complement sum of 16-bit words), there are two small special details.

First, the length of the UDP datagram can be an odd number of bytes, whereas the checksum algorithm adds 16-bit words (always an even number of bytes). The procedure for UDP is to append a (virtual) pad byte of 0 to the end of odd-length datagrams, just for the checksum computation and verification.

The second detail is that UDP (as well as TCP) computes its checksum over a 12-byte pseudo-header derived from fields in the IPv4 header or a 40-byte pseudo-header derived from fields in the IPv6 header. This pseudo-header is also virtual and is used only for purposes of the checksum computation (at both the sender and the receiver). Its purpose is to let the UDP layer verify that the data has arrived at the correct destination (i.e., that IP has not accepted a misaddressed datagram, and that IP has not given UDP a datagram that is for another transport protocol).


The TCP Checksum field covers the TCP header and data and some fields in the IP header, using a pseudo-header computation similar to the one used with UDP. It is mandatory for this field to be calculated and stored by the sender, and then verified by the receiver.



5Reference

  1. https://tools.ietf.org/html/rfc1071

  2. http://www.cs.newpaltz.edu/~easwaran/CCN/Week5/Checksum.pdf

  3. Vol 1. TCP/IP Illustrated

 

рекомендация

отwww.cnblogs.com/wordchao/p/11127637.html