6강-ICMP

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

  • 인터넷 제어 메시지 프로토콜

  • 프로토콜 구조의 Type와 Code를 통해 오류 메시지를 전송 받는다.

icmp
  • Type (8 bits)

    • ICMP메시지의 유형을 나타낸다. 각각의 값은 특정한 메시지 타입을 의미한다.

  • Code (8 bits)

    • Type필드와 함께 사용되어 더 상세한 에러나 정보를 제공하는 필드이다.

    • Type이 같더라도 Code값에 따라 메시지의 의미가 달라진다.

  • Checksum (16 bits)

    • ICMP 메시지의 무결성을 확인하기 위한 값이다.

    • 헤더와 데이터의 오류를 검출한다.

주요 ICMP 메시지 Type(0,3,5,8,11)

  1. Type 0 - EchoReply

    • Ping 요청에 대한 응답 메시지

    • Code: 항상 0

    • 네트워크 삳태를 점검하는 ping에서 응답 패킷을 받을 때 사용한다.

  2. Type 3 - Destination Unreachable

    • 목적지에 도달할 수 없을 때 반환되는 메시지

    • Code 값

      • 0: Network unreachable (네트워크에 도달할 수 없음)

      • 1: Host unreachable (호스트에 도달할 수 없음)

      • 3: Port unreachable (목적지 포트에 도달할 수 없음)

      • 13: Communication administratively prohibited (관리적으로 통신이 금지됨)

    • IP 패킷이 지정된 목적지에 도달할 수 없을 때 발생한다.

  3. Type 5 - Redirect:

    • 라우팅 경로를 변경해야 할 때 보내지는 메시지

    • Code 값

      • 0: Redirect Datagram for the Network (네트워크 전체에 대한 경로 변경)

      • 1: Redirect Datagram for the Host (특정 호스트에 대한 경로 변경)

    • 라우터가 더 나은 경로가 있을 때 호스트에 알려줄 때 사용한다.

  4. Type 8 - Echo Request

    • Ping 요청 메시지

    • Code: 항상 0

    • ping 명령어를 사용하면 Echo Request 메시지를 전송하고 응답을 기다린다.

  5. 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 통신 과정

  1. ICMP 요청 생성: Ping 명령어를 통해 ICMP Echo Request(요청) 메시지가 생성된다. 이 메시지는 특정 IP 주소로 패킷을 전송하여 대상 호스트가 정상적으로 작동 중인지 확인하는 데 사용된다.

  2. ICMP 메시지 전송: 이 메시지는 IP 패킷의 페이로드(payload)에 실려 전송되며, IP 계층을 통해 라우팅된다.

  3. 네트워크 계층: 에서 목적지 IP 주소를 기준으로 라우팅 테이블을 참고하여 경로를 설정하고, 패킷을 목적지로 전달한다.

  4. ARP 통신 (필요 시): 만약 IP 주소에 대응하는 MAC 주소가 없다면, ARP 요청을 보내 목적지 MAC 주소를 알아낸다. ARP 응답을 통해 MAC 주소를 확인하면, 해당 주소로 패킷을 전송한다.

  5. 라우터 통과 (필요 시): 만약 패킷이 목적지 네트워크에 있지 않다면, 라우터가 패킷을 전달할 경로를 결정한다. 이때, 라우터의 라우팅 테이블을 참고하여 다음 홉(next hop)을 설정하고 패킷을 계속 전송한다.

  6. ICMP 응답 (Echo Reply): 목적지에 도착하면 해당 호스트는 ICMP Echo Reply(응답) 메시지를 생성하여 송신자에게 돌려준다.이 과정도 IP 계층을 통해 송신자에게 패킷이 전달된다.

Last updated