맨위로가기

인터넷 제어 메시지 프로토콜

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

인터넷 제어 메시지 프로토콜(ICMP)은 RFC 792에 정의된 인터넷 프로토콜 모음 중 하나로, IP 동작의 진단, 제어, 오류 응답에 사용된다. ICMP 메시지는 IP 패킷 내에 포함되며, TTL 초과, 목적지 도달 불가 등의 오류를 보고하거나 핑(ping) 유틸리티와 같은 네트워크 도구에 활용된다. ICMP는 네트워크 계층 프로토콜이며, ICMP 헤더는 타입, 코드, 검사 합계, 나머지 헤더로 구성된다. ICMP 메시지 종류에는 에코 요청, 에코 응답, 목적지 도달 불가능, 시간 초과 등이 있으며, 일부 메시지는 사용 중단되었다. ICMP는 확장 개체를 통해 추가 정보를 전달할 수 있으며, 관련 RFC를 통해 자세한 내용을 확인할 수 있다.

더 읽어볼만한 페이지

  • 인터넷 계층 프로토콜 - IPv6
    IPv6는 IPv4 주소 고갈 문제를 해결하고자 개발된 차세대 인터넷 프로토콜로, 128비트 주소 체계를 통해 사실상 무한대에 가까운 IP 주소를 제공하며, 주소 자동 설정, 패킷 처리 효율성 향상, 보안 기능 강화 등의 특징을 갖는다.
  • 인터넷 계층 프로토콜 - IPv4
    IPv4는 인터넷을 가능하게 하는 인터넷 프로토콜 제품군의 핵심 프로토콜로, 32비트 주소 체계를 사용하며 주소 낭비 문제 해결을 위해 CIDR 방식이 도입되었고, IPv4 주소 고갈 문제의 장기적인 해결책으로 IPv6가 개발되었다.
  • 네트워크 계층 프로토콜 - IPv6
    IPv6는 IPv4 주소 고갈 문제를 해결하고자 개발된 차세대 인터넷 프로토콜로, 128비트 주소 체계를 통해 사실상 무한대에 가까운 IP 주소를 제공하며, 주소 자동 설정, 패킷 처리 효율성 향상, 보안 기능 강화 등의 특징을 갖는다.
  • 네트워크 계층 프로토콜 - X.25
    X.25는 CCITT가 1970년대 중반에 개발한 패킷 교환 데이터 통신 표준으로, 가상 회선 서비스 기반의 3계층 구조를 가지며 공중 데이터망의 기반이 되었으나 1990년대 초부터 프레임 릴레이와 TCP/IP로 대체되기 시작하여 현재는 일부 시스템 및 아마추어 무선 분야에서 사용된다.
  • 인터넷 표준 - DNSSEC
    DNSSEC는 DNS의 보안 취약점을 개선하기 위해 도메인 정보에 디지털 서명을 추가하여 응답 레코드의 무결성을 보장하고 DNS 위장 공격을 막는 기술로, RRSIG, DNSKEY 등 다양한 리소스 레코드 유형을 사용하여 인증 체인을 구성하며 공개 키 암호 방식을 활용한다.
  • 인터넷 표준 - IPv6
    IPv6는 IPv4 주소 고갈 문제를 해결하고자 개발된 차세대 인터넷 프로토콜로, 128비트 주소 체계를 통해 사실상 무한대에 가까운 IP 주소를 제공하며, 주소 자동 설정, 패킷 처리 효율성 향상, 보안 기능 강화 등의 특징을 갖는다.
인터넷 제어 메시지 프로토콜
개요
종류네트워크 프로토콜
계층인터넷 계층
기능네트워크 장비 간 제어 메시지 교환
오류 보고
상세 정보
개발DARPA
최초 설계1981년
RFCRFC 792 (ICMPv4)
RFC 4443 (ICMPv6)
OSI 모델 계층네트워크 계층
기술 정보
프로토콜 종류ICMPv4
ICMPv6
사용 목적IPv4 지원 프로토콜
관련 프로토콜IPv4, IPv6
설명네트워크 진단 및 오류 보고에 사용
ping 및 traceroute 같은 네트워크 유틸리티에서 활용
기타
특징연결 지향적이지 않음 (connectionless)
신뢰성 보장 안 함

2. 상세 기술 정보

