Когда кто-то говорит «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 и не использует порт.