slinkinone
@slinkinone
Агент "Везде успеть"

Какой самый сложный сетевой протокол?

Поясню что я понимаю под сложностью:
1. Наличие в протоколе полей, влияющих на порядок байт при вычитывании
2. Разные форматы интерпретации данных - например ASCII, UTF-*, etc.
3. TLV блоки, которые содержат саб-блоки, а те ещё саб-блоки, итд;
4. Наличие массивов - например структура:
slotArraySize (4 bytes), (slot0 [1 byte], slot1 [1 byte], slot2 [1 byte])
0x03, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09
->
slotArray = [ {0x00, 0x01, 0x02}, { 0x03, 0x04, 0x05}, {0x07, 0x08, 0x09}];

5. Один и тот же блок может диссектиться по разному исходя из версии блока; (например PN-IO протокол, PDIRData имеет разную структуру зависимую от версии блока).
6. Диссектор протокола зависит от нижележащих протоколов. Например PN-IO - диссектор может опираться на UDP порты чтобы определить тип payload-а, или на поле Data Representation Format Label (RPC).
7. Наличие полей не кратных двум. Например MRP протокол - OUI (organizational unique id) имеет размер 3 байта.

Протокол может быть как открытый и широкораспространённый (HTTP, SCTP, etc.), так и индустриальный (Bacnet, Modbus, Profinet protocol stack).

Возможно я не назвал другие критерии сложности - буду рад узнать.
  • Вопрос задан
  • 520 просмотров
Пригласить эксперта
Ответы на вопрос 4
leahch
@leahch
Я мастер на все руки, я козлик Элек Мэк :-)
Ну, буду неоригинален. Но по моему, самый сложный из виденных и эксплуатируемых вживую лично мной - infiniband! Тут и виртуальные сети, и распределенная инфраструктура, и куча эмуляций поверх, начиная от ethernet и заканчивая rdma. Хотя последний вроде бы есть в новых стандартах ethernet .
Ответ написан
saboteur_kiev
@saboteur_kiev
software engineer
Поясню что я понимаю под сложностью:
1. Наличие в протоколе полей, влияющих на порядок байт при вычитывании

Это относится в основном к протоколам транспортного уровня, а они обязаны быть простыми и универсальными, чтобы не нести лишнюю нагрузку. Протоколы более верхнего уровня, которые могут иметь множество дополнительных фич, обычно работают поверх простых, и наличие полей влияющих на порядок байта относится IMHO не к сложности протокола а к его положению в OSI

2. Разные форматы интерпретации данных - например ASCII, UTF-*, etc.
Это относится только к конкретным текстовым протоколам обычно прикладного уровня, типа HTTP, telnet. Потому что протоколы пониже работают просто с набором байт, чаще блоками.

7. Наличие полей не кратных двум. Например MRP протокол - OUI (organizational unique id) имеет размер 3 байта.
Вообще не относится к сложности. При работе с блоками или заголовками, поля могут быть какими угодно.

Да просто берете не узкоспециализированный а общий протокол, типа TCP и попробуйте разобраться со ВСЕМИ его фичами. Просто утонете.
Ответ написан
@mayton2019
Ent. Software engineer. Oracle. SQL. BigData.
Совершенству нет предела. И если рассматривать интеграцию с вычислительной машиной "Сетунь", которая работает не в двоичной а в троичной системе счисления то я думаю это был-бы настоящий ад, и челлендж для того кто захотел с ней интегрироваться из современных систем.

Не знаю, существуют ли эта машинка сегодня, но я надеюсь что подкинул пищи для размышлений.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы