6강-ICMP
ICMP(Internet Control Message Protocol)은 IP 네트워크에서 중요한 역할을 하는 프로토콜이다. 주로 오류 메시지 전송, 네트워크 진단 및 문제 해결을 위해 사용된다. ICMP는 데이터 패킷이 성공적으로 도착하지 못했을 때 문제를 알려주거나, 네트워크 상태를 확인하기 위해 사용된다.
인터넷 제어 메시지 프로토콜
프로토콜 구조의 Type와 Code를 통해 오류 메시지를 전송 받는다.

Type (8 bits)
ICMP메시지의 유형을 나타낸다. 각각의 값은 특정한 메시지 타입을 의미한다.
Code (8 bits)
Type필드와 함께 사용되어 더 상세한 에러나 정보를 제공하는 필드이다.
Type이 같더라도 Code값에 따라 메시지의 의미가 달라진다.
Checksum (16 bits)
ICMP 메시지의 무결성을 확인하기 위한 값이다.
헤더와 데이터의 오류를 검출한다.
주요 ICMP 메시지 Type(0,3,5,8,11)
Type 0 - EchoReply
Ping 요청에 대한 응답 메시지
Code: 항상 0
네트워크 삳태를 점검하는
ping
에서 응답 패킷을 받을 때 사용한다.
Type 3 - Destination Unreachable
목적지에 도달할 수 없을 때 반환되는 메시지
Code 값
0: Network unreachable (네트워크에 도달할 수 없음)
1: Host unreachable (호스트에 도달할 수 없음)
3: Port unreachable (목적지 포트에 도달할 수 없음)
13: Communication administratively prohibited (관리적으로 통신이 금지됨)
IP 패킷이 지정된 목적지에 도달할 수 없을 때 발생한다.
Type 5 - Redirect:
라우팅 경로를 변경해야 할 때 보내지는 메시지
Code 값
0: Redirect Datagram for the Network (네트워크 전체에 대한 경로 변경)
1: Redirect Datagram for the Host (특정 호스트에 대한 경로 변경)
라우터가 더 나은 경로가 있을 때 호스트에 알려줄 때 사용한다.
Type 8 - Echo Request
Ping 요청 메시지
Code: 항상 0
ping 명령어를 사용하면 Echo Request 메시지를 전송하고 응답을 기다린다.
Type 11 - Time Exceeded
패킷이 유효 시간(TTL)을 초과하여 소멸될 때 전송되는 메시지
Code 값
0: TTL exceeded in transit (네트워크 경로 중에서 TTL 초과)
1: Fragment reassembly time exceeded (프래그먼트 재조립 중 시간이 초과됨)
패킷이 경로 상에서 소멸될 때 전송되며, Traceroute와 같은 네트워크 진단 도구에서 중요한 역할을 한다.
라우팅 테이블
라우팅 테이블은 3계층(네트워크)에서 중요한 역할을 하며, 데이터 패킷이 어디로 가야하는지를 결정하는 데 사용된다.
netstat -r
IPv4 경로 테이블
===========================================================================
활성 경로:
네트워크 대상 네트워크 마스크 게이트웨이 인터페이스 메트릭
0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.3 35
127.0.0.0 255.0.0.0 연결됨 127.0.0.1 331
127.0.0.1 255.255.255.255 연결됨 127.0.0.1 331
127.255.255.255 255.255.255.255 연결됨 127.0.0.1 331
목적지 (Destination)
패킷이 향해야 하는 최종 목적지의 IP 주소이다.
네트워크 마스크 (Netmask)
목적지 주소와 일치하는 범위를 정의한다.
게이트웨이 (Gateway)
패킷이 목적지에 도달하기 위해 통과해야 할 다음 라우터의 IP 주소이다.
인터페이스 (Interface)
패킷이 전송될 네트워크 인터페이스이다. (예: eth0, wlan0 등)
플래그 (Flags)
라우트의 특성을 나타내며, 종종 U(Up), G(Gateway) 등으로 표시된다.
Metric
경로의 우선순위를 나타내는 숫자로, 숫자가 낮을수록 경로의 우선순위가 높다.
ICMP 통신 과정
ICMP 요청 생성:
Ping
명령어를 통해 ICMP Echo Request(요청) 메시지가 생성된다. 이 메시지는 특정 IP 주소로 패킷을 전송하여 대상 호스트가 정상적으로 작동 중인지 확인하는 데 사용된다.ICMP 메시지 전송: 이 메시지는 IP 패킷의 페이로드(payload)에 실려 전송되며, IP 계층을 통해 라우팅된다.
네트워크 계층: 에서 목적지 IP 주소를 기준으로 라우팅 테이블을 참고하여 경로를 설정하고, 패킷을 목적지로 전달한다.
ARP 통신 (필요 시): 만약 IP 주소에 대응하는 MAC 주소가 없다면, ARP 요청을 보내 목적지 MAC 주소를 알아낸다. ARP 응답을 통해 MAC 주소를 확인하면, 해당 주소로 패킷을 전송한다.
라우터 통과 (필요 시): 만약 패킷이 목적지 네트워크에 있지 않다면, 라우터가 패킷을 전달할 경로를 결정한다. 이때, 라우터의 라우팅 테이블을 참고하여 다음 홉(next hop)을 설정하고 패킷을 계속 전송한다.
ICMP 응답 (Echo Reply): 목적지에 도착하면 해당 호스트는 ICMP Echo Reply(응답) 메시지를 생성하여 송신자에게 돌려준다.이 과정도 IP 계층을 통해 송신자에게 패킷이 전달된다.
Last updated