본문 바로가기
IT기술

ICMP(Internet Control Message Protocol)이란 무엇인가

by romydady 2024. 6. 14.

ICMP 개요

컴퓨터 네트워크 세계에서는 장치 간의 원활한 통신을 보장하기 위해 많은 프로토콜이 백그라운드에서 자동으로 작동합니다. 그러한 프로토콜 중 하나가 ICMP(Internet Control Message Protocol)입니다. TCP나 UDP만큼 잘 알려져 있지는 않지만 ICMP는 네트워크의 상태와 효율성을 유지하는 데 중요한 역할을 합니다. 

RFC 792에 정의된 ICMP는 네트워크 장치가 네트워크 통신 문제를 진단하는 데 사용하는 네트워크 계층 프로토콜입니다. 이는 OSI 모델의 네트워크 계층(3계층)에서 작동하는 인터넷 프로토콜 제품군의 필수 부분입니다. ICMP는 오류 보고 및 네트워크 진단을 용이하게 하기 위해 설계된 ARPANET 프로젝트의 일부로 1981년에 처음 도입되었습니다.
ICMP의 주요 목적은 오류를 보고하고 네트워크 운영과 관련된 정보를 제공하는 것입니다. TCP 및 UDP와 같은 다른 프로토콜과 달리 ICMP는 시스템 간에 데이터를 교환하는 데 사용되지 않고 네트워크 트래픽과 관련된 제어 메시지를 전달하는 데 사용됩니다.

icmp

  • ICMP(Internet Control Message Protocol)는 IP 프로토콜에서 오류 메시지를 전송하는 데 사용되는 프로토콜입니다. 
  • ICMP는 네트워크 계층에 속하며 IP 프로토콜과 함께 사용됩니다. 
  • ICMP는 네트워크 상태 보고, 오류 보고, 위험 상황 경보 등의 기능을 수행합니다. 
  • Ping 명령어와 Tracert 명령어가 ICMP를 활용하는 대표적인 예입니다. 
  • ICMP 패킷 헤더는 Type, Code, Checksum, 메시지 필드로 구성되며, 메시지 유형에 따라 다양한 정보를 전달합니다.

ICMP 메시지 유형 및 주요 기능

ICMP 메시지는 오류 메시지와 정보 메시지라는 두 가지 주요 유형으로 분류됩니다. 오류 메시지는 IP 패킷에서 발생한 문제를 보고하는 반면, 정보 메시지는 진단 정보를 제공합니다. 가장 잘 알려진 ICMP 메시지는 에코 요청(Echo Request)과 에코 응답(Echo Reply)입니다. 이러한 메시지는 ping 유틸리티에서 네트워크 장치의 연결 가능성을 테스트하는 데 사용됩니다. 장치가 에코 요청을 받으면 에코 응답으로 응답하여 보낸 사람이 대상 장치에 연결할 수 있는지 확인하고 왕복 시간을 측정할 수 있습니다.

  • Type 0(Echo Reply, 에코 응답): 에코 요청(ping) 메시지에 대한 응답으로 사용됩니다.
  • Type 3(Destination Unreachable, 목적지 도달 불가): 패킷이 의도한 대상(목적지)에 도달할 수 없음을 나타냅니다. 여기에는 네트워크 연결 불가, 호스트 연결 불가, 프로토콜 연결 불가, 포트 연결 불가, 조각화 필요 등 이유를 지정하는 다양한 코드가 포함되어 있지만 DF(조각화 안 함) 비트가 설정되었습니다.
  • Type 5(Redirection, 리디렉션): 라우터가 호스트에게 더 나은 경로를 알리기 위해 사용됩니다. 라우터는 리디렉션 메시지를 사용하여 특정 대상에 대한 더 나은 경로를 호스트에 알립니다. 이 메시지는 패킷이 가장 효율적인 경로를 취하도록 보장하여 라우팅을 최적화합니다.
  • Type 8(Echo Request, 에코 요청): 호스트 연결 가능성을 테스트하는 데 사용됩니다.
  • Type 11(Time Exceed, 시간 초과): 패킷이 TTL(Time-to-Live) 값을 초과했음을 나타냅니다. 패킷의 TTL 값이 대상에 도달하기 전에 0에 도달하면 시간 초과 메시지가 전송됩니다. 이 메시지는 라우팅 루프를 진단하는 데 도움이 되며, Traceroute 유틸리티에서 패킷 경로를 대상으로 매핑하는 데 사용됩니다.
  • ICMP 메시지 유형에는 Echo Request/Reply, Destination Unreachable, Time Exceeded, Parameter Problem 등이 있습니다.
  • Echo Request/Reply 메시지는 Ping 명령어에 사용되어 네트워크 연결 상태를 확인합니다.
  • Destination Unreachable 메시지는 목적지에 도달할 수 없는 경우 전송됩니다.
  • Time Exceeded 메시지는 TTL(Time To Live) 값이 0이 되어 패킷이 폐기된 경우 전송됩니다.
  • Parameter Problem 메시지는 IP 헤더의 문제가 발견된 경우 전송됩니다.
  • 각 메시지 유형에는 세부 코드가 있어 보다 구체적인 정보를 전달합니다.

