ICMP란?

Internet Control Message Protocol의 약자. IP 통신에서 일어난 오류나 상태를 알리기 위한 프로토콜. 목적지에 전달할 수 없다(Destination Unreachable), TTL이 0이 되었다(Time Exceeded)는 것 등을 출발지에 통지한다. ping은 에코 요청과 에코 응답으로 상대에게 도달하는지와 RTT를 조사하고, traceroute는 Time Exceeded 통지를 이용해 경로를 조사한다. IPv6에서는 ICMPv6가 이웃 탐색 등도 담당한다.

일본어 명칭: ICMP

ICMP은(는) 네트워크 설계와 운용, 클라우드와 컨테이너의 기초, 네트워크 기초 등 3개 분야의 연습 문제 6개에 나와요.

분야: 네트워크 기초

도전해 보기: ICMP 관련 문제

traceroute에서 출발지로부터 세어 4번째 라우터가 ICMP 시간 초과(Time Exceeded) 메시지를 돌려보내게 하려고 보내는 패킷의 IP 헤더 TTL 값은?

  1. A3
  2. B4
  3. C5
정답과 해설 보기

정답: B. 4

라우터는 패킷을 전달할 때마다 TTL을 1 줄이고, 0이 된 패킷은 버리고 출발지에 ICMP 시간 초과 메시지를 돌려보냅니다. TTL을 4로 하여 보내면 1번째에서 3, 2번째에서 2, 3번째에서 1이 되고 4번째에서 0이 되므로, 4번째 라우터가 메시지를 돌려보냅니다. traceroute는 TTL을 1, 2, 3…으로 하나씩 늘리면서 패킷을 보내고, 돌아온 메시지의 출발지 주소와 시간으로부터 경로상의 라우터와 지연을 차례로 표시합니다. 목적지까지 도달하면 목적지로부터의 응답(ICMP 에코 응답이나 목적지 포트에 도달할 수 없음을 나타내는 메시지)으로 끝을 압니다.

거점 간 VPN 터널을 통해 먼 곳의 웹 서버와 통신하고 있다. TCP 연결은 확립되고 작은 페이지는 표시되지만, 큰 파일의 다운로드만 도중에 멈춰 버린다. 터널 안의 MTU는 1400바이트이며, 서버는 1500바이트의 패킷을 분할 금지(DF 비트를 1)로 하여 보내고 있다. 또한 서버 앞단의 방화벽은 ICMP를 모두 버리는 설정으로 되어 있다. 원인으로 가장 적절한 것은?

  1. ADNS 이름 해석이 실패하고 있기 때문
  2. BTCP의 수신 윈도가 너무 작아서 한 번에 보낼 수 있는 데이터의 양이 부족하기 때문
  3. C너무 큰 패킷을 버린 라우터가 보내는, 분할이 필요함을 알리는 ICMP 메시지가 서버에 도달하지 않아, 서버가 패킷을 작게 할 수 없기 때문
정답과 해설 보기

정답: C. 너무 큰 패킷을 버린 라우터가 보내는, 분할이 필요함을 알리는 ICMP 메시지가 서버에 도달하지 않아, 서버가 패킷을 작게 할 수 없기 때문

경로 MTU 탐색에서는 출발지가 DF 비트를 1로 하여 패킷을 보내고, 도중의 MTU보다 큰 패킷을 버린 라우터가 ICMP 메시지(IPv4에서는 분할 필요(Fragmentation Needed), IPv6에서는 Packet Too Big)로 통과할 수 있는 크기를 알립니다. 이 메시지가 방화벽에서 버려지면 서버는 큰 패킷을 계속 보내고 그것이 매번 버려지므로, 큰 데이터의 전송만 멈춥니다(경로 MTU 블랙홀). 연결 확립이나 작은 응답은 패킷이 1400바이트보다 작으므로 문제없이 도달합니다. 대책은 이 ICMP 메시지를 버리지 않도록 하는 것이나, 터널 입구의 라우터에서 TCP의 MSS를 작게 바꿔 쓰는 것입니다. IPv4와 TCP의 헤더를 각각 20바이트라고 하면, MTU가 1400바이트일 때 MSS는 1400 − 20 − 20 = 1360바이트로 합니다.

해설 속 ICMP

ICMP이(가) 나오는 문제 (6)

  1. traceroute에서 출발지로부터 세어 4번째 라우터가 ICMP 시간 초과(Time Exceeded) 메시지를 돌려보내게 하려고 보내는 패킷의 IP 헤더 TTL 값은?
  2. 거점 간 VPN 터널을 통해 먼 곳의 웹 서버와 통신하고 있다. TCP 연결은 확립되고 작은 페이지는 표시되지만, 큰 파일의 다운로드만 도중에 멈춰 버린다. 터널 안의 MTU는 1400바이트이며, 서버는 1500바이트의 패킷을 분할 금지(DF 비트를 1)로 하여 보내고 있다. 또한 서버 앞단의 방화벽은 ICMP를 모두 버리는 설정으로 되어 있다. 원인으로 가장 적절한 것은?
  3. 어떤 PC에서 IP 주소를 지정한 ping은 인터넷상의 서버까지 도달하지만, 브라우저에서 도메인 이름을 지정하면 '서버를 찾을 수 없음'이라고 표시되어 웹 페이지를 열 수 없다. 먼저 확인해야 할 설정으로 가장 적절한 것은?
  4. 위의 Dockerfile로 만든 이미지 pinger를 docker run pinger example.com으로 시작했다. 컨테이너 안에서 실행되는 명령으로 올바른 것은?
  5. IPv4 헤더의 TTL(Time To Live)의 역할로 올바른 것은?
  6. 어떤 단말에서 웹 서버 198.51.100.80까지 traceroute를 실행했더니, 1~5번째 줄에 192.168.1.1, 10.0.0.1, '* * *'(응답 없음), 203.0.113.1, 198.51.100.80 순으로 표시되었고, 웹 서버도 문제없이 쓸 수 있었다. 3번째 줄의 해석으로 가장 적절한 것은?

이 용어가 포함된 비교

관련 용어

라우터(Router) 패킷(Packet) traceroute IP(인터넷 프로토콜) IPv4 IPv6 VPN(가상 사설망) TCP(전송 제어 프로토콜) MTU(최대 전송 단위) 방화벽(Firewall)

용어집으로 돌아가기