3

Я только что узнал, что Ping использует ICMP напрямую, то есть он обходит транспортный уровень. Как это возможно? Разве приложение (L5) не должно использовать UDP или TCP на транспортном уровне (L4)? Насколько я знаю, каждый уровень скрыт от всего, что на 2 уровня ниже, то есть приложение взаимодействует с L4 с помощью сокетов, но слепо от L3 до L1.

1 ответ1

3

Когда кто-то говорит "Ping", они ссылаются на ICMP-пинг, так как именно это и есть оригинальный пинг . На самом деле ICMP работает на более низком уровне, чем транспортные протоколы UDP и TCP, и не использует порты [ 1 ]:

ICMP использует базовую поддержку IP, как если бы это был протокол более высокого уровня, однако ICMP на самом деле является неотъемлемой частью IP и должен быть реализован каждым модулем IP.

Это происходит главным образом потому, что ICMP используется для сообщения об ошибках, поскольку сам IP не является полностью надежным. Итак, ICMP - это протокол нижнего уровня, который использует IP, а не TCP/UDP. Ping - это всего лишь инструмент, использующий ICMP (благодаря низкоуровневому C), однако ICMP - это не просто ping или traceroute, его основное назначение, как я уже заметил, совершенно иное.

И я не знаю, как вы узнали, что слои слепы для нижних слоев. Это неправда, или, по крайней мере, насколько мне известно. Ping может использовать любой протокол, который пожелает, внедрив его в C.

Низкоуровневые языки, такие как C, имеют прямой доступ к системным IP-модулям, поэтому можно использовать любой такой протокол, используя C (и почти любой другой язык, написанный на C в настоящее время).

Чтобы объяснить более явно (tl; dr):

Ping - это инструмент, основанный на ICMP, он не использует TCP и UDP, поэтому он не работает с портами (поскольку протокол не требует портов, только сервисы). Он не требует функциональности протоколов более высокого уровня, таких как TCP, поэтому он не реализует их. И несмотря на то, что ping является приложением, оно работает на ICMP и не использует порт.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .