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

ICMP (Internet Control Message Protocol)

by HJINHA 2021. 6. 28.

- 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지를 전송받는 데 주로 쓰이며 인터넷 프로토콜의 주요 구성원 중 하나.

 

Messages

- data section: 받은 패킷의 IP헤더와 TCP 헫더의 앞 8byte

- ICMP는 항상 에러 메시지를 original source에 알려주고 패킷을 버림

 

A - b - c - d -x- e - F (A->F로 보내는 상황)

- Received datagram: d가 받은 datagram.

- IP header: AF에게 보낸다는 정보 有

- 8 bytes: TCP 헤더의 앞 8바이트(두줄) - source Port, dest Port, sequence num

- ICMP packet: 오류 메시지 전달할 패킷

- ICMP header: 헤더. 에러 종류

- IP header8bytes: 데이터

- Sent IP datagram

- IP header: D에서 A까지 보낸다는 정보

* A가 저 datagram을 받고 알 수 있는 것 ***

- 어디서 발생했는지 (첫번째 IP header)

- 무슨 에러가 생겼는지 (ICMP header)

- 내가 누구에게 보내려고 했던건지 (세번째 IP header)

- 몇번째 패킷인지 (seq num)

 

1) Destination-unreachable

- 도달 불가 오류

- 모든 문제를 detect할 순 없음.

- IP는 흐름제어나 혼잡제어가 없음

 

2) Source-quench

- 혼잡때문에 라우터가 패킷을 버릴 때

 

3) Time-exceeded

- code 0: 라우터가 패킷을 받을 때마다 TTL 값을 하나씩 빼다가 0이 되어 버릴 때

- code 1: fragment 재조합 못해서(set time 내에 모든 fragment가 다 오지 않아서) 패킷 버릴 때

 

4) Parameter-problem

- 헤더에 있는 값이 말도 안 되는 값으로 지정된 경우. 포인터로 IP헤더 어느 부분에 문제있는지 알려줌

 

5) Redirection

- 라우팅 테이블은 점진적으로 업데이트되는데, 아래처럼 돌아서 가는 길이라면 테이블 업데이트하도록 알림

- A, R1, R2가 같은 네트워크에 있는 경우에만 라우터가 호스트에게 보냄

 

6) Echo-request / reply

- requesthost 또는 router가 보낼 수 있다.

- replyrequest를 받은 hostrouter가 보낸다.

- hostreachability를 테스트할 때 쓸 수 있다. (ping)

 

7) Timestamp-request / reply

- RTT(round-trip time) 측정할 때 많이 쓰인다.

- 패킷을 받자마자 보내는 게 아니라 패킷 처리시간이 드는데, 그 시간을 볼() 수 있음.

- original timestamp 써서 보내면 받은쪽은 receive timestamp
 Transmit timestamp
를 써서 보냄. 진짜 RTT = RTT(*)-()

- 두 시계가 동기화됐다는 보장이 있어야 함

 

 

The traceroute program operation

- Host A에서 S:A, D:B, TTL=1로 보냄. 의도적으로 한 hop만 가도록. 그뒤엔 TTL=2, ...로 보냄

 R1, R2, ... (TTL 0이 돼서) time exceededA에 보내고 패킷을 버림.

 이렇게 함으로써 라우터 경로 추적(라우터 이름, ip 주소, ip주소까지 다녀온 시간 세번) 가능.

* 학교나 회사 네트워크 밖에다 traceroute www.naver.com 하면 네트워크 내의 정보는 잘 나오는데 다른 네트워크 정보는 ***..으로 나온다. 밖에서 온 ICMP를 방화벽이 차단하기 때문이다.

'네트워크 > 컴퓨터네트워크' 카테고리의 다른 글

Unicast Routing Protocols  (0) 2021.06.28
Internet Protocol Version 4 (IPv4)  (0) 2021.06.28
Web and HTTP  (0) 2021.06.28
Delivery and Forwarding of IP Packets  (0) 2021.06.28
NAT (Network Address Translation)  (0) 2021.06.28

댓글