Internet Control Message Protocol (ICMP) Chapter 9 Internet Control Message Protocol (ICMP)
CONTENTS TYPES OF MESSAGES MESSAGE FORMAT ERROR REPORTING QUERY CHECKSUM ICMP PACKAGE
ICMP 프로토콜의 문제점 신뢰성이 없고 비연결형 데이터그램 전달 제공 최선의 노력 전달 서비스 오류 제어와 지원 메커니즘이 없음 오류 보고 및 오류 수정 기능이 없음 호스트와 관리 질의를 위한 메커니즘이 없다 이 문제점을 보완하기 위해 설계
네트워크 계층에서 ICMP 위치
ICMP 패킷의 캡슐화
TYPES OF MESSAGES 9.1
9.1 메시지 유형 오류 보고 메시지 : IP 패킷 처리 도중 발견된 문제를 보고 질의 메시지 : 다른 호스트로부터 특정 정보를 획득하기 위해 사용
9.1 메시지 유형 ICMP 메시지 Category Type Message Error-reporting message 3 Destination unreachable 4 Source quench 11 Time exceeded 12 Parameter problem 5 Redirection Query message 8 or 0 Echo request or reply 13 or 14 Timestamp request and reply 17 or 18 Address mask request and reply 10 or 9 Router solicitation and advertisement
MESSAGE FORMAT 9.2
9.2 메시지 형식 ICMP 메시지 일반적인 형식
ERROR REPORTING 9.3
언제나 오류 메시지를 최초의 발신지로 보고한다. 9.3 오류 보고 ICMP의 주 임무 중 하나 언제나 오류 메시지를 최초의 발신지로 보고한다.
9.3 오류 보고 오류 보고 메시지
9.3 오류 보고 Important points about ICMP error messages: 1. No ICMP error message for a datagram carrying an ICMP error message. 2. No ICMP error message for a fragmented datagram that is not the first fragment. 3. No ICMP error message for a datagram having a multicast address. 4. No ICMP error message for a datagram with a special address such as 127.0.0.0 or 0.0.0.0.
9.3 오류 보고 오류 메시지를 위한 데이터 필드 내용 처음 8 바이트 : TCP와 UDP 포트 번호와 순서 번호
9.3 오류 보고 목적지 도달 불가능(Destination Unreachable) 라우터가 데이터그램을 라우팅할 수 없거나 호스트나 데이터그램을 배달할 수 없을 때 데이터그램은 폐기되고 발신지 호스트에 목적지 도달 불가 메시지 전달 목적지 도달 불가 메시지 형식
9.3 오류 보고 코드 필드 : 데이터그램 폐기 이유 0 : 하드웨어 고장 네트워크에 도달 불가 1 : 하드웨어 고장 호스트에 도달 불가 2 : 프로토콜에 도달 불가 3 : 포트 도달 불가 . 15 : 우선 순위가 낮아서 호스트 도달 불가 책 221, 222 쪽 참조
9.3 오류 보고 코드 2와 3의 Destination-unreachable messages 는 destination host에 의해서만 생성할 수 있다. 그 밖의 destination-unreachable는 라우터에 의해서만 생성할 수 있다.
라우터는 패킷 전달(배달)을 방해하는 모든 문제점을 발견할 수 없다. IP 프로토콜에는 흐름-제어 메커니즘이 없다. 9.3 오류 보고 라우터는 패킷 전달(배달)을 방해하는 모든 문제점을 발견할 수 없다. IP 프로토콜에는 흐름-제어 메커니즘이 없다.
9.3 오류 보고 발신지 억제(source quench) 혼잡으로 인하여 데이터그램 폐기를 발신지에 알림
9.3 오류 보고 발신지 억제 메시지는 데이터 그램이 라우터나 목적지 호스트에서 혼잡으로 인하여 폐기되었음을 발신지에게 알린다. 발신지는 혼잡이 완화될 때 까지 데이터그램을 송신하는 속도를 낮추어야 한다.
혼잡으로 폐기되는 데이터그램마다 발신지 억제 메시지가 보내져야 한다. 9.3 오류 보고 혼잡으로 폐기되는 데이터그램마다 발신지 억제 메시지가 보내져야 한다.
라우터는 TTL 값이 0인 데이터그램을 받을 때마다 데이터그램을 폐기하고 원래의 발신지에게 시간-초과 메시지를 보낸다. 9.3 오류 보고 라우터는 TTL 값이 0인 데이터그램을 받을 때마다 데이터그램을 폐기하고 원래의 발신지에게 시간-초과 메시지를 보낸다.
9.3 오류 보고 최종 목적지가 정해진 시간 내에 모든 단편을 받지 못했으면 이미 수신된 단편은 폐기하고 원래의 발신지로 시간 경과 메시지를 보낸다.
9.3 오류 보고 시간 경과의 경우 코드 0은 수명 필드의 값이 0이 되었음을 알리기 위해 라우터에 의해 사용된다. 코드 1은 모든 단편이 지정된 시간 내에 도착하지 않았음을 알리기 위해 목적지 호스트에 의해 사용된다.
9.3 오류 보고 시간 경과(time exceeded) 메시지 형식 Code 0: Time to live Code 1: Fragmentation
9.3 오류 보고 매개변수 문제 메시지는 라우터나 목적지 호스트에 의해 생성 될 수 있다.
9.3 오류 보고 매개 변수 문제(parameter problem) 메시지 형식 Code 0: Main header problem Code 1: Problem in the option field
9.3 오류 보고 재지정(redirection) 데이터그램을 잘못된 라우터로 보낼때 라우팅 테이블을 갱신하기 위한 방법
9.3 오류 보고 호스트는 일반적으로 작은 라우팅 테이블로 시작하지만 점진적으로 증가되거나 갱신된다. 이러한 일을 수행하는 도구 중의 하나가 재지정 메시지 이다.
9.3 오류 보고 재지정 메시지 형식 Code 0: Network specific Code 1: Host specific Code 2: Network specific (specified service) Code 3: Host specific (specified service)
재지정 메시지는 라우터로부터 같은 네트워크에 있는 호스트로 전달된다. 9.3 오류 보고 재지정 메시지는 라우터로부터 같은 네트워크에 있는 호스트로 전달된다.
QUERY(질의) 9.4
9.4 질의 네트워크 문제 진단 질의 메시지
9.4 질의 에코 요청 메시지는 호스트나 라우터에 의해 보내질 수 있다. 에코 요청 메시지를 받은 호스트나 라우터는 에코 응답 메시지를 보낸다.
에코 요청과 에코 응답 메시지는 네트워크 관리자가 IP 프로토콜의 동작을 검사하기 위하여 사용할 수 있다. 9.4 질의 에코 요청과 에코 응답 메시지는 네트워크 관리자가 IP 프로토콜의 동작을 검사하기 위하여 사용할 수 있다.
9.4 질의 에코 요청과 에코 응답 메시지는 호스트 도달 가능성(reachability)을 검사할 수 있다. 이것은 ping 명령을 수행함으로써 이루어진다.
9.4 질의 에코 요청 및 에코 응답 메시지 Ping command can use theses messages.
9.4 질의 타임스탬프 요청과 응답 두 시스템 간에 IP 데이터그램이 오고 가는데 필요한 왕복 시간 결정 그리니치 표준시 사용 세계 표준시(Universal Time)의 자정으로 부터 시간을 ms 단위로 표현 3개의(original, receive, transmit) 32 비트 필드 사용(0~4, 294, 967, 295 사이 값)
9.4 질의 타임스탬프 요청과 응답 메시지 형식
9.4 질의 동작 과정 발신지는 타임스탬프 요청 메시지 생성 Original timestamp 필드에 출발 시간 값 삽입 나머지 두 필드는 0 목적지는 응답 메시지 생성 Original timestamp 값을 같은 필드에 복사 요청이 수신된 시점의 시간을 receive timestamp 필드에 삽입 응답 메시지가 출발하는 시간을 transmit timestamp 필드에 삽입
9.4 질의 왕복시간 계산 Sending time = value of receive timestamp - value of original timestamp Receiving time = time the packet returned - value of transmit timestamp Round-trip time = sending time + receiving time
9.4 질의 시간 동기화가 되어 있지 않더라도 타임스탬프 요청과 타임스탬프 응답 메시지는 발신지와 목적지 사이의 왕복시간을 측정하기 위해 사용될 수 있다.
9.4 질의 Given the following information: Value of original timestamp: 46 Value of receive timestamp: 59 Value of transmit timestamp: 60 Time the packet arrived: 67
9.4 질의 We can calculate: Sending time = 59 - 46 = 13 milliseconds Receiving time = 67 - 60 = 7 milliseconds Round-trip time = 13 + 7 = 20 milliseconds
정확한 편도 시간을 알 수 있다면 타임스탬프 요청과 타임스탬프 응답 메시지를 사용하여 두 장치의 시계를 동기화 시킬 수 있다. 9.4 질의 정확한 편도 시간을 알 수 있다면 타임스탬프 요청과 타임스탬프 응답 메시지를 사용하여 두 장치의 시계를 동기화 시킬 수 있다.
9.4 질의 Given the actual one-way time, Time difference = receive timestamp - (original timestamp field + one-way time duration) We have: Time difference = 59 - (46 + 10) = 3
9.4 질의 주소 마스크 요청과 응답 디스크가 없는 국이 구동될 때 필요 호스트가 LAN 상의 라우터에 요청 메시지 송신 마스크 요청과 마스크 응답 메시지 형식
9.4 질의 라우터 요청과 광고 다른 네트워크 상의 호스트에 데이터를 보낼 때 자신의 네트워크에 연결된 라우터 주소를 알고자 할 때 호스트는 라우터 요청 메시지를 브로드캐스트 하거나 멀티캐스트 라우터는 광고 메시지를 이용하여 라우팅 정보를 브로드캐스트 라우터 요청 메시지 형식
9.4 질의 라우터 광고 메시지 형식
CHECKSUM 9.5
9.5 검사합 헤더와 데이터를 포함한 전체 메시지에 대해 계산
ICMP PACKAGE 9.6
9.6 ICMP 설계
9.6 ICMP 설계 입력 모듈 IP 계층으로 부터 수신된 ICMP 패킷 처리 Receive: an ICMP packet from the IP layer 1. If(the type is any of the three request types) 1. Create a reply. 2. Send the reply. 2. If(the type is a router solicitation) 1. If(station is a router) 1. Create a router advertisement. 2. Send the advertisement.
9.6 ICMP 설계 3. If(the type is one of the three reply messages or router advertisement) 1. Extract information in the data section of the packet. 2. Deliver extracted information to the process that requested it. 4. If(the type defines a redirection) 1. Modify the routing table. 5. If(the type defines an error message other than a redirection) 1. Inform the appropriate source protocol about the situation. 6. Return.
9.6 ICMP 설계 출력 모듈 상위 계층 또는 IP 프로토콜에 의해 요청된 요청, 청원, 오류 메시지 생성 Receive: a demand 1. If(the demand defines an error message) 1. If(the demand is from IP) 1. If(the demand is forbidden) 1. Return. 2. If(the type defines a redirection message) 1. If(the station is not a router) 1. Return
9.6 ICMP 설계 3. Create the error message using the type, the code, and the IP packet. 2. If(the demand defines a request or solicitation) 1. Create a request or solicitation message. 3. Send the message. 4. Return.