인터넷 제어 메시지 프로토콜(ICMP)은 RFC 792에서 정의한 인터넷 프로토콜 모음의 핵심적인 부분이다.[1] ICMP 메시지는 주로 IP 통신 과정에서 발생하는 문제를 진단하거나 제어 목적으로 사용되며, 오류가 발생했을 때 그에 대한 응답으로 생성된다(RFC 1122 규정).[1] 발생한 ICMP 오류 메시지는 원래 데이터그램을 보낸 출발지 IP 주소로 전송된다.[1]

예를 들어, IP 데이터그램을 전달하는 모든 네트워크 장비(중간 라우터 등)는 데이터그램 헤더의 타임 투 리브(TTL) 값을 1씩 감소시킨다. 만약 이 TTL 값이 0이 되면 해당 데이터그램은 폐기되고, '시간 초과'(Time Exceeded) ICMP 메시지가 데이터그램의 원래 발신지 IP 주소로 보내진다.[1]

ICMP 메시지는 표준 IP 패킷 안에 포함되어 전송되지만, 일반적인 IP 데이터 처리 과정과는 구분되어 특별하게 취급된다. 많은 경우, ICMP 메시지의 내용을 검사하여, 메시지 발생을 유발한 원본 IP 패킷을 보낸 응용 프로그램에 적절한 오류 정보를 전달해야 한다.

흔히 사용되는 여러 네트워크 유틸리티가 ICMP 메시지를 기반으로 동작한다. 예를 들어, 트레이스라우트(traceroute) 명령어는 특수하게 조작된 TTL 값을 가진 IP 데이터그램을 전송하고, 경로상의 라우터들로부터 반환되는 '시간 초과' ICMP 메시지와 최종 목적지로부터 오는 '목적지 도달 불가'(Destination Unreachable) 메시지를 분석하여 네트워크 경로를 추적한다. 이와 유사하게 핑(ping) 유틸리티는 ICMP의 '에코 요청'(Echo Request) 메시지를 보내고 상대방으로부터 '에코 응답'(Echo Reply) 메시지를 받아 네트워크 연결 상태와 응답 시간을 확인한다.

ICMP는 네트워크 계층 프로토콜로 분류된다. 이는 7계층 OSI 모델에서는 3계층에 해당하며, TCP/IP 모델에서는 인터넷 계층 프로토콜에 속한다. 전송 계층에서 사용하는 TCP 또는 UDP 포트 번호와는 관련이 없으므로, ICMP 패킷에는 포트 번호가 존재하지 않는다.[2][13]

3. ICMP 패킷 구조

ICMP 패킷은 IPv4 패킷 내부에 캡슐화되어 전송된다.[1] 즉, 네트워크를 통해 데이터가 전달될 때 MAC 헤더와 IP 헤더 다음에 ICMP 관련 정보가 위치하게 된다.

```text

+------------+-----------+-------------+---------------+

| MAC 헤더 | IP 헤더 | ICMP 헤더 | ICMP 데이터 |

+------------+-----------+-------------+---------------+

```

ICMP 패킷 자체는 크게 헤더(Header)데이터(Data) 두 부분으로 구성된다. ICMP 헤더는 IPv4 헤더 바로 뒤에 위치하며, IP 프로토콜 번호 '1'로 식별된다. 모든 ICMP 패킷의 헤더는 8 옥텟(바이트)의 고정된 크기를 가지며, 그 뒤에는 가변적인 크기의 데이터 영역이 따른다. 헤더의 처음 4바이트는 모든 ICMP 메시지에서 동일한 형식을 갖지만, 나머지 4바이트는 해당 ICMP 메시지의 종류(타입과 코드)에 따라 내용이 달라진다. 데이터 영역의 구조 역시 ICMP 메시지의 타입에 따라 결정된다.

3. 1. ICMP 헤더

ICMP 헤더는 IPv4 헤더 뒤에 위치하며, IP 프로토콜 번호 목록에서 프로토콜 번호 '1'로 식별된다.[3] 모든 ICMP 패킷은 8바이트 헤더와 가변 크기의 데이터 섹션으로 구성된다. 헤더의 처음 4바이트는 고정된 형식을 가지며, 나머지 4바이트는 ICMP 패킷의 타입과 코드에 따라 내용이 달라진다.[1]