ICMP의 주요 기능

  • 🔍 네트워크 문제 진단: ICMP는 네트워크 문제를 진단하고 해결하는 데 사용됩니다. Ping 명령어와 Traceroute 명령어가 ICMP를 활용하여 네트워크 연결 상태를 확인할 수 있습니다. 
  • 🔍 오류 메시지 전달: ICMP는 IP 패킷 전송 중 발생한 오류 메시지를 전달합니다. 목적지 도달 불가능, 시간 초과, 파라미터 문제 등의 오류 메시지를 전송할 수 있습니다. 
  • 🔍 라우팅 정보 전달: ICMP는 라우팅 정보를 전달하는 데 사용됩니다. 리다이렉트 메시지를 통해 더 나은 경로를 알려줄 수 있습니다. 
  • 🔍 보안 위협 탐지: ICMP는 네트워크 보안 위협을 탐지하는 데 활용될 수 있습니다. 예를 들어 ICMP 플러드 공격을 탐지할 수 있습니다. 
  • 🔍 경로상 MTU 탐색: 경로 MTU 검색은 두 장치 사이의 경로에서 최대 전송 단위(MTU) 크기를 결정하여 패킷이 조각화(Fragmentaton)되지 않도록 하는 메커니즘입니다. "조각화가 필요하지만 DF 세트" 코드가 포함된 ICMP 대상에 연결할 수 없는 메시지는 이 프로세스에서 중요한 역할을 합니다
  • 🔍 네트워크 성능 모니터링 : ICMP는 대기 시간, 패킷 손실 및 네트워크 경로 특성을 측정하기 위해 네트워크 성능 모니터링에 사용됩니다. ping 및 경로 추적과 같은 도구는 네트워크 상태 및 성능에 대한 귀중한 통찰력을 제공합니다.

또한 ICMP는 수신자와 최초 발신자 간의 소통 역할을 합니다. 데이터가 수신자에게 도달하지 않거나 오류가 발생한 경우 ICMP 메시지를 통해 이를 알릴 수 있습니다. 이와 같이, ICMP는 네트워크 문제 진단, 오류 메시지 전달, 라우팅 정보 전달, 보안 위협 탐지 등의 다양한 기능을 수행하는 중요한 네트워크 프로토콜입니다.

반응형

ICMP의 구조

  • ICMP 메시지는 IP 패킷의 일종으로, IP 헤더와 ICMP 헤더로 구성됩니다. 
  • ICMP 헤더는 다음과 같은 필드로 구성됩니다:

ICMP Architecture

  • Type: ICMP 메시지의 유형을 나타냅니다. 예를 들어 Echo Request, Echo Reply, Destination Unreachable 등이 있습니다. 
  • Code: Type 필드에 대한 추가 정보를 제공합니다. 예를 들어 Destination Unreachable 메시지의 경우 Code 필드로 세부 오류 원인을 나타냅니다. 
  • Checksum: ICMP 헤더와 데이터 부분의 오류 검사를 위한 체크섬 값입니다. 즉, 이를 통해 ICMP의 무결성을 보장합니다.
  • Message(Data): ICMP 메시지의 실제 내용이 포함됩니다. 예를 들어 Echo Request/Reply의 경우 데이터 부분에 사용자가 보낸 데이터가 포함됩니다. 

