[컴퓨터 네트워크] 38. Network Layer (14) : ICMP

2024. 6. 14. 15:11·CS/컴퓨터 네트워크
반응형

ICMP

Internet Control Message Protocol 의 줄임말이다.

trace route를 하는 과정을 통해 ICMP 동작을 살펴본다.

 

원래 ICMP의 목적은 호스트나 라우터에서 error reporting 목적으로 사용되는 프로토콜이다.

(호스트나 라우터에 도달할 수 없다든가, 프로토콜이 존재하지 않는다거나)

 

또는 ping 프로그램에서 요청/응답을 echo 하는데 사용한다.

 

이 프로토콜은 3계층 프로토콜이지만, 마치 TCP 처럼 IP 위에 존재하는 프로토콜이라, ICMP 메세지는 IP 데이터그램의 데이터로 들어간다. 그래서 이때는 IP 헤더에 프로토콜을 가리키는 부분에 ICMP 정보가 들어간다.

 

ICMP 메세지는 다음과 같은 구조를 가진다.

 

Type, Code 로 구성된다.

(0, 0) 이면 ping 을 위해 사용되는 것이고, 나머지는 모두 에러 reporting 과 관련되어 사용된다.

 

trace route로 사용되는 예시를 볼 때는 TTL expired 와 dest port unreachable 에러를 사용한다.

 

그리고 ICMP 메세지에는 에러를 유발한 IP 데이터그램의 첫 8byte 데이터도 같이 보낸다.

그래서 어떤 패킷으로부터 에러가 발생했는지를 같이 알려준다.

너가 보낸 패킷 중에서 첫 8byte가 이거인 패킷이 문제를 일으켰다고 알려주는 것이다.

 

IPv4 기준으로는 헤더의 두번째 줄까지 정보를 보내주는 것과 같은데, 두번째 줄에 Identifier가 있었다.

소스가 지정한 Identifier를 보고 소스는 어떤 패킷이었는지 확인할 수 있다.

 


Traceroute

source 는 목적지로 UDP 세그먼트를 보낸다.

이때 처음에는 TTL을 1로 설정하고, 그 다음에는 TTL을 2로 설정하는식으로, TTL을 1씩 늘려가면서 보낸다.

 

라우터는 자신이 패킷을 받은 뒤, TTL을 1 감소시키고, TTL이 남아있다면 목적지를 향해 패킷을 포워딩해서 보낸다.

만약 TTL이 이때 0이라면 ICMP 메세지에 (type 11, code 0) 을 담아서 소스로 보낸다.

이 에러가 TTL Expired 에러다.

이때 이 ICMP 메세지에는 이를 보내는 라우터의 정보가 담겨 있어서 source 에서는 어떤 라우터를 거쳐갔는지 알 수 있다.

 

만약 목적지에 패킷이 도착하면 TTL = 0 일 때 에러를 내지 않는다.

그래서 애초에 요청을 보낼 때 목적지가 사용하지 않을 것 같은 포트번호로 요청을 보내고, 이때는 포트에러에 대한 에러를 받게 된다. ( dest port unreachable ) 그래서 이 정보로 source 의 정보까지 확인할 수 있다.

 

 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

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

[컴퓨터 네트워크] 37. Network Layer (13) : SDN control plane  (2) 2024.06.14
[컴퓨터 네트워크] 36. Network Layer (12) : inter-AS routing protocol (BGP)  (0) 2024.06.14
[컴퓨터 네트워크] 35. Network Layer (11) : intra-ISP routing protocol (OSPF)  (0) 2024.06.14
[컴퓨터 네트워크] 34. Network Layer (10) : Distance Vector  (2) 2024.06.08
[컴퓨터 네트워크] 33. Network Layer (9) : Link State  (0) 2024.06.08
'CS/컴퓨터 네트워크' 카테고리의 다른 글
  • [컴퓨터 네트워크] 37. Network Layer (13) : SDN control plane
  • [컴퓨터 네트워크] 36. Network Layer (12) : inter-AS routing protocol (BGP)
  • [컴퓨터 네트워크] 35. Network Layer (11) : intra-ISP routing protocol (OSPF)
  • [컴퓨터 네트워크] 34. Network Layer (10) : Distance Vector
에버듀
에버듀
개발은 좋은데 뭘로 개발할까
  • 에버듀
    Blog. 에버듀
    에버듀
  • 전체
    오늘
    어제
    • 분류 전체보기 (614)
      • 개인 프로젝트 (43)
        • 토이 프로젝트 (3)
        • [2020] 카카오톡 봇 (9)
        • [2021] 코드악보 공유APP (22)
        • [2022] 유튜브 뮤직 클론코딩 (9)
        • [2025] 한글 SQL 데이터베이스 (0)
      • 팀 프로젝트 (22)
        • [2020] 인공지능 숫자야구 (4)
        • [2022] OSAM 온라인 해커톤 (10)
        • [2024] GDSC 프로젝트 트랙 (6)
        • [2025] 큰소리 웹 페이지 (2)
      • CS (335)
        • 자료구조 (19)
        • 어셈블리 (41)
        • 멀티미디어응용수학 (7)
        • 컴퓨터 구조 (29)
        • 알고리즘 분석 (4)
        • 컴퓨터 네트워크 (38)
        • 프로그래밍언어론 (15)
        • HCI 윈도우즈프로그래밍 (26)
        • 기초데이터베이스 (29)
        • 운영체제 (23)
        • 오토마타 (24)
        • 문제해결기법 (11)
        • 블록체인 (22)
        • 소프트웨어공학 (21)
        • 기계학습심화 (12)
        • 컴퓨터그래픽스와 메타버스 (8)
        • 분산시스템특론 (6)
      • 자기계발 (44)
        • 생각 정리 (22)
        • 대외활동 (11)
        • 동아리 (7)
        • 자격증 (3)
        • 머니 스터디 (1)
      • 알고리즘 (PS) (107)
        • BOJ (101)
        • Programmers (5)
        • 알고리즘 이모저모 (1)
      • WEB(BE) (8)
        • express.js (1)
        • Spring & Spring Boot (7)
      • WEB(FE) (2)
        • html, css, js (1)
        • React.js (1)
      • Tool & Language (6)
        • Edit Plus (1)
        • Git (1)
        • Python3 (2)
        • Java (2)
      • Infra (12)
        • AWS (1)
        • Oracle Cloud (8)
        • Firebase (2)
        • Network (1)
      • Android (18)
        • Java (6)
        • Flutter (12)
      • Window (2)
        • Visual Studio 없이 WPF (1)
        • MFC (1)
      • 독서 (14)
        • Inside Javascript (7)
        • Database Internals (6)
        • 한 글 후기 (1)
  • 링크

    • github
    • website
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
에버듀
[컴퓨터 네트워크] 38. Network Layer (14) : ICMP
상단으로

티스토리툴바