ICMP 헤더 형식
옵셋옥텟0123
옥텟비트012345678910111213141516171819202122232425262728293031
00타입코드체크섬
432나머지 헤더


  • 타입 (Type): 8비트 필드로, ICMP 메시지의 종류를 나타낸다. (제어 메시지 참조)
  • 코드 (Code): 8비트 필드로, ICMP 메시지의 세부 타입을 나타낸다. (제어 메시지 참조)
  • 체크섬 (Checksum): 16비트 필드로, ICMP 헤더와 데이터 전체에 대한 오류 검사를 위한 값이다. 계산 시 이 필드 자체는 0으로 간주하며, 인터넷 체크섬 방식을 사용한다(RFC 1071).
  • 나머지 헤더 (Rest of Header): 32비트 필드로, ICMP 타입과 코드에 따라 내용이 달라진다. 예를 들어, 에코 요청/응답 메시지에서는 식별자와 순서 번호가 이 필드에 포함될 수 있다.


ICMP 데이터 부분의 첫 번째 옥텟은 ICMP 타입 필드 값에 따라 형식이 결정된다. "미사용"으로 표시된 필드는 향후 확장을 위해 예약되어 있으며, 전송 시 0으로 채워야 한다. 체크섬은 ICMP 헤더 시작(타입 필드)부터 데이터 끝까지 16비트 단위로 계산하며, 체크섬 필드 자체는 계산 시 0으로 간주한다. 전체 바이트 수가 홀수이면 마지막에 0 바이트가 있는 것으로 간주하여 계산한다.

일부 ICMP 메시지 타입은 오류를 유발한 원본 데이터그램의 IP 헤더와 데이터 일부(최소 8바이트)를 포함하여 전송한다. 초기 RFC 792에서는 이 데이터 크기를 8바이트로 규정했으나, 이후 RFC 1812(IPv4)와 RFC 4443(IPv6)에서는 최소 MTU 크기(IPv4: 576바이트, IPv6: 1280바이트)까지 포함할 수 있도록 확장되었다. RFC 4884에서 길이 필드가 추가되어, 이 가변 길이 영역의 길이를 32비트 단위로 기술하게 되었다.

ICMP 메시지는 일반적인 IP 헤더를 사용하여 전송된다. 특별히 명시되지 않는 한, ICMP 메시지를 감싸는 IP 헤더의 주요 필드 값은 다음과 같다.

  • 버전 (Version): 4 (IPv4)
  • IHL (Internet Header Length): IP 헤더의 길이를 32비트 워드 단위로 나타낸다.
  • 서비스 유형 (Type of Service): 0
  • 전체 길이 (Total Length): IP 헤더와 데이터(ICMP 메시지 포함)의 전체 길이를 옥텟 단위로 나타낸다.
  • 생존 시간 (Time to Live, TTL): 데이터그램이 네트워크에서 살아남을 수 있는 최대 시간 또는 홉(hop) 수. 라우터를 거칠 때마다 1씩 감소한다.
  • 프로토콜 (Protocol): 1 (ICMP)
  • 헤더 체크섬 (Header Checksum): IP 헤더의 오류 검사를 위한 값.
  • 송신자 주소 (Source Address): ICMP 메시지를 생성한 게이트웨이 또는 호스트IP 주소. 일반적으로 게이트웨이 주소가 된다.
  • 수신자 주소 (Destination Address): ICMP 메시지를 수신할 게이트웨이 또는 호스트의 IP 주소.

3. 2. ICMP 데이터




데이터그램의 데이터 부분의 첫 번째 옥텟은 ICMP 타입 필드이며, 이 필드의 값은 이후 ICMP 알림의 형식을 결정한다. "미사용"으로 표시된 필드는 향후 확장을 위해 예약되어 있으며, 전송 시 0을 넣어야 하지만 수신자는 (체크섬에 포함하는 것을 제외하고) 이러한 필드를 사용해서는 안 된다. 체크섬은 ICMP 헤더의 시작 부분부터 (즉, 타입부터) 데이터의 끝까지를 대상으로 16비트 단위로 계산된다. 체크섬 필드 자체도 계산 대상에 포함되지만, 계산 시에는 0으로 취급한다. 바이트 수가 홀수인 경우, 마지막에 0 바이트가 있는 것으로 계산한다.

또한, 일부 타입에서는 ICMP 알림이 발생한 원인이 된 원본 데이터그램의 앞부분을 복사한다. 이러한 종류의 타입은 다음과 같은 형식을 취한다.

012345678910111213141516171819202122232425262728293031
타입코드체크섬
미사용길이미사용
IP 헤더 + 원본 데이터그램의 앞부분



