본문 바로가기
네트워크/컴퓨터 네트워크 수업

5-2-(1). Internet Control Message Protocol(ICMP)

by dustnn 2024. 12. 6.

5-1. Traditional routing algorithms(per-router control)

(1) Routing algorithm classification

- Link state routing algorithm: Dijkstra's algorithm(OSPF)

- Distance vector algorithm: Bellman-Ford algorithm

- Hierarchical routing(BGP)

(2) Routing protocols

- RIP, OSPF/BGP

 

5-2. SDN controllers(logically centralized control)

ㄴ OpenFlow, ODL, ONOS controllers

(1) Network management, configuration

- Internet Control Message Protocol(ICMP)

- SNMP, YANG/NETCONF


ICMP

 

"ICMP(Internet Control Message Protocol)"

: traditional network 안에 있는 control protocol

 

 

1. host와 router 간 network-level info 주고받기 위해 사용

- Error reporting(주된 목적)

: Type 3들이 모두 ICMP와 관련된 error reporting msg들이다.

* error = unreachable host, network, port, protocol 등..

** unreachable host: 목적지 host가 갑자기 다운됐을 때

** unreachable port: 목적지 host까지 왔는데(protocol 자체는 존재) 해당 app의 port가 열려 있지 않을 때

** unreachable protocol: protocol이 존재하지 않아 목적지까지 갈 수조차 없음

** network unknown: 그런 network는 나의 forwarding table entry에는 없음

** host unknown: 그런 host 없어

 

- echo request/reply

: 상대방에게 request(Type 8) 또는 reply(Type 0) 요청할 때 ping 보냄 => 상대방은 pong으로 답함

 

- source quench(congestion control)

: congestion이 심해지고 있으면 자신에게 packet을 보내는 source들에게 congestion 심하다고 알려주도록 해 놓음

=> 알림 받으면 rate 줄임

 

- route advertisement/discovery

: route protocol(OSPF) 사용

: Type 9, Type 10

 

- TTL expired

: traceroute라는 app에 의해 사용됨

: Type 11

: 목적지로 가기 위한 각 router의 이름과 목적지 주소 알려줌 + RTT 3개씩

: 이것을 위해서는 "destination port unreachable" msg와 함께 사용하여 TTL이 좀비처럼 돌아다닐 때 expire시킴

 

 

- bad IP header

: Type 12

: IPv4의 header에는 checksum field가 있음

 

 

2. IP에 실리는 network-layer의 프로토콜

Type과 Code를 통해 ICMP msg의 종류가 뭔지 알 수 있음

ICMP msg는 type, code, 문제 일으킨 IP datagram의 첫 8byte를 포함

ICMP msg는 많은 경우 router에서 host로 감. 대부분 많은 hop 지남

=> multi-hop을 건너야 하면 host의 목적지 주소를 향해 가야 하는데 그러기 위해서는,

ICMP는 network계층의 프로토콜이지만 IP datagram에 encapsulate돼서 목적지로 전달됨

 

 

이중, TTL에 대해 자세히 살펴보자.

 

Traceroute & ICMP

 

source가 destination에 series of UDP segment 를 만드는데,

series of UDP segment = UDP 3개

 

- port number 안 쓰였을 것 같은 번호 아무거나 지정

- 첫 번째 series의 TTL = 1

- 두 번째 series의 TTL = 2

...

- n 번째 series의 TTL = n

 

n번째 series 받았을 때

- n번째 segment 받은 router은 해당 UDP segment 담긴 IP datagram의 TTL expired 되었다고 판단해 drop

- drop을 알리는 ICMP msg 전송

* (type 11, code 0): type 11, code 0 이후로 너의 메시지 drop했다는 의미

* datagram의 첫 8byte와 (type 11, code 0)를 같이 보냄

* router의 name & IP address 또한 ICMP msg에 포함됨

- ICMP msg를 받으면 source측에서 보낸 시간과 도착한 시간을 통해 RTT 계산

* stopping 기준: UDP segment가 destination host에게 도착했는데 destination이 "port unreachable"(type 3, code 3)이라는 ICMP msg를 얻었을 때 stop