CPP_GEEK Telegram 360
Давай программировать стек TCP/IP. Part 2: IPv4 & ICMPv4

На этот раз в нашем TCP/IP стеке в пространстве пользователя мы реализуем минимально жизнеспособный IP-уровень и протестируем его с помощью ICMP-запросов эхо (известных также как ping).

Мы рассмотрим форматы IPv4 и ICMPv4 и опишем, как проверять их целостность. Некоторые функции, такие как фрагментация IP, оставлены в качестве упражнения для читателя.

Для нашего сетевого стека был выбран IPv4 вместо IPv6, так как он до сих пор является основным сетевым протоколом Интернета. Однако это быстро меняется, и наш стек можно будет расширить поддержкой IPv6 в будущем.

Internet Checksum
Поле интернет-контрольной суммы используется для проверки целостности IP-дейтаграммы. Вычисление контрольной суммы относительно простое и определено в оригинальной спецификации:

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

Фактический код для алгоритма выглядит следующим образом:


uint16_t checksum(void *addr, int count)
{
/* Compute Internet Checksum for "count" bytes
* beginning at location "addr".
* Taken from https://tools.ietf.org/html/rfc1071
*/

register uint32_t sum = 0;
uint16_t * ptr = addr;

while( count > 1 ) {
/* This is the inner loop */
sum += * ptr++;
count -= 2;
}

/* Add left-over byte, if any */
if( count > 0 )
sum += * (uint8_t *) ptr;

/* Fold 32-bit sum to 16 bits */
while (sum>>16)
sum = (sum & 0xffff) + (sum >> 16);

return ~sum;
}


https://www.saminiir.com/lets-code-tcp-ip-stack-2-ipv4-icmpv4/

➡️ @cpp_geek
👍2🔥1



tgoop.com/cpp_geek/360
Create:
Last Update:

Давай программировать стек TCP/IP. Part 2: IPv4 & ICMPv4

На этот раз в нашем TCP/IP стеке в пространстве пользователя мы реализуем минимально жизнеспособный IP-уровень и протестируем его с помощью ICMP-запросов эхо (известных также как ping).

Мы рассмотрим форматы IPv4 и ICMPv4 и опишем, как проверять их целостность. Некоторые функции, такие как фрагментация IP, оставлены в качестве упражнения для читателя.

Для нашего сетевого стека был выбран IPv4 вместо IPv6, так как он до сих пор является основным сетевым протоколом Интернета. Однако это быстро меняется, и наш стек можно будет расширить поддержкой IPv6 в будущем.

Internet Checksum
Поле интернет-контрольной суммы используется для проверки целостности IP-дейтаграммы. Вычисление контрольной суммы относительно простое и определено в оригинальной спецификации:

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

Фактический код для алгоритма выглядит следующим образом:


uint16_t checksum(void *addr, int count)
{
/* Compute Internet Checksum for "count" bytes
* beginning at location "addr".
* Taken from https://tools.ietf.org/html/rfc1071
*/

register uint32_t sum = 0;
uint16_t * ptr = addr;

while( count > 1 ) {
/* This is the inner loop */
sum += * ptr++;
count -= 2;
}

/* Add left-over byte, if any */
if( count > 0 )
sum += * (uint8_t *) ptr;

/* Fold 32-bit sum to 16 bits */
while (sum>>16)
sum = (sum & 0xffff) + (sum >> 16);

return ~sum;
}


https://www.saminiir.com/lets-code-tcp-ip-stack-2-ipv4-icmpv4/

➡️ @cpp_geek

BY C++ geek


Share with your friend now:
tgoop.com/cpp_geek/360

View MORE
Open in Telegram


Telegram News

Date: |

The SUCK Channel on Telegram, with a message saying some content has been removed by the police. Photo: Telegram screenshot. As the broader market downturn continues, yelling online has become the crypto trader’s latest coping mechanism after the rise of Goblintown Ethereum NFTs at the end of May and beginning of June, where holders made incoherent groaning sounds and role-played as urine-loving goblin creatures in late-night Twitter Spaces. Telegram channels fall into two types: You can invite up to 200 people from your contacts to join your channel as the next step. Select the users you want to add and click “Invite.” You can skip this step altogether. ZDNET RECOMMENDS
from us


Telegram C++ geek
FROM American