[CS] 컴퓨터 네트워크 ICMP

재오·2023년 5월 30일
4

CS

목록 보기
23/35
post-thumbnail


ICMP는 IP헤더가 붙어있다. 그 이유는 만약에 A라는 컴퓨터가 F라는 컴퓨터에 패킷을 보내는 상황일 때, 제대로 전달하지 못한 상황이면 다시 A라는 컴퓨터에 알려줘야 하기 때문이다.

ICMP message

처음 5가지는 에러가 발생했을 경우이고, 밑에 2개는 사용자가 물어봤을 때 대답을 해주는 경우이다.

  • Type 3 : Destination unreachable

  • Type 4 : Source quench

  • Type 11 : Time exceeded

  • Type 12 : Parameter problem

  • Type 5 : Redirection

  • Type 8 or 0 : Echo request or reply

  • Type 13 or 14 : Timestamp request or reply

ICMP format

ICMP에서 위 두줄이 헤더이고 밑에 Data section에 Type이 들어간다. 정확히 무슨 에러인지 보려면 타입도 봐야하고 코드 값도 봐야한다.

ICMP capsule

제일 위칸은 받은 패킷을 의미한다. 받은 패킷에는 IP 헤더가 있고, 바로 뒤에 TCP 헤더가 있다. 20byte중에서 8byte를 가져온다는 것을 의미한다.
ICMP packet은 ICMP message를 의미하는데 ICMP 헤더는 ICMP 포맷에서의 두개의 헤더를 의미하고 나머지 두칸은 데이터가 들어가는 곳이다.
맨 아래 칸에 IP 헤더에는 어디서 에러가 발생했는지, source의 IP주소가 들어간다. ICMP 헤더에는 어떤 에러인지를 적는다. 그리고 IP 헤더에는 A가 F한테 보내는 정보가 담겨있다. 즉 목적지 IP주소가 뭔지 알 수 있다.

Destination unreachable format(3)

  • code 0 : 네트워크 도달 불가
  • code 1 : 호스트 도달 불가
  • code 2 : 프로토콜 도달 불가
  • code 3 : 포트 도달 불가
  • code 4 : 단편화 필요하지만 DF 설정됨
  • code 13 : 목적지와의 통신이 관리적으로 금지됨

Source quench(4)


라우터가 혼잡이 발생한다면 보내는 사람한테 혼잡때문에 버린다고 알려준다. = 너무 많이 보내니까 좀 줄여줘라는 의미를 담고 있다. 혼잡 때문에 packet이 없어질 때 source-quench message를 보내준다.

Time exceeded(11)


TTL이 0이 되었을 경우에 코드 0을 보내준다. 또 setTime에 들어오지 않았을 때에는 코드1을 보내준다.

Parameter Problem(12)


IP 패킷 처리 중에 잘못된 매개변수를 감지했을 때 전송되며, 이는 네트워크 장치 사이에서 발생한 오류를 알리는 역할을 한다. 코드 0은"잘못된 IP 헤더 필드 값"을 나타내는데 사용된다. 포인터 필드가 0인 것을 의미한다. 코드1은 "데이터 필드에서 잘못된 값"을 나타내는데 사용된다. 포인터 필드가 잘못된 곳을 가리키는 것을 의미한다.

Redirection(5)


A가 B한테 보내려는 상황이다. 위 그림의 문제는 R2로 직접 보내면 되는데 뺑 돌려서 돌아갔다. 그러면 Redirect Message를 보낸다. 나한테 보내지 말고 R2로 보내!라는 의미이다. 일반적으로 호스트는 작은 사이즈의 라우터를 가지고 출발한다. 하지만 비효율적인 것들을 RM을 통해 업데이트가 된다. 그러면 포맷에서 두번째 줄에 R2로 업데이트 해주면 되는 것이다. 하지만 보내는 사람과 중간에 있는 R1도, 다음으로 보내는 R2도 모두 같은 네트워크에 있을 경우에만 위 설명이 유효하다.

Traceroute


Traceroute은 네트워크에서 패킷의 경로를 추적하고 패킷이 목적지에 도달하기까지 거쳐가는 중간 라우터의 시간 지연을 측정하는 도구이다.
위의 그림을 살펴보면 목적지 B로 갈 때 패킷 TTL = 1로 해서 보낸다. R1으로 이동하면서 1이 감소한다. 그리고 순간 호스트로 ICMP를 보낸다. 그리고 TTL = 2를 하고 라우터로 보낸다. 이러한 방법으로 시간지연을 측정한다.

profile
블로그 이전했습니다

0개의 댓글