2015-01-31 2 views
0

В последнее время я узнал о TCP и UDP, и я знаю, что ping использует ICMP, поэтому я тоже пытаюсь это понять. Я понимаю, что когда запускается команда ping google.com, ваш компьютер отправляет ICMP-пакет эхо-запроса по IP-адресу в google, а затем Google отвечает на сообщение ответа эха.Какой сетевой слой обрабатывает ответы на пинги?

Вопрос в том, когда сервер отвечает этим сообщением об эхо-сигнале, что на самом деле заботится об этом? Это операционная система? Это конкретное приложение? Или это совсем другое?

ответ

1

Его модуль ядра, который отвечает запросам ICMP. Модуль ICMPv4 - net/ipv4/icmp.c.

ICMP-модуль определяет таблицу массива о том, как обрабатывать различные ICMP-запросы с объектом icmp_objects с именем icmp_pointers, который индексируется типом сообщения ICMP.

ICMP структура управления:

struct icmp_control { 
    void (*handler)(struct sk_buff *skb); 
    short error; /* This ICMP is classed as an error message */ 
}; 

static const struct icmp_control icmp_pointers[NR_ICMP_TYPES + 1] = { 
... 
    [ICMP_ECHO] = { 
     .handler = icmp_echo, 
    }, 
... 
}; 

Из выше структур, при отправке эха-запроса на google.com сервер типа сообщения будет icmp_echo кипящими до вызова подпрограммы icmp_echo(), который обрабатывает эхо (ping) запросы (ICMP_ECHO) путем отправки эхо-ответов (ICMP_ECHOREPLY) с icmp_reply().

-1

С точки зрения эталонной модели TCP/IP это сетевой уровень стека протоколов, который обычно находится в ядре.

Смежные вопросы