Re[4]: Разумность 16 байтных IP-адресов - ведь глупость сделали
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 12.11.24 09:26
Оценка: 2 (1)
Здравствуйте, vsb, Вы писали:

vsb>Я не обосную, я в этом разбираюсь плохо. Но я уверен, что протокол проектировали люди, которые потратили куда больше времени на обдумывание вариантов


В том и проблема, что нет, ничего они не обдумывали.
В 1994(!) в рассылках SIPP и потом IPng шло обсуждение двух схем, на 8 и на 16 байт, причём 16-байтная была такая, что 64 — globally unique(!!!) и 64 — locally unique, а зачем одновременно два адреса — никто не думал.
Потом проскочила одна реплика "любая схема с фиксированной длиной лучше схемы с переменной".
Потом мистически (потому что не было видно обсуждения, может, оно прошло вживую) остался только один вариант, 16 байт.
И уже потом переназначили на то, что младшие 8 байт добавляются к старшим.

Архив SIPP есть, архива IPng я быстро не нашёл, там основное — район сентября 1994. Увы, не сохранил, а надо было бы сделать локальную копию. Найдёте — скажите URL.

vsb> и я им доверяю.


Вот это и есть полная глупость тут. Не было там никакого разумного рассмотрения размерности адреса.

vsb>А так — если в IPv4 внимательно вглядеться, там тоже много ненужных полей.

vsb>Version: 4 bits, For IPv4, this is always equal to 4.

Давайте по порядку.
Здесь они предполагали сети, в которых не было разделения через ethernet frame type на v4 и v6 (и на другие типы), потому что была ещё завязка на поддержку IEEE 802.3 (который передаёт длину, а не тип). Позже все транспорты IEEE 802.3 были тупо отвергнуты, остался Ethernet II, который передаёт именно тип кадра.
Да, это легаси, но которое не могли быстро отвергнуть. Точно так же как до 2020 не хотели оставить единственность 2ʼs complement для C++.

vsb>Differentiated Services Code Point (DSCP): 6 bits


Оно сейчас активно используется, вы не в курсе.

vsb>Explicit Congestion Notification (ECN): 2 bits


Вы с TCP перепутали. И там оно используется.

vsb>Total Length: 16 bits (реально хватило бы 12 битов, если мы говорим про публичный интернет)


Иногда таки бывают пакеты побольше. В IPv6 поле убрано.

vsb>Identification: 16 bits

vsb>Fragment Offset: 13 bits

В IPv6 исправили, вынесли в fragment header.

vsb>Protocol: 8 bits (реально используется 3-4 протокола, 2 битов бы хватило)


UDP, TCP, SCTP, ICMPv4, ICMPv6, IPIP (два), GRE, ESP, AH, L2TP. Это те, что постоянно используются. Это уже 11 штук. С запасом на расширение и эксперименты как раз 1 байт и получится. Заметьте, UDP — самый простой сейчас — номер 17. Потому что простота не возникает сразу, нужен опыт.

vsb>Header Checksum: 16 bits (в низлежащих протоколах контрольная сумма есть, это не нужно)


В IPv6 устранили, да.

Зато там заполнили оставшееся место flow label на 20 бит, которая реально используется около нуля.

vsb>Всё это — мусор, нужный только в крайне редких случаях. Ничего, живём как-то. Если так жалко 16 байтов, лучше пожаловаться на то, что дефлтный 1.5 КБ пакет стоило бы увеличить раз в 10, тогда уже будет не 1-2%, а 0.1-0.2%.


Это тоже имеет смысл, да. Особенно на нынешних скоростях.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.