전공공부중에 개념정리가 필요한 것 같아서 작성한다.
ICMP(Internet Control Message Protocol)
ICMP는 TCP/IP에서 IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜이다.
IP에는 오로지 패킷을 목적지에 도달시키기 위한 내용들로만 구성되어 있다.
따라서 정상적으로 목적지 호스트에 도달하는 경우에는 IP에서 통신이 성공하고 종료되므로 아무런 문제가 없다.
그러나, 만일 전달해야 할 호스트가 꺼져 있거나, 선이 단절된 경우와 같은 비정상적인 경우에 이 패킷 전달을 의뢰한 출발지 호스트에 이러한 사실을 알려야하지만, IP에는 그러한 에러에 대한 처리 방법이 명시되어있지 않다.
이러한 IP의 부족한 점을 메꾸기 위하여 사용되는 것이 바로 ICMP 프로토콜이다.
ICMP는 해당 호스트가 없거나, 해당 포트에 대기중에 서버 프로그램이 없는 등의 에러 상황이 발생할 경우
IP헤더에 기록되어 있는 출발지 호스트로 이러한 에러에 대한 상황을 보내주는 역할을 수행하게 된다.
이러한 에러에 대한 상황(에러메시지, 코드)를 받게 된 출발지 호스트에서는
목적지 호스트에 대한 정보를 대충이나마 확인이 가능한 것이다.
에러 메세지로는 크게 두 가지가 있다.
Destination Unreachable : 목적지에 도달하지 못함
Time Exceeded : 시간이 오래 걸려 목적지에 도달하지 못함
그 밖에도 Redirect, source quench 등의 에러메세지가 있다.
에러메시지 안에 에러 코드가 존재하여 원인을 조금 더 깊이 파악할 수 있다.
예를 들면 Destinaion Unreachable에 관련 에러 코드는
. Network Unreachable : Code 0 . Host Unreachable : Code 1 . Protocol Unreachable : Code 2 . Port Unreachable : Code 3
가 있다. 해당 코드를 통해서 어떤 식의 문제가 있는 지 파악이 가능하다. 가령 code 3번의 경우 해당 PORT가 열려있지 않아 에러가 뜬다고 생각하면 된다.
언제 이 프로토콜을 주로 쓰냐면,
통신 유무 확인 시 자주 쓰는 윈도우의 ping 같은 경우도 ICMP 프로토콜을 이용한 방법이다.
우리 컴퓨터인 A에서 B 컴퓨터의 상태를 보기 위해 명령어 "ping [B IP 주소]" 를 입력하게 되면 윈도우에서는 자연스럽게 ICMP 프로토콜을 이용하여 해당 프로토콜을 상대방(B) 컴퓨터로 보내게 된다.
그렇게 되면 B로 가는 도중 생기는 에러들을 유형에 맞게 끔 에러메시지(Destination Unreachable, Time Exceeded 등), 에러코드(code 3, 11 등)로 회신하게 되며, 해당 정보를 바탕으로 송신자 컴퓨터(A)의 경우 수신자 컴퓨터(B)와의 현재 통신(네트워크) 상태를 확인할 수 있다.
이 화면은 윈도우 ping 명령어를 이용해 google.com의 정보를 받아온 모습이다.
32바이트로 정보를 보냈고 걸린 시간은 얼마인지 또 TTL(네트워크 구간 중 거쳐간 경로의 수) 또한 표시해준다.
TTL 정보에 따라 OS정보를 파악할 수도 있다.
'전공 수업 CS > Computer Network' 카테고리의 다른 글
[컴퓨터 네트워크] TCP 혼잡 제어 (0) | 2022.12.05 |
---|---|
[컴퓨터 네트워크] IPv6 and Tunneling - IPv6 주소 체계 | 터널링 (0) | 2022.12.03 |
[컴퓨터 네트워크] CIDR, 서브넷 마스크 (0) | 2022.11.30 |
[컴퓨터 네트워크] IP 주소 클래스(A, B, C 클래스) (0) | 2022.11.30 |
[컴퓨터 네트워크] IP 주소 (0) | 2022.11.30 |