По отношению к 128 битным адресам IPv6, 128 битный адрес IPv4r2 имеет четырех- уровневую IPv4 иерархию:
a1.b1.c1.d1/a2.b2.c2.d2/a3.b3.c3.d3/a4.b4.c4.d4
Все основные режимы IPv4r2 адресации (77 бит, 80 бит и 72 бита) отображаются на 128 битный адрес четырех- уровневой иерархии IPv4 адресов по десяти- байтовой схеме 4/2/3/1 так:
a1.b1.c1.d1/c2.d2/b3.c3.d3/d4
специальным образом заполняя эти байты (см. описание основной IPv4r2 адресации далее).
А обобщенное IPv4r2 расширение адресации отображается на 128 битный адрес четырех- уровневой иерархии IPv4 адресов иначе:
биты поля расширения адреса от старшего бита к младшему биту образуют байты;
байты располагаются в 128 битном IPv4r2 адресе по уровням, полностью заполняют один уровень, без пропусков, только потом переходят к следующему уровню;
первыми в поле расширения адреса идут байты старших уровней, старшинство убывает с возрастанием номеров уровня (второй, третий, четвертый);
в пределах одного уровня байты идут от младшего к старшему: dX, cX, bX, aX;
для
асимметричной
адресации 70 это выглядит так
a1.b1.c1.d1/a2.b2.c2.d2/a3.b3.c3.d3/d4
d4[6]
= поле
<младший
байт>[6],
<d2>[8]<c2>[8]<b2>[8]<a2>[8]<d3>[8]<c3>[8]<b3>[8]<a3>[8]
= поле
<адрес>[64]
для
асимметричной
адресации 38
это выглядит так
a1.b1.c1.d1/a2.b2.c2.d2/d3
d3[6]
= поле
<младший
байт>[6],
<d2>[8]<c2>[8]<b2>[8]<a2>[8]
= поле
<адрес>[32]
В асимметричном режиме обобщенном IPv4r2 расширении адресации, поле младший байт адреса (d2 для 6 бит), если не равно нулю, то выравнивается по границе _младшего_ бита, заполняя старшие биты неполно адресуемого младшего байта нулями. Если поле младший байт адреса равно нулю, то оно считается не используемым и не входит в число байт длины адреса (см. ниже сравнение адресов).
Адреса IPv4r2 в основном и обобщенном режимах IPv4r2 адресации принадлежат одному и тому же основному IPv4r2 адресному пространству. Адреса в этом основном IPv4r2 адресном пространстве имеют длину, выражаемую в целых байтах. При сравнении таких адресов равными могут быть только адреса с равной длиной, независимо от того, как совпадают их битовые поля на участках общей длины для адресов разного размера. Это дополнительно увеличивает адресное пространство IPv4r2, которое независимо для IPv4r2 адреса каждой длины.
Адреса IPv4r2 в режиме дополнительной IPv4r2 адресации сети пользователя образуют отдельное от основного IPv4r2 адресное пространство, которое также имеет длину адреса. Сравнение дополнительного IPv4r2 адреса производится по тем же принципам как и основного, после того, как совпал основной адрес.
Адреса в основных режимах IPv4r2 адресации имеют реальную длину 9 или 10 байт, но отображаются на 16 байтовое (128 битное) четырех- уровневое представление, а в режиме обобщенного расширения адресации, адреса непрерывно отображаются до того уровня, до которого адрес заполняется байтами адреса, дополняя старшие байты IPv4 адреса последнего уровня нулями (в примере 0.0.0.d2). Другими словами, гранулярность (минимальное приращение) длины обобщенного адреса равна четырем байтам, независимо от того сколько байт хранится в поле адреса заголовка. При упаковке обобщенного адреса в IPv4r2 заголовок, три старшие байта последнего уровня могут быть отброшены, если равны нулю.
Поэтому чтобы выразить базовые адреса с помощью обобщенной адресации, размер обобщенного адреса должен быть равен 13 байтам (102 бит), а не 9 или 10 байт. Для основной IPv4r2 адресации нет проблемы вычисления и сравнения длины адреса, это всегда адрес 16 байт (128 бит) длиной в виде 9 или 10 реально используемых байт.
Таким образом, обобщенное расширение адресации позволяет обращаться в пределах 128 бит к глобальным адресам, которые недостижимы с помощью основных режимов адресации, но практического смысла в такой адресации нет, поскольку базовая адресация итак уже очень велика.
Этот 77 битный адрес отображается на 128 битный адрес четырехуровневой иерархии IPv4 адресов:
a1.b1.c1.d1/a2.b2.c2.d2/a3.b3.c3.d3/a4.b4.c4.d4
как
a1.b1.c1.d1/c2.d2/b3.c3.d3/d4
Биты поля <расширения адреса>[45] от старшего бита к младшему биту располагаются по группам:
<d4>[3]<b3>[10]<c3.d3>[16]<c2.d2>[16]
Сеть d4 из 8 адресов рассматривается как
2 битная IPv4r2 подсеть с хостами 0-3 (обратная маска /:-2, 0,3 разрешены как адреса хоста)
3 битная IPv4r2 подсеть с хостами 0-7 (обратная маска /:-3, 0,7 разрешены как адреса хоста)
6 битная IPv4r2 подсеть с хостами 0-7 (обратная маска /:-6, 0 разрешен как адрес хоста)
а) корневая IPv4 сеть (первый уровень)
в которой IPv4 адрес a1.b1.c1.d1, 32 бита
выдаются так же, как и сейчас в интернете
эти a1.b1.c1.d1 адреса являются точками входа в деревья IPv4r2 сетей
эти деревья бывают разных типов по своей структуре, например:
a1.b1.c1.1 это региональная IPv4r2 структура (классификация по странам, подобно ru/ua доменным корням)
a1.b1.c1.2 это функциональная IPv4r2 структура (классификация по типу, подобно com/org доменным корням)
и т.д.
Наличие корневой IPv4 сети для адресации IPv4r2 позволяет обычным сетям IPv4 по крайней мере доставлять IPv4r2 пакеты в адрес IPv4 точек входа в сети IPv4r2 адресации, а шлюзы IPv4, которые маршрутизируют пакеты на пути до этих IPv4 точек входа и сами эти IPv4 точки входа уже должны быть подсоединены к сетям IPv4r2 и уметь доставлять пакеты анализируя полный IPv4r2 адрес.
Далее рассмотрим IPv4r2 сеть с региональной структурой.
б) второй уровень
в которой IPv4 адрес c2.d2, 16 бит
формат c2.d2 зависит от структуры этой IPv4r2 сети (от корневой точки входа a1.b1.c1.d1)
для IPv4r2 сети региональной структуры
c2.d2 имеют формат <региональный код>[10]<региональная сеть>[6]
так что что для каждой точки входа a1.b1.c1.d1 предоставляется
1024 региона Земли и 64 региональные сети в каждом таком регионе (64 региональных провайдера)
адреса c2.d2 выдаются владельцем корневой точки входа a1.b1.c1.d1
в) третий уровень
в которой IPv4 адрес a3.b3.c3.d3, 26 бит
в сети IPv4r2 региональной структуры
для каждого регионального провайдера c2.d2
адреса a3.b3.c3.d3 имеют формат <клиент>[26]
это 64 миллиона клиентов регионального провайдера
адреса <клиент> выделяются региональным провайдером c2.d2 своему клиенту
г) четвертый уровень
в которой IPv4 адрес d4, 3 бита
в сети IPv4r2 региональной структуры
адрес d4 имеет формат <сеть пользователя>[3]
для каждой a1.b1.c1.d1 IPv4r2 сети региональной структуры
для каждого регионального провайдера c2.d2,
для каждого клиента регионального провайдера a3.b3.c3.d3,
<сеть пользователя> это d4 сеть клиента с 8 адресами
адреса <сеть пользователя> распределяет сам пользователь на свои ресурсы
Таким образом, полный вид IPv4r2 асимметричного адреса назначения в IPv4r2 сети региональной структуры такой:
a1.b1.c1.d1[32]/c2.d2[16]/a3.b3.c3.d3[26]/d4[3] [всего 77 бит]
даже если занять только несколько адресов a1.b1.c1.d1 в корневой сети IPv4 под точки входа в такие IPv4r2 сети
это уже даст сотни миллиардов глобальных IPv4r2 адресов с асимметричной адресацией
которых хватит на всю солнечную систему даже без модификации IPv4 заголовка
Биты поля <расширения адреса>[48] от старшего бита к младшему биту располагаются по группам:
<d4>[6]<b3>[10]<c3.d3>[16]<c2.d2>[16]
Сеть d4 из 64 адресов рассматривается как
2 битная IPv4r2 подсеть с хостами 0-3 (обратная маска /:-2, 0,3 разрешены как адреса хоста)
3 битная IPv4r2 подсеть с хостами 0-7 (обратная маска /:-3, 0,7 разрешены как адреса хоста)
6 битная IPv4r2 подсеть с хостами 0-63 (обратная маска /:-6, 0,63 разрешены как адреса хоста)
Первые 8 хостов из 64 те же что в режиме 77 бит.
В сетях IPv4r2 региональной структуры этот режим отличается от предыдущего 77 битного только тем, что
на четвертом уровне 6 бит вместо 3,
т.е.:
для каждой a1.b1.c1.d1 IPv4r2 сети региональной структуры
для каждого регионального провайдера c2.d2
есть 64 миллиона a3.b3.c3.d3 клиентов
с d4 сетями по 64 адреса
Таким образом, полный вид IPv4r2 асимметричного адреса назначения в IPv4r2 сети региональной структуры такой:
a1.b1.c1.d1[32]/c2.d2[16]/a3.b3.c3.d3[26]/d4[6] [всего 80 бит]
даже если занять только несколько адресов a1.b1.c1.d1 в корневой сети IPv4 под точки входа в такие IPv4r2 сети
это уже даст сотни миллиардов глобальных IPv4r2 адресов с адресацией 80 бит
которых хватит на всю солнечную систему даже без модификации IPv4 заголовка
Биты поля <расширения адреса>[40] от старшего бита к младшему биту располагаются по группам:
<d4>[2]<b3>[6]<c3.d3>[16]<c2.d2>[16]
Сеть d4 из 4 адресов рассматривается как
2 битная IPv4r2 подсеть с хостами 0-3 (обратная маска /:-2, 0,3 разрешены как адреса хоста)
3 битная IPv4r2 подсеть с хостами 0-3 (обратная маска /:-3, 0 разрешен как адреса хоста)
6 битная IPv4r2 подсеть с хостами 0-3 (обратная маска /:-6, 0 разрешен как адрес хоста)
Это первые 4 из 8 тех же хостов что и в режиме 77 бит.
В сетях IPv4r2 региональной структуры этот режим отличается от предыдущего 77 битного только тем, что
на третьем уровне 22 бита вместо 26,
а на четвертом уровне 2 бита вместо 3,
т.е.:
для каждой a1.b1.c1.d1 IPv4r2 сети региональной структуры
для каждого регионального провайдера c2.d2
есть 4 миллиона b3.c3.d3 клиентов
с d4 сетями по 4 адреса
Таким образом, полный вид IPv4r2 асимметричного адреса назначения в IPv4r2 сети региональной структуры такой:
a1.b1.c1.d1[32]/c2.d2[16]/b3.c3.d3[22]/d4[2] [всего 72 бит]
даже если занять только несколько адресов a1.b1.c1.d1 в корневой сети IPv4 под точки входа в такие IPv4r2 сети
это уже даст сотни миллиардов глобальных IPv4r2 адресов с адресацией 72 бита
которых хватит на всю солнечную систему даже без модификации IPv4 заголовка
В обобщенном IPv4r2 расширении адресации, адреса внутренних уровней (это имеет значение для коротких адресов) раздает владелец корневого адреса (a1.b1.c1.d1).
Адреса, численно совпадающие с основной IPv4r2 адресацией, хотя и достижимы в кодировании обобщенной IPv4r2 адресации, но распределяются в рамках основной IPv4r2 адресации.
Повторим, что это отдельное адресное пространство, распределение адресов в котором осуществляет сам владелец выделенного IPv4r2 адреса для своих ресурсов.
При маршрутизации пакеты в адрес дополнительной сети пользователя передаются на основной IPv4r2 адресат, для которого этот адрес дополнительной сети определен, но в отличие от индекса локального сокета шлюза, расширять можно как адрес назначения, так и оба адресата сразу.
При работе через через шлюз провайдера локальный адрес дополнительной сети пользователя может также подменяться, как и локальный IPv4/IPv4r2 адрес.
Чтобы указать, что подсчет IPv4 контрольной суммы в этом заголовке IPv4r2 не производился, создатель IPv4r2 пакета записывает значение 0xFFFF в поле контрольной суммы этого IPv4r2 заголовка.
Причины возможности резервирования значения 0xFFFF в поле контрольной суммы IPv4r2 заголовка:
суммирование IPv4 заголовка производится так, что в результате сумма может быть равна 0 только если все поля IPv4r2 заголовка равны 0, а поскольку как минимум поле версии заголовка содержит число 4, то сумма 0 никогда не может получиться;
в поле контрольной суммы IPv4r2 заголовка записывается инверсия этой суммы, так чтобы при сложении получилось значение 0xFFFF, значит раз сумма не равна 0x0000, то значение 0xFFFF никогда не может появляться в поле контрольной сумме IPv4r2 заголовка и может использоваться как флаг.
Проблемы резервирования значения 0xFFFF:
Отказ IPv4r2 от вычисления контрольной суммы не является 100% совместимым с IPv4, который предполагает ее вычисление, если контрольная сумма рассматривается IPv4 маршрутизатором как поврежденная (на деле в ней записано резервное IPv4r2 значение 0xFFFF), то такой IPv4 хост не сможет отвечать ICMP ответом, поскольку отправитель неизвестен, либо IPv4 должен уметь отвечать ICMP ответом на стандартный широковещательный адрес ошибок (предыдущий шлюз находится в той же сети, где и IPv4 маршрутизатор), отправляя туда IPv4r2 заголовок;
это нерационально расходует 2 байта IPv4r2 заголовка, позволяя этим только не считать контрольную сумму;
Старое оборудование, переносящее IPv4 пакеты, становится разделенным на два класса: совместимое с IPv4r2 по интерпретации поля контрольной суммы и несовместимое. Как бороться с несовместимостью?
Маршрутизатор IPv4r2 должен знать, поддерживает ли промежуточный IPv4 адрес, куда он отправляет пакет для IPv4r2 адресата, IPv4r2 отказ от подсчета контрольной суммы IPv4 заголовка.
Модификация модификации рознь. Для исправления программ, обслуживающих оборудование поддерживающее исходный IPv4, с целью внесения совместимости по IPv4r2 интерпретации поля контрольной суммы, изменения будут откровенно косметическими (по сравнению с ситуацией внедрения IPv6), даже "решение в лоб" путем:
фильтрации всех входящих IPv4 пакетов с полем контрольной суммы 0xFFFF на предмет подсчета контрольной суммы;
фильтрации всех исходящих IPv4 пакетов установкой поля контрольной суммы в значение 0xFFFF;
без учета эффективности, равной занесению правильных значений в момент создания IPv4r2 заголовка.
Так вот, изменения для программ с открытым исходным кодом, связанные с использованием резервного значения 0xFFFF в поле контрольной суммы, будут очень простыми, для модификации не потребуется смена ядра, переделка всего стека протоколов и не нужны т.п. глобальные обновления.
В полном режиме IPv4r2 заголовок может задействовать резервный бит флагов IPv4 заголовка, устанавливая этот бит в 1.
Установка в 1 резервного бита флагов IPv4 заголовка указывает на формат IPv4r2 заголовка. Это приводит к следующему:
в IPv4 поле протокол резервируется специальное значение номера протокола=0 (число 0)
если номер протокола не равен 0, то
предполагается работа IPv4r2 протокола в режиме межсетевого взаимодействия с MTU 1152 (работа в интернет);
поле протокола имеет такое же значение, как и для IPv4 заголовка
если номер протокола равен 0, то
предполагается работа IPv4r2 в режиме локальных и специальных сетей с MTU больше чем 1152
используется формат расширения статических полей IPv4r2 заголовка (см далее обобщенное расширение IPv4r2 заголовка);
Установка в 1 резервного бита флагов и поле протокол не равно 0 (MTU 1152):
запрещает IPv4 фрагментацию;
запрещает подсчет IPv4 контрольной суммы;
включает асимметричный 45 бит режим базовой IPv4r2 адресации (основной IPv4r2 режим межсетевого взаимодействия 77 бит), при этом освободившиеся поля IPv4 заголовка передаются под IPv4r2 поле расширение адреса (дополнительно 45 бит), состоящее из:
IPv4
поле контрольной суммы
хранит <c2.d2>[16]
IPv4
поле идентификатора
хранит <c3.d3>[16]
IPv4
поле смещения сегмента
хранит <d4>[3]<a3.b3>[10]
IPv4 поле флаги имеет новое значение:
100b
(IPv4
резервный флаг)
признак IPv4r2 заголовка
поле расширение
адреса 45 бит IPv4r2 заголовка принадлежит адресу назначения
010b
(IPv4
D
флаг)
поле
расширение адреса 45 бит IPv4r2 заголовка принадлежит адресу
источника вместо адреса назначения
001b
(IPv4
M
флаг),
расширение максимального размера IPv4r2 заголовка до 80 байт
Асимметричный 45 бит режим базовой IPv4r2 адресации предназначен для работы с IPv4r2 серверами пользователя в сети интернет через шлюз провайдера, поэтому по умолчанию расширяется поле адреса назначения. При отправке обратных пакетов включается флаг 010b, который указывает что расширяется поле источника.
Фактически такой формат IPv4r2 заголовка позволяет использовать IPv4r2 глобальную адресацию не используя опции IPv4 заголовка, т.е. при использовании 77 битной IPv4r2 адресации IPv4r2 заголовки имеют размер 20 байт, как и для 32 битных IPv4 адресов. Если сеть провайдера поддерживает IPv4r2, то этот формат IPv4r2 заголовка является наиболее часто используемым.
Расширение размера IPv4r2 заголовка до 80 байт прибавляет число 20 к размеру заголовка хранящемуся в IPv4r2 поле размер заголовка, т.е.:
IPv4r2 поле размер заголовка=5..F означает IPv4r2 заголовок=5*4..15*4=20..60 байт;
IPv4r2 поле размер заголовка=0..F в режиме расширения до 80 байт означает IPv4r2 заголовок=20+(0*4..15*4)=20..80 байт.
Проблемы в использовании резервного бита флагов:
отметим, что существует rfc3095, предлагающее использовать этот резервный бит флагов для "передачи IPv4 пакетов в сетях сотовой связи", но доставка пакетов в сетях "точка-точка" позволяет обертывать IP пакеты в дополнительную транспортную оболочку, которая никак не связана с IP заголовком и может позволять как сжимать IP пакеты в целом, так и добавлять средства контроля целостности данных;
также отметим, что сотовые компании не очень заинтересованы в том, чтобы трафик с абонента был бы минимальным, что для "общества свободного рынка не уравновешенного системой ценностей" есть ситуация обычная, если один абонент займет весь канал, владелец сети получит столько же, как если бы канал был занят тысячей абонентов - для узких каналов продается их пропускная способность, а не безлимитный доступ (количество абонентов);
нам выгодно, включив резервный флаг IPv4, добиться изменения формата IPv4 заголовка для нужд IPv4r2 и использовать освободившиеся IPv4 поля для расширения IPv4r2 адресации.
Старое оборудование, переносящее IPv4 пакеты, становится разделенным на два класса: совместимое с IPv4r2 по использованию IPv4 резервного флага и протоколом не равным 0 и несовместимое. Как бороться с несовместимостью?
Маршрутизатор IPv4r2 должен знать поддерживает ли промежуточный IPv4 адрес, куда он отправляет пакет для IPv4r2 адресата, использование IPv4 резервного флага и протокола не равного 0 или нет.
Правильное поведение шлюза IPv4, когда он встречает IPv4r2 пакет с резервным битом в неправильном положении, это отбросить такой IPv4 пакет, поскольку формат IPv4 заголовка для такого взведенного бита, кроме поля версия и резервного бита поля опции, может быть произвольным (в описании IPv4 формат заголовка с таким битом не определен). Но существуют IPv4 реализации (или опции настройки такого поведения), которые полагают, что резервные биты можно безопасно игнорировать, а не отбрасывать пакеты с такими битами в неправильном состоянии.
Модификация модификации рознь. Для исправления программ, обслуживающих оборудование поддерживающее исходный IPv4, с целью внесения совместимости по IPv4r2 интерпретации IPv4 резервного флага поля флагов и протокола не равного 0, изменения будут откровенно косметическими (по сравнению с ситуацией внедрения IPv6), даже "решение в лоб" путем:
фильтрации всех входящих IPv4 пакетов на предмет проверки IPv4 установленности резервного флага и протокола на неравенство 0 и переноса адресных полей из IPv4 заголовка в IPv4r2 опции;
фильтрации всех исходящих IPv4 пакетов на предмет установки IPv4 резервного флага и переноса адресных полей из IPv4r2 опций в IPv4 заголовок;
расширение размера IPv4r2 заголовка до 80 байт во многих случаях не потребует никакой существенной переделки, кроме добавления исправленной копии оригинальной IPv4 функции, обрабатывающей максимальный размер IPv4 заголовка и механизма выбора функции в зависимости от флага заголовка.
Обобщенное расширение размера IPv4r2 заголовка предназначено:
для работы IPv4r2 в локальных и специальных сетях, когда MTU больше чем 1152.
Как и в случае расширение максимального размера IPv4r2 заголовка до 80 байт, это обобщенное расширение не предназначено для замены специальных протоколов опциями IPv4.
Для обобщенного расширения максимального размера IPv4r2 заголовка:
должен быть включен резервный бит IPv4 поля флагов;
в IPv4 поле протокол записывается номер специального протокола=0;
важно отметить, что при этих условиях заголовок IPv4r2 не состоит из двух раздельных заголовков двух разных протоколов, а состоит только из одного заголовка одного протокола IPv4r2, значение 0 в IPv4 поле протокола указывает что для IPv4r2 это вовсе не поле протокола.
Установка в 1 резервного бита флагов и поле протокол не 0 (MTU более 1152):
запрещает IPv4 фрагментацию;
запрещает подсчет IPv4 контрольной суммы;
освободившиеся поля IPv4 заголовка зарезервированы:
IPv4
поле контрольной суммы
зарезервировано <0>[16]
IPv4
поле идентификатора
зарезервировано <0>[16]
IPv4
поле смещения сегмента
зарезервировано <0>[13]
IPv4 поле флаги имеет новое значение:
100b
(IPv4
резервный флаг)
признак IPv4r2 заголовка
010b
(IPv4
D
флаг)
резерв
0
001b
(IPv4
M
флаг),
резерв 0
к фиксированной части IPv4r2 заголовка прибавляются новые поля, идущие заместо IPv4 списка опций, начиная со по смещения 20:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| EIHL | EProtocol | ELength |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
поле
EIHL
содержит значение размера дополнительного заголовка в 4
байтовых словах
размер EIHL включает в себя и сами новые поля
(минимальное значение EIHL = 1)
значение IHL поля размера IPv4
заголовка при этом расширении всегда = 5
максимальный размер
IPv4r2
заголовка
равен 1020(EIHL)+20(IHL)=1040 байт
поле
EProtocol
содержит
протокол который должен быть в поле IPv4 заголовка Protocol,
если
не применяется обобщенное расширение IPv4r2 заголовка
значение
EProtocol=0
также зарезервировано
если EProtocol не равен 0, то после новых статических полей IPv4r2 заголовка идет поле списка опций, аналогичное IPv4 заголовку;
если EProtocol равен 0, то формат IPv4r2 пакета не определен;
поле
ELength
старшие два байта размера
IPv4r2 пакета (младшие два байта в поле размер пакета IPv4
заголовка)
максимальный размер IPv4r2 пакета при этом 4Гбайта
В режиме локальной и специальной сети асимметричная IPv4r2 адресация по умолчанию не задействована, IPv4r2 адресация достигается с помощью IPv4r2 адресных опций записанных в IPv4r2 поле опций (после новых статических полей IPv4r2 заголовка). Для локальной IPv4 сети будет достаточно IPv4 адресов IPv4 локальной сети (являющихся адресами корневой IPv4r2 сети).
Старое оборудование, переносящее IPv4 пакеты, становится разделенным на два класса: совместимое с IPv4r2 по использованию IPv4 резервного флага и протокола равного 0 и несовместимое. Как бороться с несовместимостью?
Маршрутизатор IPv4r2 должен знать поддерживает ли промежуточный IPv4 адрес, куда он отправляет пакет для IPv4r2 адресата, использование IPv4 резервного флага или нет.
Модификация модификации рознь. Для исправления программ, обслуживающих оборудование поддерживающее исходный IPv4, с целью внесения совместимости по IPv4r2 интерпретации IPv4 резервного флага поля флагов и протокола равного 0, изменения будут откровенно косметическими (по сравнению с ситуацией внедрения IPv6):
поддержка IPv4r2 пакетов 4Гбайта во многих случаях не потребует никакой существенной переделки, кроме добавления исправленной копии оригинальной IPv4 функции, обрабатывающей максимальный размер IPv4 пакета и механизма выбора функции в зависимости от флагов заголовка.
В стеке протоколов IPv4r2, протоколы UDP/TCP имеют новые версии
TCPr2 предположительно номер 0xA6
UDPr2 предположительно номер 0xB1
Это нужно для поддержки шлюзов и защитных сетевых фильтров, делаем это потому, что все равно надо модифицировать заголовок, чтобы поддержать UDP/TCP размер пакета для локальных сетей до 4 Гбайт.
Поле размер пакета определяет размер пакета адресуемый TCPr2 полем порядковый номер, это потому что UDPr2/TCPr2 не требуют для своей работы какого-либо сетевого протокола (например, IPv4r2).
Обращаясь к локальному серверному порту, UDPr2/TCPr2 могут обращаться к серверу пользователя, который установил канал связи с машиной в локальной сети, т.е. может существовать иной, кроме IPv4r2, программный механизм отображения сетевых компьютеров на локальные порты, так что протоколам UDPr2/TCPr2 нет нужды знать о сетевых адресах и конфигурации сети, если пользователь нужные локальные сетевые ресурсы к локальным портам UDPr2/TCPr2 подключает сам.
Также сетевой протокол IPv4r2 может содержать служебные данные в IPv4r2 пакете, часть из которых не относится к данным UDPr2/TCPr2 или заголовку IPv4r2.
Т.е. для UDPr2/TCPr2 существует единственный уникальный сетевой адрес "локальная машина", которому не нужно присваивать фиктивный сетевой IPv4r2 адрес, это случается, когда сетевой адрес просто не указан.
Это нужно для поддержки локальных сетей. TCPr2 поле размер пакета идет после статических полей заголовка TCP (смещение 24) и записывается четырьмя байтами, размер пакета в байтах, размер TCPr2 пакета вырос до 4 Гбайт.
TCP опция Window scaling запрещена в TCPr2.
Это поле записывается четырьмя байтами после поля размер пакета (смещение 28).
Отметку времени проставляет источник TCPr2 сегмента, во время осуществления связи приемник может синхронизировать время источника и оценивать время отправления каждого пришедшего с момента установления связи сегмента.
минимальный размер заголовка в TCPr2 поле смещение данных был 5 стал 8 (32 байта)
максимальный размер заголовка в TCPr2 поле смещение данных 15 (60 байт)
Для поддержки IPv4r2 заголовка в режиме межсетевого взаимодействия размером 80 байт, реализация TCPr2 работающая через IPv4r2 должна уметь ограничивать максимальный размер TCPr2 заголовка 48 байтами (значение 12).
Это нужно для поддержки локальных сетей, размер дейтаграммы увеличен до 4 Гбайт. Между UDPr2 полями размер пакета и контрольная сумма идут два резервных байта 0.
Это поле идет в UDPr2 заголовке последним (смещение 16).
Отметку времени проставляет источник UDPr2 дейтаграммы, приложение принимающее дейтаграммы может синхронизировать время источника и оценивать время отправления каждой прибывшей дейтаграммы.
UDPr2 имеет заголовок постоянного размера, этот размер вырос на 12 байт и заголовок UDPr2 равен 20 байтам (минимальный размер UDPr2 дейтаграммы).
Протоколы UDPr2/TCPr2 более не подсчитывают контрольную сумму для псевдо- заголовка, а только для заголовка и блока данных самого пакета UDPr2/TCPr2, попытка UDP/TCP сетей IPv4 включать сетевой адрес в псевдо- заголовок нарушает инкапсуляцию данных по уровням, UDPr2/TCPr2 полностью доверяет сетевую адресацию сетевому уровню, например IPv4r2.
Далее, кроме отличий в заголовках, под "UDP/TCP" подразумеваются оба варианта протоколов UDP/TCP в сетях IPv4r2:
старый UDP/TCP (0x11/0x06)
новый UDPr2/TCPr2 (0xA6/0xB1)
Протоколы UDP/TCP могут не подсчитывать контрольную сумму, помещая в поле контрольной суммы 0xFFFF, это возможно для UDP/TCP, поскольку поле длина пакета или смещение данных как минимум включает ненулевой размер заголовка UDP/TCP.
-) TCP поле Window Size.
Протокол TCP имеет в поле Window Size значение
512 для IPv4
1024 для IPv4r2
любое иное для локальных сетей
0 при перегрузке
По истечении таймера перегрузки, если подтверждения не было получено отправляется пробный пакет с размером:
512 для IPv4
1024 для IPv4r2
любое иное для локальных сетей
TCP опция Maximum segment size имеет такие же правила 512/1024 для IPv4/IPv4r2 и поддерживает второй, 32 битный формат для локальных сетей:
2,6,SSSS
UDP работающий локально в стеке IPv4r2 гарантирует, что как минимум 1024 байта самих данных в дейтаграмме может быть всегда принято самим протоколом UDP.
Для доставки UDP дейтаграмм через сеть IPv4r2 в межсетевом режиме IPv4r2, максимум 1024 байта данных в дейтаграмме может быть доставлено, если используются стандартные IPv4r2 (без расширения IPv4r2 заголовка или с расширением IPv4r2 заголовка до 80 байт) и UDP заголовки, иначе пакет не пройдет через IPv4r2 без фрагментации и может быть не доставлен до UDP назначения по причине IPv4r2.
При переполнении эти поля подчиняются арифметике по модулю 2, а не той арифметике, что для контрольной суммы TCP.
===
Конец текста