ICMP란?
ICMP(Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜)는 네트워크 장치에서 네트워크 통신 문제를 진단하는 데 사용하는 네트워크 계층 프로토콜이다. ICMP가 사용되는 주요 방법은 데이터가 목적지에 잘 도달하는지, 도달 시간이 적절한지를 확인하는 것이다.
ICMP의 용도
ICMP의 주요 용도는 오류보고이다. 두 장치가 인터넷을 통해 연결되면 ICMP를 사용하여 데이터가 의도한 대상에 도달하지 못한 경우, 수신 장치에서 전송장치로 전달할 수 있는 오류를 생성할 수 있다. 다만 데이터에 대한 정보를 전달하기 위한 프로토콜이지만, 데이터 자체를 관리하지는 않는다.
예를 들어 데이터 패킷이 라우터에 비해 너무 큰 경우 라우터에서는 패킷을 삭제하고 ICMP 메시지를 데이터의 원래 소스로 돌려보낸다.
또 다른 일반적인 용도는 네트워크 성능을 평가하기 위한 진단 도구이다. 대표적으로 ping과 traceroute가 있다.
두 가지 모두 ICMP를 사용하여 작동하며, 데이터가 정상적으로 전송되었는가에 대한 정보를 담은 메시지이다.
이 두 가지는 아래에서 다시 다룬다.
ICMP 작동 방식
ICMP는 메시지를 보내기 전에 다른 장치와의 연결을 할 필요가 없다. 인터넷 프로토콜(IP)와 달리 ICMP는 TCP, UDP와 같은 전송 계층 프로토콜과 연결되지 않는다.
예를 들어, TCP로 통신중인 두 장치는 3 way-handshake 과정을 통해 여러 단계를 거친 뒤 데이터를 전송할 수 있다. 반면에 ICMP는 이러한 연결이 선행되지 않고, 메시지가 간단히 전송된다. 또한 장치의 특정 포트(port)를 대상으로 하지 않는다.
ICMP 악용 사례
ICMP 플러드 공격, Ping of Death 공격, SMURF 공격 등을 통해 공격에 사용되기도 한다.
DDos 공격
ICMP를 이용한 DDoS 공격자는 대상 장치가 ICMP 패킷을 모두 처리할 수 없도록 매우 많은 양의 ping을 보내려고 시도한다. 패킷마다 각각 처리 및 응답이 필요하기 때문에 장치의 리소스가 고갈되어 실제 사용자가 장치를 사용할 수 없게 된다.
Ping of Death 공격
PoD 공격은 대상 장치가 처리할 수 없는 패킷에 허용되는 최대 크기보다 큰 ping을 대상 시스템에 보내 시스템이 정지하거나 충돌하게 만드는 공격이다.
데이터 패킷은 타겟에 향하면서 조각화 되지만, 재조립하는 프로세스 중 다시 결합하여 타깃에 도착하면 버퍼 오버플로우가 발생하여 장치가 오작동하게 됩니다.
지금 시점에서는 한물 간 공격이지만, 레거시 장치에서는 여전히 취약할 수 있다고 한다.
ping / traceroute
ping
ping 명령은 원격 호스트, 네트워크의 상태를 판별하고 성능 평가, 테스트, 측정, 관리하는 데에 유용하게 사용된다.
(인터넷 네트워크가 연결되었는지 확인할 수 있다.)
ping은 Packet Internet Groper의 약자로, 다른 호스트에 IP데이터그램이 도달하는지 여부를 확인한다.
즉, 다른 호스트로 패킷이 잘 전송되는지 확인하는 것이다.
기본 명령어
ping {ipv4}
ping 날려보기
구글(8.8.8.8)로 ping을 날려보자.

목적지까지 패킷이 잘 전송되는 것을 알 수 있다.
이제 WIFI를 끄고 같은 명령어를 사용해보자.

위와 같이 패킷이 전송되지 않는다.
traceroute
traceroute 명령어는 패킷이 목적지에 도달할 때까지 거치는 경로(라우터)를 추적하는 데 사용된다.
네트워크 경로에서 각 홉에서 발생하는 지연시간을 확인할 수 있다.
- 패킷이 목적지에 도달할 때까지 거치는 모든 라우터를 나열한다.
- 각 홉에서의 왕복시간을 측정하여 네트워크 지연 시간을 확인할 수 있다.
- 특정 경로에서의 장애 지점을 식별하여 네트워크 문제를 진단할 수 있다.
traceroute {ipv4}

구글(8.8.8.8)로 traceroute 명령을 시도했다.
홉 1~3 . 홉 6~9에서 거치는 IP 주소, 응답 시간을 확인할 수 있다.
4,5에서는 응답이 없다. 일부 라우터가 ICMP 패킷에 응답하지 않도록 설정되어 있기 때문이다.
대상 시스템이 응답하지 않을 경우 (*)과 함께 표시된다.
이 부분의 라우터가 ICMP 패킷에 응답하지 않았다는 뜻이다.
'[ Computer Science ] > Web & Network' 카테고리의 다른 글
[Web/Network] 프록시(Proxy) (0) | 2024.08.17 |
---|---|
[Network] 포트(PORT), 소켓(Socket)이란? (웹소켓 아님 Web Socket != Socket) (0) | 2024.08.07 |
[Network] 방화벽 - 인바운드 & 아웃바운드 규칙이란? (0) | 2024.08.06 |
[Web] CSRF(크로스 사이트 요청 위조) 알아보기, Spring Security CSRF (0) | 2024.07.30 |
[Network] CORS란? Cross-Origin Resource Sharing / CORS 에러, Spring Boot (0) | 2024.07.29 |
ICMP란?
ICMP(Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜)는 네트워크 장치에서 네트워크 통신 문제를 진단하는 데 사용하는 네트워크 계층 프로토콜이다. ICMP가 사용되는 주요 방법은 데이터가 목적지에 잘 도달하는지, 도달 시간이 적절한지를 확인하는 것이다.
ICMP의 용도
ICMP의 주요 용도는 오류보고이다. 두 장치가 인터넷을 통해 연결되면 ICMP를 사용하여 데이터가 의도한 대상에 도달하지 못한 경우, 수신 장치에서 전송장치로 전달할 수 있는 오류를 생성할 수 있다. 다만 데이터에 대한 정보를 전달하기 위한 프로토콜이지만, 데이터 자체를 관리하지는 않는다.
예를 들어 데이터 패킷이 라우터에 비해 너무 큰 경우 라우터에서는 패킷을 삭제하고 ICMP 메시지를 데이터의 원래 소스로 돌려보낸다.
또 다른 일반적인 용도는 네트워크 성능을 평가하기 위한 진단 도구이다. 대표적으로 ping과 traceroute가 있다.
두 가지 모두 ICMP를 사용하여 작동하며, 데이터가 정상적으로 전송되었는가에 대한 정보를 담은 메시지이다.
이 두 가지는 아래에서 다시 다룬다.
ICMP 작동 방식
ICMP는 메시지를 보내기 전에 다른 장치와의 연결을 할 필요가 없다. 인터넷 프로토콜(IP)와 달리 ICMP는 TCP, UDP와 같은 전송 계층 프로토콜과 연결되지 않는다.
예를 들어, TCP로 통신중인 두 장치는 3 way-handshake 과정을 통해 여러 단계를 거친 뒤 데이터를 전송할 수 있다. 반면에 ICMP는 이러한 연결이 선행되지 않고, 메시지가 간단히 전송된다. 또한 장치의 특정 포트(port)를 대상으로 하지 않는다.
ICMP 악용 사례
ICMP 플러드 공격, Ping of Death 공격, SMURF 공격 등을 통해 공격에 사용되기도 한다.
DDos 공격
ICMP를 이용한 DDoS 공격자는 대상 장치가 ICMP 패킷을 모두 처리할 수 없도록 매우 많은 양의 ping을 보내려고 시도한다. 패킷마다 각각 처리 및 응답이 필요하기 때문에 장치의 리소스가 고갈되어 실제 사용자가 장치를 사용할 수 없게 된다.
Ping of Death 공격
PoD 공격은 대상 장치가 처리할 수 없는 패킷에 허용되는 최대 크기보다 큰 ping을 대상 시스템에 보내 시스템이 정지하거나 충돌하게 만드는 공격이다.
데이터 패킷은 타겟에 향하면서 조각화 되지만, 재조립하는 프로세스 중 다시 결합하여 타깃에 도착하면 버퍼 오버플로우가 발생하여 장치가 오작동하게 됩니다.
지금 시점에서는 한물 간 공격이지만, 레거시 장치에서는 여전히 취약할 수 있다고 한다.
ping / traceroute
ping
ping 명령은 원격 호스트, 네트워크의 상태를 판별하고 성능 평가, 테스트, 측정, 관리하는 데에 유용하게 사용된다.
(인터넷 네트워크가 연결되었는지 확인할 수 있다.)
ping은 Packet Internet Groper의 약자로, 다른 호스트에 IP데이터그램이 도달하는지 여부를 확인한다.
즉, 다른 호스트로 패킷이 잘 전송되는지 확인하는 것이다.
기본 명령어
ping {ipv4}
ping 날려보기
구글(8.8.8.8)로 ping을 날려보자.

목적지까지 패킷이 잘 전송되는 것을 알 수 있다.
이제 WIFI를 끄고 같은 명령어를 사용해보자.

위와 같이 패킷이 전송되지 않는다.
traceroute
traceroute 명령어는 패킷이 목적지에 도달할 때까지 거치는 경로(라우터)를 추적하는 데 사용된다.
네트워크 경로에서 각 홉에서 발생하는 지연시간을 확인할 수 있다.
- 패킷이 목적지에 도달할 때까지 거치는 모든 라우터를 나열한다.
- 각 홉에서의 왕복시간을 측정하여 네트워크 지연 시간을 확인할 수 있다.
- 특정 경로에서의 장애 지점을 식별하여 네트워크 문제를 진단할 수 있다.
traceroute {ipv4}

구글(8.8.8.8)로 traceroute 명령을 시도했다.
홉 1~3 . 홉 6~9에서 거치는 IP 주소, 응답 시간을 확인할 수 있다.
4,5에서는 응답이 없다. 일부 라우터가 ICMP 패킷에 응답하지 않도록 설정되어 있기 때문이다.
대상 시스템이 응답하지 않을 경우 (*)과 함께 표시된다.
이 부분의 라우터가 ICMP 패킷에 응답하지 않았다는 뜻이다.
'[ Computer Science ] > Web & Network' 카테고리의 다른 글
[Web/Network] 프록시(Proxy) (0) | 2024.08.17 |
---|---|
[Network] 포트(PORT), 소켓(Socket)이란? (웹소켓 아님 Web Socket != Socket) (0) | 2024.08.07 |
[Network] 방화벽 - 인바운드 & 아웃바운드 규칙이란? (0) | 2024.08.06 |
[Web] CSRF(크로스 사이트 요청 위조) 알아보기, Spring Security CSRF (0) | 2024.07.30 |
[Network] CORS란? Cross-Origin Resource Sharing / CORS 에러, Spring Boot (0) | 2024.07.29 |