network

[network] 혼자 공부하는 네트워크 04-1 추가 2: ICMP

hail2y 2024. 12. 1. 22:26

IP의 전송 특성을 보완하는 ICMP

ICMP(Internet Control Message Protocol, ICMP)는 인터넷 제어 메시지 프로토콜로서, 네트워크 내 장치가 데이터 전송과 관련된 문제를 전달하기 위해 사용하는 프로토콜이다.  (https://www.fortinet.com/kr/resources/cyberglossary/internet-control-message-protocol-icmp)

  • IP 패킷 전송 과정에 대한 피드백 메시지 제공
  • 피드백 메시지
    - 1. 전송 과정에서 발생한 문제 상황에 대한 오류 보고
    - 2. 네트워크에 대한 진단 정보 (네트워크 상의 정보 제공)

다음 슬라이드는 1번 유형에 속하는, 문제 상황에 대한 오류를 보고하는 메시지 유형이다. 화면에는 자주 확인할 수 있는 오류 메시지들에 대해 올려 놨는데 RFC 문서를 보면 더 많은 종류의 메시지들에 대해 타입과 코드가 설명되어 있다. 

https://www.youtube.com/watch?v=QxsAFH-ojv0&list=PLVsNizTWUw7HfOCgvlfHIDPPo3TE-2iQM&index=33
https://datatracker.ietf.org/doc/html/rfc792

RFC 문서 링크를 타고 들어가면 Destination Unreachable Message(목적지 도달 불가 메시지)가 먼저 나오는데, 타입과 코드에 대해 슬라이드와 같이 명시되어 있다. 그 뒤로 Time Exceeded Message(시간 초과 메시지)가 뒤따라온다. 그리고 아래는 2번 유형에 속하는, 네트워크 상의 정보를 제공하는 메시지 유형이다. 

https://www.youtube.com/watch?v=QxsAFH-ojv0&list=PLVsNizTWUw7HfOCgvlfHIDPPo3TE-2iQM&index=33

에코 요청과 에코 응답은 대표적으로 ping 명령어에서 사용되는 ICMP 메시지다. ping 뿐만 아니라 사실 많은 컴퓨터 명령어들에서도 ICMP 피드백 메시지를 기반으로 동작한다고 한다. 예를 들어, traceroute(tracert) 명령어가 있는데, 이 명령어는 송신지에서 수신지까지 패킷을 보내면서 거치는 라우팅 과정을 확인하는 명령어다. 과거 라우팅 게시글에서도 이와 같은 내용을 실었는데, 그때는 잘 몰랐지만 지금 ICMP를 학습하면서 다시금 연결지어 이해해 볼 수 있었다.

https://hail2y.tistory.com/94

 

이 시점에서 처음 썼던 이 글의 헤더를 살펴보면 다음과 같다: "IP의 전송 특성을 보완하는 ICMP"

ICMP가 그러면 IP의 한계를 극복하여 신뢰할 수 있는 연결형 통신을 가능하게 해 줄까 물음을 던져보면 그 답은 "아니요"다. ICMP에 관한 RFC 문서를 참고하면 다음과 같은 설명이 덧붙여져 있다. 

더보기

IP는 신뢰할 수 있도록 설계되지 않았다. 제어 메시지(여기서는 피드백 메시지를 제공하는 ICMP)는 통신 환경에서의 문제에 대한 피드백을 제공하는 것이지, IP를 신뢰할 수 있도록 만들지 않는다. 데이터그램이 수신지까지 잘 도착한다거나 제어 메시지가 잘 반환된다거나 하는 보장은 아직 없다. 몇 개의 데이터그램은 데이터 유실에 대한 보고 없이 아직도 잘 전달되지 않을 수 있다. 신뢰할 수 있는 통신이 필요하다면 IP를 사용하는 더 높은 계층의 프로토콜로 신뢰성 절차를 구현해야 한다. 

"ICMP 메시지는 피드백 메시지를 통해 현재 전송 과정을 넢겨짚기 위한 보조 수단이지, IP의 한계를 원천적으로 극복하기 위한 프로토콜은 아니"라고 한다. 따라서 문서에 적힌대로, 신뢰성 있는 통신을 위해서는 더 높은 계층, 즉 전송 계층에서의 TCP가 필요하다.  

https://datatracker.ietf.org/doc/html/rfc792