진진리 2024. 5. 17. 14:15
728x90

인터넷 제어 메시지 프로토콜(ICMP)

  • IP 프로토콜의 문제점
    • 신뢰성이 없고 비연결형 데이터그램 전달
    • 오류 제어(오류 보고 및 오류 수정) 기능이 없음
    • 호스트와 관리 질의를 위한 메커니즘이 없음
    • 네트워크 관리자는 다른 호스트나 라우터로부터 정보를 획득할 필요가 있음
  • 2가지 유형의 메시지
    1. 오류-보고(error-reporting) 메시지: 라우터나 목적지 호스트가 IP 패킷을 처리하는 도중 발견하는 문제 보고
    2. 질의(query) 메시지: 호스트나 네트워크 관리자가 라우터나 다른 호스트로부터 특정 정보 획득 시 사용 (ping 등)

Type 3, 11이 대부분

  • ICMP 메시지 형식

  • 오류 보고 메시지
    • 오류 수정이 아닌 보고만 함
    • 오류 수정은 상위 계층 프로토콜(TCP)에 맡김
    • 오류 메시지는 언제나 최초의 발신지로 전송
  • ICMP 오류 메시지 중요한 사항
    • 오류 메시지를 전달하는 데이터그램에 대한 ICMP 오류 메시지가 생성되지 않음
    • 처음 단편이 아닌 단편화된 데이터그램에 대한 ICMP 오류 메시지가 생성되지 않음
    • 멀티캐스트 주소를 가진 데이터그램에 대한 ICMP 오류 메시지가 생성되지 않음
    • 127.0.0.0, 0.0.0.0과 같은 특별한 주소를 가진 데이터그램에 대한 ICMP 오류 메시지가 생성되지 않음
    • IP 데이터 부분의 처음 8바이트는 포트 번호와 순서 번호에 대한 정보를 제공

오류 메시지를 위한 데이터 필드의 내용

 

오류 보고 메시지

  • 목적지 도달 불가능(Destination Unreachable)
    • 라우터라 데이터그램을 라우팅할 수 없을 때 폐기되고 발신지 호스트에 메시지 전달
    • Code 필드는 폐기 이유를 나타냄
  • 발신지 억제(source quench)
    • 혼잡으로 인하여 폐기
  • 시간 경과(time exceeded)
    • 라우터는 TTL 값이 0인 데이터그램을 받으면 폐기하고 메시지 전달
    • 목적지가 정해진 시간 내에 모든 단편을 받지 못했으면 수신된 단편은 폐기하고 메시지 전달
  • 매개 변수 문제(parameter problem)
    • 데이터그램의 필드에서 불명확하거나 빠진 값을 발견
  • 재지정(redirection)
    • 데이터그램을 잘못된 라우터로 보낼 때 라우팅 테이블을 갱신하기 위한 방법
    • ICMP Redirect 공격에 사용됨

다른 메시지와 달리 타겟 라우터의 IP 주소가 있음

질의 메시지

  • 네트워크 문제를 진단
  • 목적지 노드가 특정한 형식에 따라 응답
  • 현재는 2개만 사용
    • 에코 요청과 응답
    • 타임스탬프 요청과 응답
  • 에코 요청과 응답(Echo Request and Reply)
    • 고장 진단 목적, 노드 간의 통신 확인
    • 데이터에는 가비지 데이터를 채움

  • 타임스탬프 요청과 응답
    • 두 장치의 시계 동기화

 

디버깅 도구

  • ping
  • traceroute(tracert)
    • 패킷이 발신지에서 목적지까지 전달되는 경로 추적
    • 라우터에 도달할 때마다 경로를 순차적으로 반환
    • 5초 이내에 응답을 받지 못하면 "*"을 출력하고 다음 홉을 시도

 

ICMP 패키지

 

ICMP 패킷

Data는 가비지 데이터가 들어감