ICMP 메시지는 IP 헤더와 ICMP 헤더로 구성되며, ICMP 헤더에는 메시지 유형, 코드, 체크섬, 메시지 내용 등이 포함됩니다. 이를 통해 ICMP는 네트워크 상태 보고, 오류 보고, 위험 상황 경보 등의 기능을 수행할 수 있습니다.

ICMP를 이용한 공격

ICMP 기반 공격

ICMP는 유용하지만 다양한 공격에 악용될 수 있습니다.

  • ICMP는 네트워크 상태 정보를 전달하므로 보안 위협의 대상이 될 수 있습니다.
  • Ping of Death: 대상 시스템을 충돌시키거나 불안정하게 만들기 위해 기형 또는 크기가 큰 핑 패킷을 전송하는 공격입니다.
  • 스머프 공격: 스푸핑된 소스 IP와 함께 ICMP 에코 요청을 사용하여 에코 응답으로 대상을 가득 채우는 증폭 공격입니다.
  • ICMP 터널링: ICMP 패킷을 사용하여 다른 유형의 트래픽을 캡슐화하여 잠재적으로 보안 조치를 우회하는 기술입니다.
  • ICMP 패킷을 이용한 DDoS 공격, 포트 스캔, 정보 유출 등의 공격이 가능합니다.

완화 전략

ICMP 기반 공격으로부터 보호하기 위해 네트워크 관리자는 다음과 같은 몇 가지 전략을 구현할 수 있습니다.

  • 속도 제한: 남용을 방지하기 위해 ICMP 메시지의 속도를 제한합니다.
  • 필터링: 방화벽 및 라우터에서 특정 ICMP 메시지 유형을 차단하거나 제한합니다.
  • 침입 감지 시스템(IDS): IDS를 사용하여 비정상적인 ICMP 트래픽 패턴을 모니터링하고 감지합니다.
  • ICMP 트래픽에 대한 모니터링과 필터링이 필요합니다.
  • 방화벽 규칙을 통해 불필요한 ICMP 트래픽을 차단하고, 허용된 ICMP 메시지 유형만 통과시키는 것이 중요합니다.
  • ICMP 기반 공격에 대한 탐지 및 대응 체계를 마련해야 합니다.

 

Ping 명령어를 통한 네트워크 분석 방법

ping 명령어를 통한 네트워크 분석

  • 연결 확인: ping 명령어는 ICMP 프로토콜을 사용하여 특정 호스트로 패킷을 보내고 응답을 받음으로써 네트워크 연결 상태를 확인할 수 있습니다. 
  • 경로 추적: ping 명령어의 TTL(Time To Live) 옵션을 사용하면 패킷이 전달되는 경로를 추적할 수 있습니다. 이를 통해 네트워크 토폴로지를 파악할 수 있습니다. 
  • 성능 분석: ping 명령어의 응답 시간 정보를 통해 네트워크 지연 시간을 확인할 수 있습니다. 이를 통해 네트워크 성능을 분석할 수 있습니다. 

ping 명령어의 다양한 옵션

  • -c: 전송할 패킷 수 지정
  • -D: 타임스탬프 출력
  • -f: Flood 모드 실행
  • -i: 패킷 전송 간격 조절
  • -I: 사용할 네트워크 인터페이스 지정
  • -a: 응답 시 소리 출력
  • -A: 적응형 ping 실행
  • -b: 브로드캐스트 ping 실행
  • -h: 도움말 출력 

라우터/스위치에서 ping 명령을 활용한 네트워크 성능 모니터링

1. 확장 ping 명령 개요

  • 기본 ping 명령은 원격 호스트의 접근성과 응답 시간을 확인하는 데 사용됩니다.
  • 확장 ping 명령은 추가 옵션을 제공하여 더 자세한 네트워크 정보를 얻을 수 있습니다.
  • 주요 옵션으로는 패킷 크기 조절, 전송 속도 제어, 통계 정보 출력 등이 있습니다.

