2.2. Определение адреса источника сообщения
IP-узел, который передает ICMPv6-сообщение, должен определить IPv6-адреса источника и получателя сообщения и разместить их в IPv6-заголовке и только потом рассчитывать контрольную сумму. Если IP-узел имеет более одного адреса, то тогда он должен выбрать адрес источника сообщения следующим образом:
Если сообщение является ответом на сообщение, которое было принято этим IP-узлом и содержало один из его уникальных адресов, то тогда адрес источника в ответе должен быть таким, который был указан в принятом сообщении (адрес получателя).
Если сообщение является ответом на сообщение, которое было принято этим IP-узлом и содержало широковещательный или групповой адрес (причем данный IP-узел входит в это объединение узлов с таким адресом), то тогда адрес источника в ответе должен быть уникальным адресом того интерфейса, на который поступил IP-пакет с широковещательным или групповым адресом.
Если сообщение является ответом на сообщение, которое было передано по адресу, который не принадлежит данному IP-узлу (но было им получено), то тогда целесообразно, чтобы адрес источника был уникальным адресом этого IP-узла, который используется последним для диагностирования ошибок (то есть, наиболее приемлем для диагностирования ошибок). Например, если сообщение является ответом на IP-пакет, подлежащий дальнейшей ретрансляции, но которая не может быть успешно осуществлена, то тогда адрес источника в ответе должен быть уникальным адресом того интерфейса, на который поступил этот «бракованный» IP-пакет.
Во всех других случаях должна быть проверена маршрутная таблица этого IP-узла с целью определения интерфейса, который будет использоваться для передачи сообщения по указанному адресу назначения. После такой проверки в качестве адреса источника сообщения должен быть указан адрес, принадлежащий интерфейсу, который будет использоваться для передачи сообщения.
2.3. Вычисление проверочной суммы сообщения
Проверочная сумма вычисляется по битовой последовательности, включающей все ICMPv6-сообщение, начинающееся с поля «Тип ICMPv6-сообщения», и предварительно добавленный «псевдозаголовок», состоящий из отдельных полей IPv6-заголовка. «Псевдозаголовок» также содержит поле «Следующий заголовок» со значением «58».
Замечание. Включение «псевдозаголовка» в последовательность для вычисления проверочной суммы ICMPv6-сообщения является новшеством по сравнению с IPv4-стандартом.
Перед вычислением проверочной суммы само поле «Проверочная сумма» заполняется нулями.