Использует ли ICMP какие-либо процессы выше уровня 3?

Использует ли ICMP какие-либо процессы выше уровня 3?

Я работаю над проектом и мне нужно описать процесс пинга с уровня 7 на уровень 1. Пинг использует ICMP, который является уровнем 3, поэтому данные находятся под заголовком уровня 3. Означает ли это, что все уровни выше просто не имеют значения, или они все равно каким-то образом используются?

решение1

Он использует прикладной уровень (7 или 4 в зависимости от модели), а также 3 и ниже. ICMP не такой гибкий протокол, как TCP или UDP, поэтому он предоставляет довольно ограниченный набор функций.ИКМПподдерживает до255 типов командных сообщенийи делает это внутренне, а не использует протокол верхнего уровня для распределения сетевого ввода-вывода по процессам.

Таким образом, приложение управляет использованием командных сообщений для управления сетью. Например, Ping — это приложение, которое создает структуру данных, подходящую для пакета ICMP, и отправляет ее ОС для отправки на IP. Затем оно ждет возврата ввода-вывода. Когда стек IP получает эхо-ответ, он передает этот ввод-вывод программе, которая затем может выводить сообщения для пользователя.

Как и TCP/IP, прикладной уровень контролирует и координирует все примитивные операции, предоставляемые сетевым стеком, для создания возможностей, представляющих ценность для современных пользователей.

если вы человек с кодовым мышлением, рассмотритеэтот фрагмент кодана SO. он будет прослушивать сообщение ICMP и выводить его на выход программы. вы можете видеть, что он устанавливает "сырой сокет" для ICMP, привязывает этот сокет к интерфейсу IP (обе операции уровня 3), устанавливает некоторые структуры данных и считывает из ввода-вывода сокета, ища ответ. когда получено сообщение ICMP, его область данных появится в потоке ввода-вывода программы и будет выведена на экран. Это довольно аккуратно.

Отредактируйте по запросу:

Итак, модель OSI — это абстрактное представление способа думать об обязанностях, так что задачи имеют предварительные условия (характеристики протоколов, используемых на уровнях ниже) и постусловия, которым они должны соответствовать. Другое, что делает модель, — это устанавливает средства для передачи данных через каждую из этих задач.

Основная цель модели OSI — предоставить описание средств, с помощью которых приложения могут легко отправлять и получать сетевые сообщения, абстрагируясь от конфигурации системы, что делает ее переносимой между системами. В ранние годы приложения приходилось переписывать для работы на других платформах и конфигурациях, поскольку приложение должно было делать все самостоятельно. Разделив обязанности, программа может просто сосредоточиться на своей работе, и это не будет сильно отличаться между системами. Кроме того, системные и сетевые администраторы могут изменять способ подключения системы к другим системам, не влияя на приложение вообще.

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

Однако поставщики ОС менее заинтересованы в жестких правилах и структурах, которые не позволяют их платформе выделяться из толпы. Причина, по которой никогда не было полностью совместимой с OSI системы, заключается в том, что ни один поставщик ОС не хочет ее писать.

Итак, уровни OSI 1-4 являются надежными, предсказуемыми и необходимыми. Однако уровни 5 и 6 являются полностью необязательными. Приложения либо напишут код, чтобы использовать их, либо нет, в зависимости от того, что им нужно.

Большинство современных приложений просто считывают данные из сегмента транспортного протокола. В этих случаях нет инкапсулированных датаграмм для L5/L6. Данные в полезной нагрузке сегмента — это данные приложений, поэтому приложение просто подключает потоки ввода-вывода к порту L4 и считывает/записывает в/из него.

В случае ICMP, поскольку он не использует Layer4, приложение просто считывает сырой IP-сокет. Та же концепция.

Слой 5используется только для приложений, которым требуется сетевое проксирование или туннелирование. Полезной нагрузкой этой датаграммы часто является другой кадр или пакет, который отправляется через туннель, или сегмент, проксируемый через прокси-сервер SOCKS. Приложение обычно либо не знает, что прокси-сервер задействован, либо использует ОС для обработки уровня 5, если он применим для этой системы, хотя некоторые приложения в некоторых ОС могут фактически управлять декапсуляцией датаграмм L5. Часто операции L5 обрабатываются в ядре с использованием драйвера (виртуальный сетевой адаптер VPN, системный прокси-сервер и т. д.).

