-1

Я знаю, что команда ping используется для проверки доступности удаленного компьютера с моего компьютера.

Но я не знаю, как это определяет. Мое дикое предположение состоит в том, что он отправляет некоторые образцы данных на порт 80 удаленной машины и, если он доставляется, говорит, что он доступен / доступен.

Пожалуйста, поправьте меня, если я ошибаюсь.

2 ответа2

3

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

Когда вы отправляете запрос ping, он использует протокол ICMP на сетевом уровне (уровень 3). Порты являются только концепцией транспортного уровня (уровень 4), поэтому эхо-запрос не знает ничего о портах и не нуждается в этом.

В частности, он использует ответное эхо-сообщение в ICMP и ожидает ответа.

Ответ ping просто показывает, что удаленный компьютер доступен через сеть, но ничего не говорит о том, какие службы запущены на этом компьютере или какие порты открыты. Если вы хотите проверить, доступен ли порт TCP 80, вам (на практике) придется использовать программу, которая может подключаться к сокетам TCP (например, telnet), или теоретически просто открыть соединение с помощью низкоуровневых вызовов операционной системы.

Обратите внимание, что некоторые общедоступные интернет-серверы могут быть настроены так, чтобы не отвечать на эхо-запросы ICMP.

1

Он не использует TCP или UDP(протоколы, которые имеют порт), поэтому нет порта.

Возьмите wireshark и посмотрите на сам пакет.

Сразу после IP идет протокол ICMP. Протокол TCP не используется. Там нет полей TCP там в «пакете». После IP есть ICMP. (Слово «пакет» может относиться только к части того, что отправлено, или я думаю, что оно может относиться ко всей партии (я имею в виду последнее - я считаю, что определение используется в телекоммуникациях).

Обратите внимание, что выделенная часть является «пакетом» в определенном смысле и использует IP, см. Выделенные поля IP. И в прошлом это ICMP. Гораздо проще увидеть в самом Wireshark. Как вы можете нажать на различные «слои» / протоколы, и увидеть правильные байты / поля выделены.

Терминология, которая часто используется, это термины слоев, использующие эталонную модель ISO/OSI, но применяемые к архитектуре TCP/IP. Уровень 1 является физическим, уровень 2 является фреймом (вы видите, что есть Ethernet), уровень 3 является пакетом. ICMP - это своего рода уровень 3.5 И нет уровня 4, потому что нет TCP. "Слои" - это способ, которым дизайнеры придумали говорить об этих полях.

Когда (в сети) люди говорят «Порт», они имеют в виду «Порт TCP» или «Порт UDP». Нет TCP или UDP, то нет порта. Чтобы использовать эту терминологию OSI - TCP и UDP существуют на уровне 4, на транспортном уровне, поэтому нет порта. Но посмотрите в wireshark, вы не видите TCP полей.

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