RFC 792에서는 길이 필드는 미사용이며, 원본 데이터그램의 앞부분은 64 비트 (8 옥텟)로 결정되었다. 이후 RFC 1812 및 RFC 4443에서 MTU의 최소 보장 크기 (IPv4는 576 옥텟, IPv6는 1280 옥텟)까지 확장되었다. RFC 4884에서 길이 필드가 추가되어, 이 가변 길이 영역의 길이를 32비트 단위로 기술하게 되었다.

ICMP 알림은 기본적인 IP 헤더를 사용하여 전송된다. 개별 형식 설명에서 다르게 언급되지 않는 한, ICMP 헤더에 선행하는 IP 헤더 필드의 값은 다음과 같다.

4. ICMP 메시지 종류

제어 메시지는 ''type'' 필드의 값으로 식별된다. ''code'' 필드는 메시지에 대한 추가적인 컨텍스트 정보를 제공한다. 프로토콜이 처음 도입된 이후 일부 제어 메시지는 사용 중단되었다.

주요 제어 메시지[4][5]
TypeCode상태설명
0 – 에코 응답0에코 응답 (ping에 사용됨)
1 및 2할당되지 않음예약됨
3 – 목적지 도달 불가능[6]0목적지 네트워크에 도달할 수 없음
1목적지 호스트에 도달할 수 없음
2목적지 프로토콜에 도달할 수 없음
3목적지 포트에 도달할 수 없음
4조각화가 필요하며, DF 플래그가 설정됨
5소스 경로 실패
6목적지 네트워크 알 수 없음
7목적지 호스트 알 수 없음
8소스 호스트 격리됨
9네트워크가 관리상 금지됨
10호스트가 관리상 금지됨
11ToS에 대해 네트워크에 도달할 수 없음
12ToS에 대해 호스트에 도달할 수 없음
13통신이 관리상 금지됨
14호스트 우선 순위 위반
15우선 순위 차단 적용
4 – 소스 억제0사용 중단소스 억제 (혼잡 제어)
5 – 리다이렉트 메시지0네트워크에 대한 데이터그램 리다이렉트
1호스트에 대한 데이터그램 리다이렉트
2ToS 및 네트워크에 대한 데이터그램 리다이렉트
3ToS 및 호스트에 대한 데이터그램 리다이렉트
6사용 중단대체 호스트 주소
7할당되지 않음예약됨
8 – 에코 요청0에코 요청 (ping에 사용됨)
9 – 라우터 광고0라우터 광고
10 – 라우터 요청0라우터 검색/선택/요청
11 – 시간 초과0전송 중 TTL(Time to live) 만료
1조각 재조립 시간 초과
12 – 매개변수 문제: 잘못된 IP 헤더0포인터가 오류를 나타냄
1필수 옵션 누락
2잘못된 길이
13 – 타임스탬프0타임스탬프
14 – 타임스탬프 응답0타임스탬프 응답
15 – 정보 요청0사용 중단정보 요청
16 – 정보 응답0사용 중단정보 응답
17 – 주소 마스크 요청0사용 중단주소 마스크 요청
18 – 주소 마스크 응답0사용 중단주소 마스크 응답
19예약됨보안을 위해 예약됨
20 ~ 29예약됨강력성 실험을 위해 예약됨
30 – 트레이스 라우트0사용 중단정보 요청 (Traceroute 용도로 사용되었으나 중단됨)
31사용 중단데이터그램 변환 오류
32사용 중단모바일 호스트 리다이렉트
33사용 중단Where-Are-You (원래 IPv6용으로 사용됨)
34사용 중단Here-I-Am (원래 IPv6용으로 사용됨)
35사용 중단모바일 등록 요청
36사용 중단모바일 등록 응답
37사용 중단도메인 이름 요청
38사용 중단도메인 이름 응답
39사용 중단SKIP 알고리즘 검색 프로토콜, 인터넷 프로토콜용 단순 키 관리
40포토리스, 보안 실패
41실험적Seamoby와 같은 실험적인 이동성 프로토콜용 ICMP
42 – 확장 에코 요청0확장 에코 요청
43 – 확장 에코 응답0오류 없음
1쿼리 형식 오류
2해당 인터페이스 없음
3해당 테이블 항목 없음
4여러 인터페이스가 쿼리를 충족
44 ~ 252할당되지 않음예약됨
253실험적RFC3692 스타일 실험 1
254실험적RFC3692 스타일 실험 2
255예약됨예약됨



