공시 한 판

정보보호론 개념서 · 네트워크 보안 프로토콜과 무선랜

ICMP 프로토콜의 기능

설명 영상 ICMP 프로토콜의 기능 · 3:03

핵심 정리

ICMP(인터넷 제어 메시지 프로토콜)는 IP 패킷이 목적지까지 전달되는 과정에서 생긴 문제를 송신 호스트에 알리고, 네트워크 상태를 진단하기 위해 쓰는 프로토콜이다. 패킷이 전달되지 못했을 때 그 원인을 송신자에게 알리는 것이 ICMP의 기본 역할이다. ICMP는 네트워크 계층(3계층)에서 동작하며 IP에 의존해 작업을 수행한다. 패킷 전달 중 오류가 생기면 ICMP 메시지로 그 원인을 송신 호스트에 알린다. ICMP는 응용 데이터를 실어 나르는 프로토콜이 아니라 오류 보고와 진단을 위한 보조 프로토콜이다. 최종 사용자의 데이터 전송은 TCP나 UDP가 맡고, ICMP는 ping이나 traceroute 같은 몇몇 진단 프로그램을 제외하면 사용자 데이터 교환에 쓰이지 않는다. ICMP 메시지는 UDP 위에 올라가는 것이 아니라 IP 데이터그램에 캡슐화되어 전송된다. 전송 순서로 보면 응용 데이터는 전송 계층을 거쳐 IP 패킷이 되고, ICMP 메시지는 그 IP 패킷 안에 다시 실려 간다. IP 헤더의 프로토콜 번호 1이 ICMP임을 나타내며, IPv4용은 ICMPv4, IPv6용은 ICMPv6로 구분된다. ICMP가 만드는 대표적 효과는 두 가지다. 먼저 TTL 0이면 폐기 후 시간초과 통지 라우터는 TTL이 0이 된 패킷을 폐기하고 송신자에게 시간초과 메시지를 보낸다.TTL이 0이 되면 라우터는 패킷을 폐기하고 ICMP 시간초과(Time Exceeded) 메시지를 송신자에게 보낸다. 다음으로 목적지에 도달하지 못했음을 알리는 메시지는 Destination Unreachable이며, 목적지까지 패킷을 전달할 수 없는 상황을 송신자에게 알리는 용도로 쓰인다. ICMP는 경로에 관한 정보를 담기 때문에 악용의 여지도 있다. ICMP 리다이렉트 공격은 호스트의 경로 정보, 즉 라우팅 테이블을 바꾸는 공격이다. 호스트가 이 메시지의 내용을 그대로 믿고 경로를 고치기 때문에 공격이 성립한다는 점이 핵심이다. 반대로 ICMP 메시지를 막으면 ping이나 traceroute가 응답을 받지 못하므로 진단 결과가 제한된다. 따라서 ICMP는 편리한 진단 수단이면서 동시에 제어 메시지를 얼마나 신뢰할지 따져야 하는 프로토콜이다.

자세히

TTL 만료와 경로 추적

TTL은 패킷이 거칠 수 있는 라우터 수를 제한하려고 IP 헤더에 담긴 필드다. 라우터를 지날 때마다 TTL 감소 라우터를 지날 때마다 값이 줄어들며, 값이 소멸하는 순간 라우터가 보내는 시간초과 메시지가 경로 추적의 근거가 된다. traceroute는 TTL 만료 시 생성되는 ICMP 메시지를 이용해 경로를 구하는 도구로, Linux 등에서 사용된다. 구체적으로는 TTL 값을 1부터 늘려 가며 패킷을 보내고, 각 홉의 라우터가 돌려보내는 응답으로 경로상 라우터와 홉별 응답 시간을 확인한다. 중간 라우터의 입장에서는 패킷을 버리는 것이 처리의 끝이지만, 송신자의 입장에서는 시간초과 메시지가 패킷이 어느 지점에서 사라졌는지 알려 주는 단서가 된다. 이 메시지가 한 홉씩 모이면 경로의 윤곽이 드러난다. 목적지에 도달한 뒤에는 응답의 성격이 달라지므로 경로 추적은 그 지점에서 끝난다. 이 흐름을 이해하면 TTL 폐기와 traceroute를 서로 다른 기능으로 따로 외우지 않아도 된다.

이어지는 내용

로그인하면 하루 5페이지까지 무료로 전체를 읽을 수 있습니다.

앱에서 이 절 읽기