Назад | Перейти на главную страницу

Почему ICMP относится к протоколу уровня 3?

ICMP классифицируется как протокол уровня 3 в модели OSI, но, насколько я могу судить, он не соответствует определению протокола сетевого уровня.

Он не обеспечивает адресацию или маршрутизацию пакетов (для этого использует IP), поэтому все, что он делает, это отправляет информацию от одного узла к другому узлу, как транспортный протокол. Итак, учитывая это, почему ICMP классифицируется как протокол уровня 3?

Фактически ICMP находится на «вершине» уровня 3. Он использует протокол IP для доставки данных на удаленный хост. Другими словами, сообщения ICMP должны быть инкапсулированы в IP-пакеты.

Считайте его похожим на ARP, который можно рассматривать как «верхний» уровня 2, при этом для фактической отправки пакетов используется протокол Ethernet.

ICMP реализован как часть уровня IP, поэтому обработка ICMP может рассматриваться как происходящая параллельно или как часть обработки IP. Поэтому в теме многоуровневой сети на основе TCP / IP ICMP показан как протокол уровня 3.

@ Робби Маккенни

К какому уровню принадлежит протокол ICMP - предмет ожесточенных споров. Заголовок ICMP находится на уровне 4, точно так же, как TCP и UDP, поэтому люди утверждают, что он принадлежит к уровню 4. Другие, однако, утверждают, что ICMP является протоколом уровня 3, поскольку он поддерживает IP и не имеет понятия портов.

Для меня классификация протокола как принадлежащего к определенному уровню в модели OSI зависит от того, как протокол работает. Пример:

BGP используется для маршрутизации на уровне 3, но сам BGP переносится TCP (и, конечно, IP)

ICMP (и ICMPv6, IGMP и т. Д.) Все управляют соединениями сетевого уровня. Они (как правило) используются не конечными пользователями, а операционной системой. По этой причине он принадлежит к Уровню 3 (Сеть), хотя он полагается на IP для адресации и определения пути (маршрутизации).

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