=== 에코 요청 및 에코 응답 (Type 8, 0) ===

에코 요청/응답 메시지 구조
필드길이 (비트)설명
Type88 (에코 요청) 또는 0 (에코 응답)
Code80
Checksum16헤더 체크섬
식별자16요청과 응답을 일치시키는 데 사용 (예: 프로세스 ID)
시퀀스 번호16동일 식별자로 여러 요청 시 순서 번호
데이터가변 길이요청 시 보낸 데이터 (응답 시 그대로 반환됨)



에코 요청은 Type 8, Code 0으로 전송된다. 식별자와 시퀀스 번호는 발신 측에서 요청과 응답을 구분하기 위해 사용한다. 데이터 필드에는 임의의 데이터를 포함할 수 있다.

목표 호스트는 에코 요청을 받으면, 발신지와 목적지 주소를 바꾸고 Type을 0(에코 응답)으로 변경한 뒤 체크섬을 다시 계산하여 응답한다. 식별자, 시퀀스 번호, 데이터 필드는 요청받은 내용을 그대로 반환한다.

네트워크 진단 도구인 ping은 이 에코 요청과 응답 메시지를 이용하여 네트워크 연결 상태와 응답 시간을 확인한다.

=== 목적지 도달 불가능 (Type 3) ===

목적지 도달 불가능 메시지 구조
필드길이 (비트)설명
Type83 (목적지 도달 불가능)
Code8오류 유형 (아래 표 참조)
Checksum16헤더 체크섬
사용되지 않음 / 길이 / 다음 홉 MTU32Code 4 오류 시 다음 홉 MTU 포함 가능. 길이는 원본 데이터그램 데이터 길이를 32비트 워드 단위로 나타낼 수 있음.
IP 헤더 및 데이터20 - 568 바이트원본 IP 헤더와 데이터의 첫 부분 (최대 548 바이트). 클라이언트가 요청과 응답을 일치시키는 데 사용됨.



''목적지 도달 불가능''(Destination unreachable) 메시지는 호스트 또는 라우터가 어떤 이유로 패킷을 목적지까지 전달할 수 없을 때 발신자에게 알리기 위해 생성된다. 주요 원인은 다음과 같다.



TCP의 경우, 도달 불가능한 포트에 대해서는 이 ICMP 메시지 대신 TCP RST 패킷으로 응답하는 경우가 많다. 이 메시지는 IP 멀티캐스트 전송에 대해서는 일반적으로 생성되지 않는다.

'''Code 필드 값:'''[4]

Code설명
0네트워크 도달 불가능
1호스트 도달 불가능
2프로토콜 도달 불가능 (해당 전송 프로토콜 미지원)
3포트 도달 불가능 (해당 포트 사용 안 함)
4조각화 필요하나 DF 플래그 설정됨 (데이터그램 너무 큼)
5소스 라우팅 실패
6목적지 네트워크 알 수 없음
7목적지 호스트 알 수 없음
8소스 호스트 격리됨 (사용되지 않음)
9목적지 네트워크와의 통신이 관리상 금지됨
10목적지 호스트와의 통신이 관리상 금지됨
11서비스 유형(ToS)에 대해 네트워크 도달 불가능
12서비스 유형(ToS)에 대해 호스트 도달 불가능
13통신이 관리상 금지됨 (예: 방화벽 필터링)
14호스트 우선 순위 위반
15우선 순위 차단 적용 (설정된 우선 순위보다 낮음)



Code 4 메시지는 경로 MTU 검색 과정에서 중요한 역할을 한다. 만약 이 메시지가 중간 방화벽 등에서 차단되면, 발신자는 경로상의 MTU를 알 수 없어 통신에 문제가 발생하는 '경로 MTU 검색 블랙홀' 현상이 발생할 수 있다.

=== 소스 억제 (Type 4, 사용 중단됨) ===

소스 억제 메시지 구조 (사용 중단됨)
필드길이 (비트)설명
Type84
Code80
Checksum16헤더 체크섬
사용되지 않음320으로 설정됨
IP 헤더 및 데이터가변 길이혼잡을 유발한 원본 IP 헤더 및 데이터의 첫 부분



''소스 억제''(Source Quench) 메시지는 네트워크 혼잡이 발생했을 때, 라우터나 목적지 호스트가 발신자에게 데이터 전송 속도를 줄이도록 요청하기 위해 사용되었다. 수신측의 버퍼가 가득 차 패킷을 폐기해야 할 상황에서 이 메시지를 보내 혼잡 제어를 시도했다.

