2015-01-31 6 views
0

저는 TCP와 UDP에 대해 최근에 배웠습니다. 또한 ping이 ICMP를 사용함을 알고 있습니다. 내 이해는 명령 ping google.com가 실행되면 컴퓨터가 IP를 통해 에코 요청 ICMP 패킷을 보내고 Google은 에코 응답 메시지로 응답합니다.핑 (ping)에 응답하는 네트워크 계층은 무엇입니까?

내 질문은 서버가 해당 에코 응답 메시지로 응답 할 때 무엇이 ​​실제로 처리되는 것입니까? 운영 체제입니까? 특정 응용 프로그램입니까? 아니면 완전히 다른 것입니까?

답변

1

ICMP 요청에 응답하는 커널 모듈입니다. ICMPv4 모듈은 net/ipv4/icmp.c입니다.

ICMP 모듈은 icmp_pointers이라는 개체가 icmp_objects 인 다양한 ICMP 요청을 처리하는 방법에 대한 배열 테이블을 정의하며 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()까지 끓는 (것 ICMP_ECHO)에 icmp_reply()의 에코 응답 (ICMP_ECHOREPLY)을 보내면됩니다.

-1

TCP/IP 참조 모델의 측면에서 이것은 일반적으로 커널에있는 프로토콜 스택의 네트워크 계층입니다.