2. 확장 ping을 통한 네트워크 성능 모니터링

  • ping <호스트 주소> size <패킷 크기>: 패킷 크기를 조절하여 네트워크 병목 현상 확인
  • ping <호스트 주소> interval <전송 간격>: 전송 속도를 조절하여 네트워크 부하 확인
  • ping <호스트 주소> count <전송 횟수>: 반복 전송하여 통계 정보 수집
  • ping <호스트 주소> df-bit: 분할 금지 옵션을 사용하여 MTU 문제 확인

3. 확장 ping 결과 분석

  • 패킷 손실률, 응답 시간 등의 통계 정보를 통해 네트워크 성능 파악
  • 특정 구간에서 지연이나 패킷 손실이 발생하는 경우 병목 지점 식별
  • 전송 속도와 패킷 크기 변화에 따른 성능 변화 관찰

시스코 라우터/스위치 기반의 확장 Ping 명령어를 통하 네트워크 성능 분석 방법

1. 프로토콜 [ip]:    사용할 프로토콜을 지정하라는 메시지가 표시됩니다. 기본값은 IP이므로 Enter만 누르면 IP가 선택됩니다.
2. 대상 IP 주소: 192.168.1.1    - ping하려는 대상 IP 주소를 지정합니다. 이 예에서는 '192.168.1.1'로 설정되어 있습니다.
3. 반복 횟수 [5]: 100    - 보낼 Ping 패킷 개수를 설정합니다. 기본값은 5이지만 이 예에서는 보다 철저한 테스트를 위해 100으로 설정되었습니다.
4. 데이터그램 크기 [100]: 1500    - 이는 각 핑 패킷의 크기를 바이트 단위로 정의합니다. 기본값은 100바이트이지만 여기서는 더 큰 패킷 크기를 테스트하기 위해 1500바이트로 설정되었습니다.
5. 시간 초과(초)[2]: 2    - 이는 각 핑 응답에 대한 시간 초과 기간을 초 단위로 설정합니다. 기본값은 2초입니다.
6. 확장 명령 [n]: y   -  이 옵션을 사용하면 y(예)를 입력하여 추가 설정에 액세스할 수 있습니다. 기본적으로 'n'(아니요)으로 설정되어 있습니다.
7. 출발지 주소 또는 인터페이스: 192.168.0.1    - 핑을 보낼 소스 IP 주소나 인터페이스를 지정합니다. 이는 네트워크의 여러 부분에서 연결을 테스트하는 데 유용할 수 있습니다. 이 경우 '192.168.0.1'로 설정됩니다.
8. 서비스 유형 [0]: 0   - IP 헤더에 서비스 품질(QoS) 테스트에 사용할 수 있는 서비스 유형(ToS) 값을 설정합니다. 기본값은 0입니다.
9. IP 헤더에 DF 비트를 설정하시겠습니까? [아니요]: 아니요       - 이 옵션은 IP 헤더에 경로 MTU 검색에 유용한 DF(Don't Fragment) 비트를 설정할지 여부를 결정합니다. 이 예에서는 'n'(아니요)으로 설정되어 있습니다.
10. 응답 데이터를 검증하시겠습니까? [아니요]: 아니요     - 전송된 데이터가 수신된 데이터와 일치하는지 검증할지 여부를 지정합니다. 일반적으로 'n'(아니요)으로 설정됩니다.
11. 데이터 패턴 [0xABCD]:       - 이를 통해 핑 패킷을 채우기 위해 16진수 데이터 패턴을 지정할 수 있습니다. 기본 패턴은 '0xABCD'이지만 필요한 경우 다른 패턴을 지정할 수 있습니다.
12. Loose, Strict, Record, timestamp, Verbose [none] : none       - 이 옵션을 사용하면 추가 라우팅 및 타이밍 정보를 지정할 수 있습니다. 기본 테스트의 경우 이 항목을 비워 둘 수 있습니다.
13. 스위프 크기 범위 [n]: n       - 이 옵션을 사용하면 다양한 패킷 크기를 테스트하여 조각화 없이 전송할 수 있는 최대 크기를 결정할 수 있습니다. 이 예에서는 'n'(아니요)으로 설정되어 있습니다.

 

원하는 옵션을 구성한 후 라우터 또는 스위치는 지정된 매개변수를 기반으로 핑 패킷 전송을 시작합니다. 테스트가 완료되면 결과가 표시됩니다. 다음은 출력 예입니다.

 

 

반응형

댓글