Примечательно, что большинство протоколов уровня 5 используются для управления взаимодействием, которое не имеет ничего общего с желанием приложений отправлять/получать сообщения, и обычно не имеет смысла ни для одной из систем, участвующих в коммуникации. Обычно он используется для управления сетью, чтобы эти две системы МОГУТ общаться. Фактически, большую часть времени поток данных приложений перехватывается ОС, а системное приложение обрабатывает инкапсуляцию внешней датаграммы, поэтому оно берет пакеты приложений и помещает их в другие пакеты, о существовании которых приложение даже не знает. В этот момент системное приложение контролирует данные.

Слой 6на самом деле не используется. В любой среде программирования, которую я использовал, кодирование обрабатывается в приложении с использованием соответствующих библиотек. При желании приложения могут писать операции уровня 6, используя кодировщики/декодеры ОС или предоставляя свои собственные, но по моему опыту это обычно обрабатывается приложением и не влияет на инкапсуляцию датаграмм.

Итак, в конце концов, все это делается для того, чтобы предоставить приложению потоки ввода-вывода, которые оно может читать и писать, чтобы отправлять и получать сообщения по сети, практически без предварительного знания того, как работает сеть. Это 100% того, что такое современные сети.

Если система использует общесистемный прокси-сервер или VPN, она обычно автоматически инкапсулирует датаграмму L5, так что отправляющее приложение даже не знает о ее существовании. На принимающей стороне заголовок L5 уже будет удален к моменту получения, поскольку он был обработан прокси-сервером или конечной точкой VPN, поэтому удаленная ОС просто передает данные из полезной нагрузки уровня 4 в приложение.

Таким образом, данный пакет будет иметь только столько слоев, инкапсулированных в нем, сколько ему нужно, чтобы выполнить работу. Существуют низкоуровневые приложения, которые работают только на уровне 2 и не содержат компонентов L3+. Существуют приложения межсетевого уровня, которые не используют L4+, поэтому они не инкапсулируют ничего выше (например, ICMP). Вам необходимо иметь все слои ниже того, на котором вы хотите работать, но вам не нужны слои выше него. Большинство распространенных приложений фокусируются на чтении и записи на уровне 4 и позволяют ОС беспокоиться об уровнях 5 и 6 по мере необходимости.

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

решение2

ICMP — этоПротокол управляющих сообщений Интернета. Как следует из названия, ICMP — этопротокол Интернета. ЭтонетаОСИпротокол.

Стек протоколов Интернета состоит всего из четырех уровней:

  • Приложение
  • Транспорт
  • Интернет
  • [Ссылка] (предполагается, что этот уровень существует за пределами Интернета, он не определен самим стеком протоколов Интернета)

ICMP — это протокол интернет-уровня, являющийся вторым уровнем стека интернет-протоколов.

Существуют и другие популярные многоуровневые модели сетей, например, стек Ethernet:

  • Связующий слой
    • Логическое управление связью (LLC)
    • Управление доступом к среде (MAC)
      • Подуровень согласования (RS)
  • ФИЗИЧЕСКИЙ
    • Подуровень физического кодирования (PCS)
    • Подуровень физического подключения к среде (PMA)
    • Физический зависимый от среды подслой (PMD)

Все эти 8 уровней и подуровней вместе соответствуют только одному единственному уровню в стеке интернет-протокола, канальному уровню. И они соответствуют двум уровням в стеке протокола OSI, физическому уровню и канальному уровню.

Как вы можете видеть, все эти различные стеки имеют разные уровни, и нет никакой гарантии, что протокол из одного стека, например IEEE 802.3cd из стека Ethernet или ICMP из стека Интернета, может быть идеально сопоставлен с другим стеком.

Например, вы не можете сопоставить ICMP со стеком Ethernet. Вы можетепытатьсядля сопоставления IEEE 802.3cd со стеком Интернета, но это будет совсем неточно: все, что можно сказать, это то, что он принадлежит к канальному уровню, но в стеке Ethernet этот уровень разделен на 8 уровней и подуровней, и IEEE 802.3cd принадлежит только одному из них, а не всем.

Аналогично, если вы попытаетесь сопоставить IEEE 802.3cd со стеком OSI, все, что вы можете сказать, это то, что он принадлежит физическому уровню, но в стеке Ethernet это соответствует трем различным подуровням, а IEEE 802.3cd принадлежит только одному из них.

Связанный контент