Skip to main content

Command Palette

Search for a command to run...

네트워크 오류를 조용히 알려주는 프로토콜, Icmp

Updated
2 min read

우리가 인터넷에서 ping 명령어를 사용해 어떤 서버가 살아 있는지 확인할 수 있는 이유는 바로 ICMP (Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜) 덕분이다.

ICMP는 단순해 보이지만, 네트워크의 동작과 장애 감지에 매우 핵심적인 역할을 한다.


ICMP란?

ICMP는 IP 패킷 내부에 포함되어 전송되는 제어 메시지용 프로토콜이다.

OSI 7계층 중 3계층인 네트워크 계층 (Layer 3)에서 동작하며,

오류 메시지 전송, 경로 진단, 상태 보고 등 다양한 제어 기능을 담당한다.


어떤 상황에서 쓰일까?

상황ICMP의 역할
목적지에 도달할 수 없을 때“Destination Unreachable” 메시지 전송
패킷이 중간에 TTL 초과로 버려졌을 때“Time Exceeded” 메시지 전송
연결 가능성 확인 (ping)Echo Request / Echo Reply 사용

대표적인 메시지 타입

타입 번호메시지 종류설명
8Echo Requestping 요청
0Echo Replyping 응답
3Destination Unreachable도달 불가 오류
11Time ExceededTTL 초과 시 발생

ICMP는 포트가 없다. 그럼 어떻게 구분할까?

보통 TCP나 UDP는 포트 번호로 통신 대상 애플리케이션을 구분한다.

그러나 ICMP는 포트를 사용하지 않는다.

ICMP는 IP 패킷 안의 특별한 필드인 Protocol 번호로 식별된다.


IP 헤더의 Protocol 번호란?

IPv4 헤더에는 다음과 같은 필드들이 포함되어 있는데, 그중 하나가 Protocol이다.

필드명크기설명
Protocol8비트IP 패킷의 데이터 부분이 어떤 상위 계층 프로토콜인지 지정

이 값이 다음과 같으면?

의미
1ICMP (Internet Control Message Protocol)
6TCP (Transmission Control Protocol)
17UDP (User Datagram Protocol)

즉, 운영체제는 IP 헤더의 이 필드를 보고 이 패킷은 ICMP구나 하고 인식하게 된다.

포트가 없어도 구분 가능한 이유가 여기에 있다.


실제 네트워크 장비에서는?

방화벽, IDS, 트래픽 필터 등은 이 Protocol 번호를 기반으로 ICMP 트래픽을 감지하거나 차단한다.

예를 들어, ping 요청을 막는 것은 Protocol 번호 1번 패킷을 필터링하는 것과 같다.


요약

  • ICMP는 네트워크 계층의 제어용 프로토콜이며, ping, traceroute 등에 사용됨

  • 오류 상황과 네트워크 진단 메시지를 전달

  • 포트 번호는 없지만, IP 헤더의 Protocol 필드 값 1번으로 식별됨

  • Layer 3(네트워크 계층)에서 동작하며, IP와 함께 인터넷의 기본 구조를 형성함

More from this blog

Tech Lead의 기술 로드맵 작성법: 실전 예시와 함께

"우리 팀 기술 방향이 뭐예요?" Tech Lead가 되면 반드시 듣게 되는 질문입니다. 팀원들은 자신이 어디로 가고 있는지 알고 싶어합니다. 내년에도 이 기술을 쓸 건지, 새로운 걸 배워야 하는지, 이 프로젝트가 끝나면 뭘 하게 되는지. 기술 로드맵은 이 질문에 대한 답입니다. 단순히 "이런 기술 쓸 거예요"가 아니라, 왜 그 방향으로 가는지, 언제쯤 도달할 수 있는지, 각자 무엇을 준비해야 하는지를 보여주는 지도입니다. 이 글에서는 실제로 ...

Jan 10, 20266 min read

Tech Lead의 비용 관점: 돈을 아는 개발자가 되어야 하는 이유

Tech Lead는 단순히 "코드를 잘 짜는 시니어 개발자"가 아닙니다. 기술적 의사결정이 비즈니스에 미치는 영향을 이해하고, 비용 효율적인 선택을 할 수 있어야 합니다. 저는 직장을 다니면서 6년간 친구들과 창업을 준비했습니다. 자본이 넉넉하지 않았기에 모든 기술적 선택에서 "이게 정말 필요한가?", "더 저렴한 방법은 없는가?"를 고민할 수밖에 없었습니다. 그 경험이 지금의 비용 관점을 형성하는 데 큰 영향을 주었습니다. 이 글에서는 Tec...

Jan 10, 20265 min read

HTTP Toolkit으로 Spring Boot 애플리케이션 HTTP 요청 캡처하기

IntelliJ IDEA에서 HTTP Toolkit 프록시 설정하기 Spring Boot 애플리케이션을 개발할 때 외부 API 요청을 모니터링하고 디버깅하기 위해 HTTP Toolkit을 사용하는 경우가 많습니다. 이 글에서는 IntelliJ IDEA에서 HTTP Toolkit으로 프록시 설정하는 방법을 단계별로 설명하겠습니다. 1. HTTP Toolkit 설정 먼저 HTTP Toolkit을 실행하고 프록시 서버를 시작합니다. HTTP Too...

Jul 4, 20253 min read

인공지능 역사 인물 정리: 시대별 발전과 핵심 기여자

인공지능(Artificial Intelligence, AI)은 철학적 질문에서 시작해 알고리즘, 컴퓨팅 기술, 데이터의 발전을 거쳐 오늘날 생성형 AI로 진화했습니다. 이 글은 AI 역사 속 주요 인물을 시대별로 정리하고, 각 인물이 만들어낸 기술적 성과와 개념을 중심으로 소개합니다. 1950년대: 기계 지능 개념의 출발점 앨런 튜링 (Alan Turing, 1912–1954, 영국) 인공지능 개념의 철학적 기초 제시자 주요 이력 (19...

May 22, 20254 min read

📚 퀵소트 (QuickSort) : 원리, 방식 비교, 자바 구현까지

✨ 퀵소트란? 퀵소트(QuickSort)는 분할정복(Divide and Conquer) 전략을 활용한 정렬 알고리즘입니다. 피벗(Pivot)을 기준으로 배열을 분할하고, 각 부분 배열에 대해 재귀적으로 정렬을 수행하여 전체 정렬을 완성합니다. ⚙️ 작동 원리: 분할정복 퀵소트는 다음 세 단계로 구성됩니다. 단계설명 분할피벗을 기준으로 작은 값과 큰 값으로 배열을 나눈다 정복좌우 하위 배열에 대해 재귀적으로 퀵소트를 적용한다 결...

May 20, 20253 min read

Labaratory

19 posts

네트워크 오류를 조용히 알려주는 프로토콜, Icmp