LINUX.ORG.RU

Ответ на: комментарий от Harald

Wireshark показывает контрольную сумму 0x41, тогда получается, что длина сообщения «123» равна 17. Мне кажется, или что-то не так?

batekman ★★★
() автор топика
Ответ на: комментарий от batekman

Checksum is the 16-bit one's complement of the one's complement sum of a pseudo header of information from the IP header, the UDP header, and the data, padded with zero octets at the end (if necessary) to make a multiple of two octets.

If the computed checksum is zero, it is transmitted as all ones (the equivalent in one's complement arithmetic). An all zero transmitted checksum value means that the transmitter generated no checksum (for debugging or for higher level protocols that don't care).

mv ★★★★★
()
Ответ на: комментарий от batekman

Минимальный размер payload IP пакета - 46 байт (см. стандарт IEEE 802.3 пункт 3.1.1). 20 байт IP-header, 8 байт UDP-header, остаётся 18 байт. Соответственно, в UDP пакете данных будет минимум 18 байт, сколько бы реально данных там ни было, хоть 1 байт.

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 1)

Да и вообще, UDP checksum штука опциональная. Делай её равной нулю и всё будет работать. CRC32 в конце ethernet пакета более чем достаточно для контроля целостности данных.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

CRC32 в конце ethernet пакета более чем достаточно для контроля целостности данных.

Ну, «более чем» это громко сказано. Для jumbo frames, например, стандарных механизм считается неэффективным (http://en.wikipedia.org/wiki/Jumbo_frame#Error_detection). Я несколько раз сталкивался с битыми пакетами которые прошли контрольную сумму.

true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.