하지만 이 방식은 혼잡 제어에 비효율적이고 불공정하다는 평가를 받아, RFC 1812 (1995년)에서 라우터의 메시지 생성이 중단되었고, RFC 6633 (2012년)에서 메시지 전달 및 관련 동작이 완전히 사용 중단되었다. 현재는 TCP의 혼잡 제어 메커니즘 등이 주로 사용된다.

=== 리다이렉트 (Type 5) ===

ICMPv4 ''Redirect'' 메시지가 작동하는 방식의 예시


리다이렉트 메시지 구조
필드길이 (비트)설명
Type85 (리다이렉트)
Code8리다이렉트 유형 (아래 표 참조)
Checksum16헤더 체크섬
게이트웨이 IP 주소32더 나은 경로를 제공하는 라우터의 IP 주소
IP 헤더 및 데이터가변 길이리다이렉트를 유발한 원본 IP 헤더 및 데이터의 첫 부분



''리다이렉트''(Redirect) 메시지는 라우터가 동일 서브네트워크 상의 호스트에게 더 효율적인 라우팅 경로가 존재함을 알릴 때 사용된다. 예를 들어, 호스트가 기본 게이트웨이 R1을 통해 특정 목적지로 패킷을 보냈는데, R1이 해당 패킷을 같은 네트워크상의 다른 라우터 R2로 전달해야 하고, 호스트가 R2로 직접 패킷을 보내는 것이 더 효율적이라면, R1은 호스트에게 리다이렉트 메시지를 보낸다. 이 메시지에는 더 나은 경로를 제공하는 게이트웨이(R2)의 IP 주소가 포함된다.

메시지를 받은 호스트는 자신의 라우팅 테이블을 업데이트하여 이후 해당 목적지로 가는 패킷을 R2로 직접 보내게 된다. R1은 리다이렉트 메시지를 보낸 후에도 원래 수신했던 패킷은 정상적으로 목적지로 전달한다.[7]

단, IP 패킷에 소스 라우팅 옵션이 포함된 경우에는 리다이렉트 메시지가 생성되지 않는다. 또한 RFC 1122에 따라 이 메시지는 라우터만 생성해야 하며, 일반 호스트는 생성하지 않아야 한다.

'''Code 필드 값:'''

Code설명
0네트워크 전체에 대한 리다이렉트
1특정 호스트에 대한 리다이렉트
2서비스 유형(ToS) 및 네트워크에 대한 리다이렉트
3서비스 유형(ToS) 및 호스트에 대한 리다이렉트



=== 라우터 광고 및 요청 (Type 9, 10) ===

라우터 광고 메시지 구조 (Type 9)
필드길이 (비트)설명
Type89 (라우터 광고)
Code80
Checksum16헤더 체크섬
라우터 주소 수8광고에 포함된 라우터 주소의 개수
주소 항목 크기8각 라우터 주소 항목의 크기 (32비트 워드 단위, 보통 2)
유효 기간16광고 정보의 유효 시간 (초 단위)
라우터 주소 132라우터의 IP 주소
선호도 수준 132해당 라우터의 선호도 (높을수록 우선)
라우터 주소 232(선택 사항) 다른 라우터 주소
선호도 수준 232(선택 사항) 해당 라우터의 선호도
......



라우터 요청 메시지 구조 (Type 10)
필드길이 (비트)설명
Type810 (라우터 요청)
Code80
Checksum16헤더 체크섬
예약됨320으로 설정됨



라우터 광고(Router Advertisement, Type 9) 및 라우터 요청(Router Solicitation, Type 10) 메시지는 RFC 1256에서 정의되었으며, 호스트가 동적으로 기본 게이트웨이를 발견하는 데 사용된다.

라우터는 주기적으로 또는 라우터 요청 메시지를 수신했을 때 라우터 광고 메시지를 브로드캐스트 또는 멀티캐스트하여 자신의 IP 주소와 선호도 수준, 정보의 유효 기간 등을 알린다. 호스트는 이 정보를 바탕으로 사용할 기본 게이트웨이를 선택하거나 업데이트한다.

호스트는 부팅 시 또는 네트워크 인터페이스 활성화 시 라우터 요청 메시지를 보내 즉시 라우터 광고를 수신할 수 있다. 이 메커니즘은 DHCP와 함께 사용되거나 대체하는 방식으로 라우터 정보를 제공할 수 있다.

