3.3.3.1.1. Расчет ICV для IPv4
3.3.3.1.1.1. Поля основного заголовка
Базовые поля заголовка IPv4 характеризуются следующим образом:
- Неизменные
- Version
- Internet Header Length
- Total Length
- Identification
- Protocol (здесь должно быть значение для AH)
- Source Address
- Destination Address (без строгой или нестрогой маршрутизации, заданной отправителем)
- Предсказуемо изменяемые
- Destination Address (со строгой или нестрогой маршрутизацией, заданной отправителем)
- Изменяемые (0 перед расчетом ICV)
- Differentiated Services Code Point (DSCP) (6 битов, см. RFC 2474 [NBBB98])
- Explicit Congestion Notification (ECN) (2 бита, см. RFC 3168 [RFB01])
- Flags
- Fragment Offset
- Time to Live (TTL)
- Header Checksum
DSCP — маршрутизаторы могут менять значение поля DS для обеспечения желаемого сервиса (локального или сквозного), поэтому значение поля в момент получения пакета отправителю предсказать невозможно.
ECN — это поле будет меняться, если на пути встретится перегруженный маршрутизатор, следовательно значение поля в момент получения пакета не может быть определено отправителем.
Flags — это поле исключается из расчетов, поскольку промежуточные маршрутизаторы могут устанавливать флаг DF, даже в тех случаях, когда отправитель не установил его.
Fragment Offset — поскольку AH применяется только к нефрагментированным пакетам IP, значение этого поля всегда должно быть нулевым, поэтому оно исключено из расчета (несмотря на предсказуемость).
TTL — это значение маршрутизаторы меняют в процессе штатной обработки пакетов, поэтому отправитель не может предсказать значение поля в момент приема пакета.
Header Checksum — это поле меняется при изменении любого флага, поэтому отправитель не может предсказать значение поля на момент доставки пакета.