Я проходил видео-лекцию по сети, и там лектор упоминает ICMP как протокол транспортного уровня. Тем не менее, Googling показывает различные форумы, описывающие его как протокол сетевого уровня. Это меня очень смутило. Может кто-нибудь уточнить?
Является ли протокол ICMP транспортным уровнем?
Ответ 1
Протоколы транспортного уровня связаны с отправкой данных из конца в конец и гарантией (или явно не гарантирующей) надежности. TCP используется для отправки данных с одного компьютера на другой и включает в себя логику, необходимую для обеспечения правильной транспортировки данных, в то время как UDP используется для отправки данных с одного компьютера на другой, надеясь получить надежность.
ICMP действительно этого не делает. Его задача - помочь маршрутизаторам определить форму Интернета и какое направление отправлять пакеты с различными протоколами. Следовательно, он рассматривал протокол сетевого уровня, поскольку его задача заключается в обеспечении того, чтобы данные направлялись в нужное место, но фактически не маршрутизировали данные.
Надеюсь, это поможет!
Ответ 2
Без сомнения, это протокол сетевого уровня. Причинами, которые часто путают с транспортным уровнем, является то, что ICMP работает без ЛЮБОГО транспортного уровня. Например. ping или traceroute не имеют четко определенных портов. Вместо этого каждый компьютер tcp/ip stack отвечает за обработку и реагирование на входящие сообщения ICMP (вместо поиска порта и перехода к соответствующему приложению, как это происходит со всеми другими приложениями).
Update:
По-видимому, это звучит сбивает с толку читателей, поэтому здесь можно сделать снимок из TCP/IP, иллюстрированный Ричардом Стивенсом, объясняющим концепцию и намерение.
Цитата из книги.
"Позиционирование полей протокола, обозначенных как ICMP и IGMP, всегда вызов. Раньше мы показывали их на том же уровне, что и IP, потому что они действительно являются дополнениями к IP. Но здесь мы показываем им выше IP, чтобы повторить, что ICMP-сообщения и сообщения IGMP инкапсулируются в IP-датаграммы"
Преподавание концепции о том, что "некоторые протоколы и приложения" работают по-другому, чем стандартная концепция каждого уровня, отвечающая за другую задачу (транспорт - от конца до конца, где в качестве сети, ходящей в прыжке) является жестким и требует времени для переваривания.
Следующей наиболее важной задачей для изучения является
Даже если вы выполняете ping с помощью нескольких консолей say от SAME machine к другому, STILL может отслеживать все индивидуальные, так называемые соединения (просто связанные с обменом сообщениями, в противном случае нет соединения, такого как tcp).
Как сделано выше, зависит от ОС. Стек Linux помещает 8 байтов в поле данных ICMP, которое содержит порты, из которых запускается исходный прикладной уровень. Это также объясняется в той же книге в программе ping.
То же самое относится к протоколам нижнего уровня, таким как ARP/RARP.