=== 시간 초과 (Type 11) ===

시간 초과 메시지 구조
필드길이 (비트)설명
Type811 (시간 초과)
Code8시간 초과 원인 (아래 표 참조)
Checksum16헤더 체크섬
사용되지 않음320으로 설정됨
IP 헤더 및 데이터가변 길이시간 초과를 유발한 원본 IP 헤더 및 데이터의 첫 부분



''시간 초과''(Time Exceeded) 메시지는 주로 두 가지 상황에서 생성된다.

1. 전송 중 TTL 만료 (Code 0): IP 패킷 헤더의 TTL(Time To Live) 필드 값이 라우터를 거칠 때마다 1씩 감소하는데, 이 값이 0이 되면 해당 라우터는 패킷을 폐기하고 발신자에게 시간 초과 메시지를 보낸다. 이는 패킷이 네트워크에서 무한히 순환하는 것을 방지하기 위한 메커니즘이다.

2. 조각 재조립 시간 초과 (Code 1): 조각화된 패킷의 모든 조각들이 목적지 호스트에 제한 시간 내에 도착하지 못하면, 목적지 호스트는 이미 수신한 조각들을 폐기하고 발신자에게 시간 초과 메시지를 보낸다.

네트워크 진단 도구인 traceroute는 TTL 값을 1부터 점차 증가시키면서 패킷을 보내고, 각 중간 라우터로부터 TTL 만료로 인한 시간 초과(Type 11, Code 0) 메시지를 받아 경로를 추적하는 데 이 메시지를 활용한다.

'''Code 필드 값:'''

Code설명
0전송 중 생존 시간(TTL) 초과.
1조각 재조립 시간 초과.



=== 매개변수 문제 (Type 12) ===

매개변수 문제 메시지 구조
필드길이 (비트)설명
Type812 (매개변수 문제)
Code8문제 유형 (아래 표 참조)
Checksum16헤더 체크섬
포인터8문제가 발생한 옥텟의 위치 (문제가 특정 옥텟과 관련 없는 경우 0)
사용되지 않음240으로 설정됨
IP 헤더 및 데이터가변 길이문제를 유발한 원본 IP 헤더 및 데이터의 첫 부분



''매개변수 문제''(Parameter Problem) 메시지는 라우터나 호스트가 IP 헤더 또는 옵션 처리 중 오류를 발견하여 해당 패킷을 폐기했을 때 발신자에게 알리기 위해 생성된다. '포인터' 필드는 문제가 발생한 옥텟(바이트)의 위치를 가리킨다. 만약 포인터 필드가 사용되지 않는다면(Code 1, 2), 값은 0으로 설정될 수 있다.

'''Code 필드 값:'''

Code설명
0포인터가 오류가 있는 옥텟을 가리킴 (예: 잘못된 옵션)
1필수 옵션 누락 (현재 사용되지 않음)
2잘못된 길이 (IP 헤더 또는 옵션 길이 오류)



=== 타임스탬프 및 타임스탬프 응답 (Type 13, 14) ===

타임스탬프 / 타임스탬프 응답 메시지 구조
필드길이 (비트)설명
Type813 (타임스탬프 요청) 또는 14 (타임스탬프 응답)
Code80
Checksum16헤더 체크섬
식별자16요청과 응답을 일치시키는 데 사용
시퀀스 번호16동일 식별자로 여러 요청 시 순서 번호
발신 타임스탬프32요청 메시지가 발신되기 직전의 시간
수신 타임스탬프32요청 메시지가 수신된 시간 (응답 시 설정됨)
전송 타임스탬프32응답 메시지가 발신되기 직전의 시간 (응답 시 설정됨)



''타임스탬프''(Timestamp, Type 13) 요청과 ''타임스탬프 응답''(Timestamp Reply, Type 14) 메시지는 두 호스트 간의 왕복 시간(RTT)을 측정하거나 대략적인 시간 동기화를 위해 사용될 수 있었다.

발신자는 요청 메시지에 식별자, 시퀀스 번호와 함께 '발신 타임스탬프'를 기록하여 보낸다. 수신자는 요청을 받으면 '수신 타임스탬프'와 응답을 보내기 직전의 '전송 타임스탬프'를 기록하고, 요청받은 식별자, 시퀀스 번호, 발신 타임스탬프를 포함하여 응답한다. 모든 타임스탬프는 협정 세계시(UTC) 자정 이후 경과된 밀리초 단위로 표시되며, 날짜 정보는 포함하지 않는다.

