Introduction
IP 프로토콜에는 error-detecting 또는 error-correcting 메커니즘이 없다.
라우터가 최종 목적지에 라우터를 찾을 수 없거나
TTL이 0이어서 라우터가 데이터그램을 폐기해야 한다면?
만약 최종 destination 호스트가 미리 정해진 시간 내에 모든 조각들을 받지 못했기 때문에 데이터그램을 전부 버려야 한다면?
=> ICMP는 위의 두 가지 결점을 보완하도록 설계되었다.
ICMP 자체는 네트워크 계층 프로토콜이다.
그러나 메시지가 데이터 링크 계층으로 직접 전달되지 않음.
- 메시지는 하위 계층을 이동하기 전에 IP 데이터 그램에 캡슐화
Messages
- 오류 보고 메시지
라우터 또는 호스트가 IP 패킷을 처리할 때 발생할 수 있는 문제를 보고
- 쿼리 메시지
라우터나 호스트의 정보 수집
Source quench : 혼잡이 생겨 패킷이 버려지는 경우
Time exceed : TTL이 0이 될 때, 패킷이 다 도착 안 했을때
Parameter problem : header length가 3일때 (5이상이여야함)
Message Format
8바이트 헤더와 가변 크기 데이터 영역을 가지고 있다.
- ICMP type : 메시지의 유형을 정의
- Code field : 특정 메시지 유형에 대한 이유를 지정
- Checksum field
- Data section
- 오류 메시지 : 오류가 발생한 원래 패킷을 찾기 위한 정보를 전달
- 쿼리 메시지 : 쿼리 유형에 따라 추가 정보를 전달
Error Reporting Message
ICMP는 항상 에러메시지를 원래 source에 보낸다.
ICMP 오류 메시지에 대해 중요한 포인트
- ICMP 에러가 다시 났다고 메시지를 보내지 않음.
- 첫번째 fragemented data는 ICMP를 발생시키는데 나머지는 아님.
- 멀티캐스트 주소를 갖고 있는 데이터그램에 에러 메시지를 발생시키지 않음.
- 특별한 주소(127.0.0.0 / 0.0.0.0) 에는 ICMP 에러 메시지를 발생시키지 않음.
에러 메시지는 source 데이터 그램 데이터의 첫 8바이트와 IP 헤더가 포함된 데이터 섹션을 포함한다.
8바이트의 데이터가 포함된 이유는 UDP 및 TCP 프로토콜에 처음 8바이트가 포트 번호(UDP 및 TCP)와 시퀀스 번호(TCP)에 대한 정보를 제공하기 때문
Destination Unreachable
라우터가 데이터그램을 라우팅할 수 없거나, 호스트가 데이터그램을 전달할 수 없는 경우,
데이터 그램은 폐기되고 라우터 또는 호스트는 데이터그램을 보낸 source 호스트에게 에러 메시지를 보냄.
(코드가 16가지)
코드가 2,3 인 메시지는 destination 호스트만 만들 수 있다.
다른 메시지는 라우터만 만들 수 있다.
라우터는 패킷 전송을 방해하는 모든 문제를 탐지할 수 없다.
Source Quench
IP 프로토콜에는 flow control, congestion control 메커니즘이 없다.
라우터나 호스트가 혼잡때문에 데이터그램을 버릴때 source quench 메시지를 보냄.
Time exceeded
- TTL 필드 값이 0 인것
- 설정된 시간 내에 모든 조각들을 수신하지 못할경우(Code = 1)
Parameter problem
라우터나 destination host에 의해 생성된다.
코드 0: 헤더필드에 오류가 있다.
코드 1: 필요한 옵션이 없다.
Redirection
잘못된 곳으로 패킷을 전송하는 호스트에게 정확한 루트를 알려주는 역할
호스트 A는 호스트 B에게 데이터그램을 보내고 싶어한다
라우터 R2는 분명히 가장 효율적인 라우팅 선택이지만, 호스트 A는 라우터 R2를 선택하지 않았다
데이터그램이 R1로 이동합니다
R1은 테이블을 참조한 후 패킷이 R2로 갔어야 했다고 한다
패킷을 R2로 보내고 동시에 호스트 A로 리디렉션 메시지를 보낸다
이제 호스트 A의 라우팅 테이블을 업데이트할 수 있다.
0 : network-specific route
1 : host-specific route
2 : network-specific route based on specific type of service
3 : host-specific route based on specific type of service
Query messages
ICMP는 일부 네트워크 문제를 진단할 수 있다.
rqeuest와 reply로 구성
Echo request and reply
이 메세지 들은 서로 통신이 가능한지 확인할 수 있다.
- IP 프로토콜의 작동을 점검하는데 사용할 수 있음.
- ping 명령어를 통해 호스트에 도달하는지 테스트 할 수 있다.
Time stamp request and reply
- Round-Trip Time 측정, clock 동기화 등에 사용
Original timestamp : 메시지가 요청된 출발 시간
Receive timestamp : 요청된 메세지가 받아들여진 시간
Transmit timestamp : 응답 메세지가 출발한 시간
Round-Trip Time 계산
Sending Time = receive time - original time
Receiving Time = returned time - transmit time
Round-Trip Time = sending time + receiving time
ex)
Original timestamp = 46, Receive timestamp = 59, Transmit timestamp = 60
Time the packet arrived = 67
Sending time = 59 - 46 = 13 ms
Receive time = 67 - 60 = 7 ms
Round-Trip Time = 13 + 7 = 20 ms
Synchronizing clocks (시간 동기화)
Time difference = receive timestamp - (Original timestamp + One way time duration)
One way time duration = Round-Trip Time의 반으로 계산
ex) Time difference = 59 - (46 + 10) = 3
Debugging tool
디버깅을 위해 인터넷에서 사용할 수 있는 도구가 있다.
Ping과 Traceroute 기능이 있다.
'🖥️ Computer Science > Computer Network' 카테고리의 다른 글
Mobile IP (0) | 2024.10.23 |
---|---|
Address Resolution Protocol (ARP) (0) | 2024.10.17 |
Internet protocol Version 4 (IPv4) (0) | 2024.10.10 |
Delivery and forwarding of IP Packets (1) | 2024.10.01 |
IPv4 Address (0) | 2024.09.26 |