Почему заголовок IP должен иметь адрес источника? - PullRequest
0 голосов
/ 15 февраля 2020

Какая польза от адреса источника в заголовке IP? Разве сетевой уровень не касается только пересылки пакетов по адресу назначения с использованием таблицы маршрутизации?

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Действительно, пакет будет отправлен к месту назначения и правильно маршрутизирован даже без исходного адреса источника. Вы не сможете оставить поле адреса источника пустым, так как оно изменит длину заголовка, по крайней мере, вам понадобится какой-то IP-адрес. Это поле должно быть ровно 32 бита для IPv4 ( RFC791 ) и 128 бит для IPv6 ( RFC8200 ), поэтому поля нулевой длины не допускаются.

Пакет достигает пункта назначения зависит от инфраструктуры между ними. Абсолютно возможно, что получатель получит пакет, при условии, что не существует какого-либо брандмауэра или другого фильтра для отбрасывания пакета, если он считает его незаконным, что делают некоторые брандмауэры.

Чтобы ответить, зачем это нужно, обычно при двухсторонней связи вам нужно указать, куда получатель должен отправить ответ.

Если вы не хотите получать ответ, вам может быть все равно, знает ли получатель адрес источника пакета или не. В этом случае вы можете подделать истинный адрес источника и отправить пакет с любым адресом, который хотите, если вы не отклоняетесь от спецификации протокола.

Однако это будет скорее исключением, чем правилом. Таким образом, большинство протоколов предназначены для использования (или, по крайней мере, для поддержки) двусторонней связи, а поле адреса источника встроено в их спецификацию.

1 голос
/ 15 февраля 2020

Как бы вы отправили подтверждение, если не знаете, куда его следует отправлять?

Для таких протоколов, как TCP и ICMP.

Эти протоколы не нужно передавать адрес источника, если он хранится в заголовке IP.

Например, TCP не хранит адрес источника явно, а порт источника (и адресата назначения). Также легче читать, если адрес источника и получателя передается один за другим, а не в разных заголовках.

Практически каждому протоколу нужен адрес источника в любом случае.

Много высоких протоколы уровня, такие как HTTP, должны отправлять контент обратно пользователю, который первоначально отправил пакет (ы).

Эти протоколы также должны отправлять IP-адреса отправителей.

Адрес источника также необходим если пакет не может быть передан и ответ об ошибке отправлен обратно.

...