발신자는 응답을 받은 시간과 메시지 내의 타임스탬프들을 비교하여 RTT 및 네트워크 지연을 추정할 수 있다. 하지만 이 기능은 정확도가 낮고 다른 프로토콜로 대체되었기 때문에 현재는 거의 사용되지 않는다. 특히, 더 정밀한 시간 동기화를 위해서는 네트워크 타임 프로토콜(NTP)이나 정밀 시간 프로토콜(PTP)이 사용된다.[8]

=== 주소 마스크 요청 및 응답 (Type 17, 18, 사용 중단됨) ===

주소 마스크 요청 / 응답 메시지 구조 (사용 중단됨)
필드길이 (비트)설명
Type817 (주소 마스크 요청) 또는 18 (주소 마스크 응답)
Code80
Checksum16헤더 체크섬
식별자16요청과 응답을 일치시키는 데 사용
시퀀스 번호16동일 식별자로 여러 요청 시 순서 번호
주소 마스크32요청 시 0, 응답 시 해당 네트워크의 서브넷 마스크



''주소 마스크 요청''(Address Mask Request, Type 17)과 ''주소 마스크 응답''(Address Mask Reply, Type 18) 메시지는 RFC 950에서 정의되었으며, 호스트가 자신의 서브넷 마스크를 동적으로 알아내기 위해 사용되었다. 호스트는 이 요청을 라우터에게 보내고, 라우터는 응답 메시지에 해당 네트워크의 서브넷 마스크를 담아 회신했다.

하지만 이 기능은 BOOTP나 DHCP와 같은 더 강력하고 널리 사용되는 메커니즘으로 대체되었다. 또한, 이 메시지는 네트워크 정보를 수집하려는 공격자에 의해 악용될 수 있는 보안 취약점이 있어, 현재는 거의 사용되지 않으며 대부분의 시스템에서 비활성화되어 있다.[9] 따라서 이 메시지 타입들은 사실상 사용 중단(obsolete)된 상태이다.

=== 기타 메시지 ===

5. ICMP 확장

ICMP 메시지는 추가 정보를 포함하도록 확장될 수 있다.

이 정보는 하나 이상의 확장 개체(Extension Objects)에 의해 전달되며, 확장 개체 앞에는 ICMP 확장 헤더가 위치한다.

ICMP 확장 헤더
비트0–34–1516–31
0버전 (4)예약됨 (12)체크섬 (16)
32+확장 개체 ...



확장 개체는 다음과 같은 일반적인 구조를 가진다.

확장 개체 헤더
비트0–1516–2324–31
0길이 (16)클래스 번호 (8)C-타입 (8)
32+(개체 페이로드) ...

6. 관련 RFC

참조

[1] 서적 Data Communications And Networking https://archive.org/[...] McGraw-Hill
[2] 웹사이트 The OSI Model's Seven Layers Defined and Functions Explained https://support.micr[...] 2014-12-28
[3] 웹사이트 Protocol Numbers https://www.iana.org[...] Internet Assigned Numbers Authority 2011-06-23
[4] 웹사이트 IANA ICMP Parameters https://www.iana.org[...] Iana.org 2012-09-21
[5] 서적 Computer Networking: A Top-Down Approach https://books.google[...] Addison-Wesley 2006
[6] 웹사이트 Internet Control Message Protocol (ICMP) Parameters https://www.iana.org[...] 2023-09-13
[7] 웹사이트 When Are ICMP Redirects Sent? http://www.cisco.com[...] Cisco Systems 2008-06-28
[8] 표준 Network Time Protocol (NTP) 1985-09-00
[9] 웹사이트 Cisco IOS IP Command Reference, Volume 1 of 4: Addressing and Services, Release 12.3 - IP Addressing and Services Commands: ip mask-reply through ip web-cache http://www.cisco.com[...] Cisco Systems 2013-01-07
[10] 문서 traceroute는 ICMP가 아닌 UDP를 사용한 구현도 있다.
[11] 웹사이트 IANA ICMP Parameters http://www.iana.org/[...] Iana.org 2012-09-21
[12] 서적 Computer Networking - A Top-Down Approach
[13] 웹인용 The OSI Model's Seven Layers Defined and Functions Explained https://support.micr[...] 2014-12-28



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com