지니의 따듯한 공간

ICMP 본문

카테고리 없음

ICMP

Jineer 2021. 1. 6. 18:26

ICMP [ internet control message protocol ] 
ping : echo reply (반향)  
- 인터넷 제어 메시지 프로토콜 
- IP의 단점을 보완하기 위해 설계 
   : 오류 보고와 오류 수정 기능이 없음 
   : 호스트와 관리 조회를 위한 매커니즘이 없음 
- 네트워크 계층 프로토콜 
- 하위계층으로 가기 전에 IP데이터 그램에 캡슐화 

-프로토콜의 문제점(ICMP 사용 목적) 
- 경로설정 루프의 오류 때문에 데이터그램의 활동시간 ( TTL )이 만료되었을 때 
- 데이터그램 단편이 없어져서 데이터그램이 완전히 전달되지 않을 때 
- 프로토콜, 서비스 또는 호스트를 사용할 수 없을 때 
- 단편화가 허용되지 않고 데이터그램 크기가 중간 네트워크에 비해 너무 커서 데이터그램을 발송할 수 없을 때 
- 라우터에서 네트워크 통신량의 집중으로 라우터가 수신 데이터그램을 처리할 수 없을 때 

flow control

인접한 호스트 - LLC

종단 - tcp  / icmp?

 

ICMP 메시지의 캡슐화

 

- 라우터를 거쳐 운반되므로 IP 데이터그램에 캡슐화

- IP 헤더의 Protocol 필드의 값 -> 0x01 (ICMP)

ICMP 메세지 2가지 유형

1. 오류 보고 (ERROR-Reporting) 메시지

2. 조회 (Quert) 메시지

 

메시지 유형

 3번  Destination unreachable : 목적지 도달 불가능    //라우터 혹은 호스트에서 발생

 4번  Source quench : 발신지 억제                 

11번 Time exceeded : 시간 초과 (TTL, 단편화된 패킷이 도착했는데 나머지를 기다린다. 정해진 시간이 지나면 다시보내)

12번 Parameter problem : Header 오류, 헤더쳌썸 등을 해서.. 

              -> // point 1 byte 맨 앞에 1byte를 point로 사용, 어디서 오류났는지 확인

 5번  Redirection : '이 경로가 더 나을것 같다.' 라고 라우터에게 알려준다.

             -> // 정적 라우팅에서 경로가 정확하지 않을 수 있기때문에 경로를 개선 하기 위한 메시지

조회 메시지

Echo reply : Ping !

Echo request : Ping 응답 !

Timestamp request :

Timestamp reply :

Address mask request : 서브넷 마스크?!

Address mask reply : !

Router advertisement :  라우터 -> 라우터야 살아있나?

Router solicitation : 응 살아있다~

 

 

ICMP 메시지는 8Byte의 헤더 가변 길이의 데이터 부분을 가지고 있다.

헤더의 일반 형식은 각 메시지 별로 다르지만 처음 4Byte는 전부 공통

Code 필드는 특정 메시지 유형의 이유 지정

공통 힐드는 검사합 필드

헤더의 나머지 부분은 각 메시지 별로 다르다.

데이터 부분

 - 오류 메시지 : 오류를 발생시킨 원래 패킷을 찾기 위한 정보 전달

 - 조회 메시지 : 조회의 유형에 기초한 추가 정보 전달

 

ICMP 메시지의 형식

Type (1byte)

  - ICMP 서비스의 유형

Code (1byte)

  - 특성 메시지의 유형을 세분화 (소분류)

Checksum (2byte)

  - 메시지 오류 검사

Data(잘못된 IP헤더 + 데이터 8 bytes)

  - 문제를 일으킨 데이터그램의 IP헤더와 데이터 64bit를 포함

 

오류 보고

ICMP의 주 임무는 오류를 보고하는 것

IP는 신뢰성이 없는 프로토콜

ICMP는 IP의 단점을 보완하기 위하여 설계

ICMP는 오류를 수정이 아니라 보고만 한다.

