Как работает ping (8)?

Я изучал основы сервера/клиента в рамках развития своих навыков сетевого программирования.

Так что в основном я пишу сервер, слушающий какой-то порт, и клиент, подключающийся к нему
и поток данных продолжается...

теперь я очарован, как ping может получить ответ от удаленной машины,
без каких-либо услуг, реагирующих на него? Или я ошибаюсь здесь?

24
задан Sathya
07.12.2022 12:00 Количество просмотров материала 2772
Распечатать страницу

3 ответа

это не TCP, не UDP и не любой другой транспортный протокол. В интернет-заголовке существует поле протокола, которое указывает, какой тип полезных данных содержит IP-пакет. Для пакетов TCP это поле указывает TCP. Для пакетов ping это указывает ICMP.

кстати. Это не единственная польза ICMP. Е. Г. когда TTL пакета падает до нуля во время путешествия по сети, он отбрасывается, и отправитель уведомляется пакетом ICMP.

Если вам интересно, как ping (8) управляет отображением полученных ответов ICMP из пользовательского пространства, используя API сокетов. Это соответствующий раздел из исходного кода:

/* Initialize raw ICMP socket */
proto = getprotobyname ("icmp");
if (!proto)
  {
    fprintf (stderr, "ping: unknown protocol icmp.\n");
    return NULL;
  }

fd = socket (AF_INET, SOCK_RAW, proto->p_proto);
10
отвечен artistoex 2022-12-08 19:48

Да, вы слегка ошибаетесь.

Когда a запрос ping отправляется на хост, по стандарту (RFC 1122), хост должен ответить. Таким образом, существует" служба", отвечающая на него. Это не служба уровня приложения-сам стек TCP/IP отвечает "служба".

пинг без сеансов, что может ввести в заблуждение вас. Ping использует IP, который не требует сеанса, который будет установлен посредством согласования (который TCP делает). Когда вы написали ваш программа для вашего класса, готов поспорить, вы написали ее, используя TCP сокеты.

5
отвечен John 2022-12-08 22:05

ping на самом деле сделать запрос ICMP против самого стека IP, так что никакие службы на машине не будет записывать его, но если у вас есть что-то вроде wireshark работает, вы можете обнаружить пакеты таким образом.

2
отвечен Jared Tritsch 2022-12-09 00:22

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх