728x90
ICMP(Internet Control Message Protocol)
- 오류에 관한 보고 기능 및 네트워크 상태 진단 기능을 통해 IP를 보조하는 기능 수행
- IP 패킷이 정상적으로 목적지에 전달되지 못할 경우
- 원하는 서비스 포트가 존재하지 않는 경우
- 오류 보고 메시지 : 라우터나 호스트에서 IP 패킷을 전달할 때 문제가 발생하였을 경우 사용
- 네트워크 진단 기능 : 라우터나 네트워크에 대한 정보를 얻고자 할 때 사용
- IP 헤더의 프로토콜 필드값을 1로 설정하여 캡슐화
- 메시지 타입 필드 : ICMP 메시지 종류 기술
- 코드 필드 : 메시지 타입에 따라 세분화할 필요 시 사용
- 체크섬 필드 : ICMP 메시지에 대한 체크섬
- 메시지 의존 필드 : 메시지 타입에 따라 추가적인 헤더 정보 포함 가능
- 메시지 정보 필드 : 메시지 타입에 따라 전달될 정보 정해짐
1. 목적지 도달 불가 메시지(Destination Unreachable Message)
- 패킷이 중도 폐기될 때 사용되는 메시지
- 1️⃣ 메시지 타입 필드 값 :
3
- 2️⃣ 코드 필드 : 전송 실패 정보 기록
- 5️⃣ 정보 필드 : 폐기되는 패킷의 헤더와 데이터의 상위 8 바이트 저장
- 패킷 헤더에서 최종 목적지와 패킷이 폐기된 위치를 알 수 있음
2. 시간 초과 메시지(Time Exceeded Message)
- 패킷이 목적지에 전달되기 전에 시간 초과로 폐기되는 경우 사용
- 미리 정해둔 패킷 이동 경로보다 실제 이동 경로가 많을 경우 발생
- 패킷을 단편화하여 보낼 때 재결합 시간(보통 미디어 데이터에서 많이 발생 - 싱크 불일치)
- 시간 초과 메시지는 Traceroute 명령에서 주로 사용
- 💡 **Traceroute 명령 :** 목적지로 이동할 때 패킷이 실제로 사용하는 경로를 검색하는 데 사용
- 1️⃣ 메시지 타입 필드 값 :
11
- 2️⃣ 코드 필드
- TTL 초과 :
0
- 재결합 시간 초과 :
1
- TTL 초과 :
3. 파라미터 문제 메시지(Parameter Problem Message)
- 패킷 헤더 부분에 문제가 발생한 경우 사용되는 메시지
- 1️⃣ 메시지 타입 필드 값 :
12
- 2️⃣ 코드 필드
- 헤더 오류 :
0
- 원하는 필드가 없는 경우 :
1
- 헤더 오류 :
- 4️⃣ 메시지 의존 피드
- 상위 8 비트는 포인터로써 사용되고 패킷 헤더의 어떤 부분에 문제가 발생했는지를 가리킴
4. 송신 억제 메시지(Source Quench)
- 패킷 흐름을 위해 사용되는 메시지 (IP의 흐름 제어 방법)
- 과도한 패킷의 유입으로 라우터에서 패킷을 버려야 할 때 송신 호스트로 패킷의 폐기를 알리기 위해 사용
- 송신 억제 메시지를 수신한 송신 호스트는 패킷 전송 속도를 늦추게 됨
- 1️⃣ 메시지 타입 필드 값 :
4
- 2️⃣ 코드 필드 :
0
5. 재지정 메시지(Redirection Message)
- 라우터가 호스트로부터 수신한 패킷의 송수신 주소를 확인하여 동일 네트워크의 다른 라우터가 라우팅하는 것이 더 효율적이라고 판단할 경우 라우팅 경로 변경을 하도록 해당 메시지 전송
- 라우터는 수신한 패킷을 재지정된 라우터로 직접 전달함(폐기 ❌)
- 1️⃣ 메시지 타입 필드 값 :
5
- 2️⃣ 코드 필드 : 재지정될 라우터의 주소 삽입
- 4️⃣ 메시지 의존 필드 : 새로운 라우터 주소 지정
- 5️⃣ 메시지 정보 필드 : 패킷 헤더와 데이터의 상위 8 바이트 포함
ICMP 메시지를 사용하지 않는 경우
- ICMP 메시지를 라우팅 하거나 전달하는 경우
- 브로드캐스트나 멀티캐스트 패킷인 경우
- 분할된 패킷 중 처음 패킷이 아닌 경우
- 송신 주소가 특별한 주소(
127.0.0.1
또는0.0.0.0
인 경우)
ICMP 쿼리(Query) 메시지
- 오류가 아닌 네트워크 상황을 파악하기 위해 사용하는 메시지
- 기본적인 포맷은 ICMP 오류 메시지와 동일하지만 메시지 의존 필드를 식별자와 순서 번호 필드로 나누어 사용한다.
1. 에코 요청과 응답 메시지(Echo Request and Reply)
- 두 호스트 간 통신이 가능한 지 검사
- 1️⃣ 메시지 타입 필드 값
- 요청 :
8
- 응답 :
0
- 요청 :
- 2️⃣ 코드 필드 :
0
- 5️⃣ 응답 메시지 데이터 필드 : 요청 메시지의 데이터 필드 값이 그대로 복사
2. 타임스탬프 요청과 응답 메시지(Timestamp Request and Reply)
(타임스탬프 : 패킷 전송 시간)
- 1️⃣ 메시지 타입 필드 값
- 요청 :
13
- 응답 :
14
- 요청 :
- 2️⃣ 코드 필드 :
0
- 5️⃣ 응답 메시지 데이터 필드
- 출발 시간(Original timestamp) : 송신할 때의 시간
- 도착 시간(Receive timestamp) : 수신할 때의 시간
- 전송 시간(Transmit timestamp) : 수신 호스트에서 응답 메시지를 전송할 때의 시간
- 💡 이때 측정 시간들은 세계 표준시 기준이다.만약, A와 B의 시간이 같지 않다면 신뢰성이 떨어진다.
3. 주소 마스트 요청과 응답 메시지(Address Mask Request and Reply)
- 호스트가 서브넷 마스크 값을 얻을 때 사용하는 메시지
- 호스트가 아닌 라우터가 응답한다.
- 1️⃣ 메시지 타입 필드 값
- 요청 :
17
- 응답 :
18
- 요청 :
- 2️⃣ 코드 필드 :
0
- 5️⃣ 응답 메시지 데이터 필드 : 서브넷 마스크 값
4. 라우터 요청과 광고 메시지(Router Solicitation and Advertisement)
- 호스트가 네트워크 정보를 알고 싶을 때 (라우터를 알고 싶을 때)
- 라우터는 라우팅 정보를 포함한 라우터 광고 메시지를 방송
728x90
'🖥️ Computer Science > Network' 카테고리의 다른 글
[TCP/IP] 라우팅 (0) | 2022.01.14 |
---|---|
[TCP/IP] 멀티캐스팅 (0) | 2022.01.14 |
[TCP/IP] IP 주소 관리 (0) | 2021.10.08 |
[TCP/IP] IP 패킷 헤더 옵션 (0) | 2021.10.08 |
[TCP/IP] IP 패킷의 구성 (0) | 2021.09.20 |