오류 수정은 상위 계층 프로토콜에 맡김 

오류 메시지는 언제나 최초의 발신지로 전송

  -데이터그램으로부터 알 수 있는 경로에 대한 정보는 발신지와 목적지뿐이기 때문

 

ICMP는 발신지 ip 주소를 사용하여 오류 메시지를 데이터 그램의 발신지로 전송

 

다섯가지의 오류 유형이 처리

 - 목적지 도달 불가능    [ Destination unreachable ]

 - 발신지 억제             [ Source quench ]

 - 시간 경과                [ Time exceeded ]

 - 매개변수 문제          [ Parameter problem ]

 - 재지정                   [ Redirection ]

 

ICMP 오류 메시지에 대한 중요한 사항

- 모든 IP구현은 ICMP를 구현해야 한다.

- ICMP 오류 메시지를 전달하는 데이터그램에 대해 ICMP 오류 메시지가 생성되지 않음

- 처음 단편이 아닌 단편화된 데이터그램에 대해서는 ICMP 오류 메시지가 생성되지 않음

- 멀티캐스트 주소를 가진 데이터그램에 대해서는 ICMP 오류 메세지가 생성되지 않음

       -> 유니캐스트에 대해서만 대응 및 발생한다.

- 127.0.0.0 이나 0.0.0.0 과 같은 특별한 주소를 가진 데이터그램에 대해서는 오류 메시지가 생성되지 않음

       -> 정상적인 IP 주소에 대해서만 발생한다.

 

-모든 오류메세지의 데이터 부분에는 데이터그램의 IP 헤더와 데이터그램의 데이터 중 처음 8Byte가 포함 되어 있다.

- 원래의 데이터그램

 

오류 메시지를 위한 데이터 필드의 내용

송신지 ip 주소 + icmp헤더 + icmp 페이로드 ( 문제가 된 ip의 헤더 + 8byte) 

 

 

1. 목적지 도달 불가 [ Destination Unreachable ] 메시지

 

코드 0 : 하드웨어 고장 등의 이유로 네트워크에 도달 불가 

             - 라우터에 의해서만 생성될 수 있다.

코드 1 : 호스트에 도달 불가

             - 하드웨어 고장 때문일 수 있음

             - 메시지는 라우터에 의해서만 생성될 수 있음

코드 2 : 프로토콜에 도달 불가

            - IP 데이터그램은 UDP, TCP나 OSPF 등과 같은 상위 계층에 속하는 데이터를 전달할 수 있음

            - 목적지 호스트가 TCP와 같은 프로토콜에 배달되어야 할 데이터그램을 수신했으나 지금 시점에서

코드 3 : 포트에 도달 불가

            - 데이터그램이 향하고 있는 응용 프로그램(프로세스)이 지금 이 시점에 수행되고 있지 않음

코드 4 : 단편화가 필요하나 데이터그램의 DF (do not fragment) 필드가 설정되어 있음

            - 데이터그램의 송신자가 데이터그램은 단편화가 되면 안된다고 명시하였으나 단편화를 하지 않고는 라우팅 불가

코드 5 : 발신지 라우팅이 수행될 수 없음

            - 발신지 라우팅 옵션에 정의된 한 개 이상의 라우터 방문 불가

코드 6 : 목적지 네트워크가 알려져 있지 않음

            - 코드 0에서 라우터가 목적지 네트워크의 존재를 알지만 현재 시점에 도달할 수 없음

            - 라우터가 목적지 네트워크에 대해 정보를 가지고 있지 않음

코드 7 : 목적지 호스트가 알려져 있지 않음

           - 코드 1에서는 라우터가 목적지 호스트의 존재를 알지만 현재 시점에 도달할 수 없음

           - 라우터가 목적지 호스트의 존재에 대해 알고 있지 않음

코드 8 : 발신지 호스트가 고립되어 있음

코드 9 : 목적지 네트워크와 통신이 관리상의 이유로 금지되어 있음

~ 코드 15 까지 있음..

 

2. 발신지 억제 (Source Quench)     '유형 4'

 - IP 프로토콜은 비연결형 프로토콜

 - 데이터그램을 생성하는 발신지와 이를 전달하는 라우터 그리고 이것을 처리하는 목적지 사이에는 통신이 없음

 - 통신 부재로 인한 결과 중의 하나가 흐름 제어 부재

 - IP는 프로토콜에 내장된 흐름 제어 메커니즘을 가지고 있지 않음

 - 프름제어의 부재로 인하여 IP의 수행 중 혼잡(congestion) 이라는 심각한 문제를 유발 가능

 

발신지 호스트는 라우터나 목적지 호스트가 과대한 양의 데이터그램으로 압도되고 있다는 것을 알 수 없음

발신지 호스트는 라우터가 전달할 수 있는 수준 이상으로 또는 목적지 호스트가 처리할 수 있는 수준 이상으로 자신이 너무 빨리 데이터그램을 보내고 있다는 것을 알 수 없음.

 

icmp의 발신지 억제 (source quench) 

 

발신지 억제 추가 설명

  - 혼잡은 일-대-일 또는 다-대-일 통신에서 발생 가능

 : 일 - 대 - 일 통신

   - 하나의 고속 호스트가 라우터나 목적지 호스트보다 빨리 데이터그램을 생성 가능

   - 발신지 억제 메시지는 매우 도움이 될 수 있음

   - 이 메시지들은 발신지에게 속도를 낮출 것을 요청

 

 

: 다 - 대 - 일 통신

 

 

3. 시간경과 ( Tume Exceeded )

 - 패킷을 수신할 다음 홉(라우터)을 찾기 위해 라우터는 라우팅 테이블을 사용

 - 한 개 또는 그 이상의 라우팅 테이블에 오류가 있다면 패킷은 루프 또는 사이클을 지날 수 있음

 - TTL 값이 0인 데이터그램을 받으면 라우터는 데이터그램을 폐기 -> 시간 경과 메시지를 원 발신지에 송신해야함

 - 한 개의 메시지에 속하는 단편(Fragmentation)들이 정해진 시간 내에 목적지 호스트에 전부 도착하지 않은 경우

 ( 첫 번째 단편 도착 -> 목적지 호스트는 타이머 시작 / 타이머가 만료 되었는데도, 모든 단편이 도착하지 않으면 원 발신지에 메시지 전송)

시간 경과 메시지 형식

 - 코드 0 : 수명 필드의 값이 0이 되어 데이터그램을 폐기하는 경우 사용

 - 코드 1 : 단편의 일부가 정해진 시간 내에 도착하지 않아서 이미 도착한 단편을 폐기하는 경우 사용

 

 

 

 

4. 매개변수 문제  (Parameter problem)

 - 데이터그램의 헤더 부분에 불명확한 점이 있으면 데이터그램이 인터넷을 통하여 전달되는 동안 문제를 발생시킬 수 있음

 - 만약 라우터나 목적지 호스트가 데이터그램의 필드에서 불명확하거나 빠진 값을 발견하게 되면 데이터그램을 
폐기하고 매개변수 문제(Parameter Problem) 메시지를 발신지에 전송

 

매개변수 문제 메시지 형식

 

 - 코드 필드는 왜 데이터그램을 폐기하였고 정확히 무엇이 실패하였는지를 나타냄

   - 코드 0 : 헤더 필드 중에서 불명료하거나 빠진 것이 있음

      - 포인터 필드의 값은 문제가 있는 바이트를 가리킴

      - 값이 0 이라면 첫번째 바이트가 틀렸다는 것

 

  - 코드 1 :  옵션의 요구되는 부분이 빠졌다는 것

      - 포인터는 사용되지 않음

 

5. 재지정 (Redirection)

 - 호스트에 라우팅 프로토콜 갱신 프로세스 요구

 

재지정 개념

 

 

 

재지정, 매개변수 문제는 맨 처음 

 

 

 

 

 

방향 재지정 메시지 형식

 

Comments