Как вы пишете свой собственный протокол IP? (Предполагая, что TCP и UDP не подходят) - PullRequest
7 голосов
/ 30 мая 2011

Предполагая, что вы определили, что для данного нишевого случая ни TCP, ни UDP не являются идеальными, как бы вы решили написать свой собственный протокол на основе IP?

Например, если вы разрабатываете для Linuxгде бы вы заглянули в ядро, чтобы «зацепить» ваш протокол?

С чего бы вы начали?

Ответы [ 3 ]

9 голосов
/ 30 мая 2011

Вы можете сделать это через модуль ядра. Я хотел бы начать с чтения, например, как работает ARP. Это более простой протокол, поскольку пользовательское пространство не отправляет пакеты напрямую.

Точкой входа для создания нового сетевого протокола является dev_add_pack, а код для arp можно найти здесь .

4 голосов
/ 30 мая 2011

Если ваш протокол может быть реализован непосредственно поверх IP, то он также может быть реализован в виде пакетов UDP, и последний имеет преимущество в том, что он будет проходить через существующие устройства NAT и межсетевые экраны, которые просто отбросят ваш пользовательский протокол..

1 голос
/ 30 мая 2011

Читайте о сокетах UNIX и работе в сети. Это не столько «зацепка» с ядром, сколько открытие сокета и отправка по нему ваших двоичных данных.

...