프로그래밍 농장

TCP / IP 프로토콜 [ ICMP (Internet Control Message Protocol ] 본문

TCP-IP 프로토콜

TCP / IP 프로토콜 [ ICMP (Internet Control Message Protocol ]

Tennessee201 2021. 6. 14.
728x90

- ICMP 

IP Protocol이 error-reporting 에 대한 기능을 가지고있지않기에, 이를 보완하기위해 만들어짐

 -> 에러상황 발생시 : original sender에 전송 ( 데이터를 최초로 발생시킨 부분으로 )

 -> 3.5 layer 에 존재 : incapsulation 해서 network layer로 내려갈떄 ip header가 붙기전에 transport layer에는 port num 과 ip address 주소가 있어야 가능한데 그 사이에서 icmp가 port num과 ip address를 같이 가져오기떄문 

ICMP는 IP헤더 앞에 따로 자신의 헤더를 붙인다. 4계층에는 속하지 않지만 3계층 프로토콜의 역할을 도우면서 헤더를 붙일 수 있기 때문에 3.5 계층 정도로 취급하는 것이다. ICMP의 가장 대표적인 예시로 ping과 trace route이 있다.

 

ICMP Packet의 구성

Message Format

8 byte 헤더 & data section이 변환적이다. 

 

Error Message 

- Destination unreachable 

- Source quench : 소스노드에게 전송량을 낮추어달라고 하는것 ( =freeze) -> [ sender쪽에 slow-down 요구 ]

  -> 수정 x / 정보전달만 -> 병목현상이 발생  ( 연구소나 테스트목적으로 주로쓰임 ) (traffic control)

- Time exceeded :  TTL값이 0 이될경우 : 라우팅정보 오류, ~~ 등의 이유로 루프(LOOP)가 걸린경우 .

                          final이 fragment 필요 or 에러현상발생한 경우. -> 폐기후 알림 

                           라우터에서 : code 0 / 목적지노드에서 : code 1 

- Parameter problems : 헤더(header)에서의 오류  / pointer : 헤더내에서 오류위치를 표시하기위해 추가 -> 옵션 노드인경우 pointer 사용 x -> 그냥 0( null) 값

- Redirection (권고) : routing table을 업데이트  type : 5 / code 0-3 / IP address of the target router 

 

Redirection attack : 모든 트래픽이 한곳으로 몰리게 -> 공격자는 바로 자신이 라우터 b라고 host a를 속이는 일을 해야합니다. 그것이 바로 icmp 리다이렉트 공격입니다. 공격이 성공하였다면 이제 host a는 특정 외부 사이트에 대해서는 무조건 라우터 b를 통해서 갈 것이고 그 라우터 b는 바로 공격자가 됩니다.

 

어디서 에러가 발생하는지 알기위해 -> session identifier 필요 : source와 destination의 IP주소 / PORT넘버 *

TCP Segment =>

IP header -뒤에 transport hearder 따라옴( 이안에*) : 이를 통해 수신된 에러메세지가 어떤 세션과 연관이 있는지 구분이 가능하다. 

 

왜 8byte의 정보(데이터)가 들어가는지 ? -> port넘버와 sequence넘버가 Header안에 들어가게된다. 

 

국내에서 ICMP를 차단하는이유  -> ICMP 가 공격으로 사용되는 사례가 많아서 

 

Query Message :

네트워크 상황에 분석을 하기위한 용도로 발생시킴 .

- Echo request & reply : 두개의 pair로 구성됨 : host. router 모두 전송가능   < ping . >

- Timestamp request & reply : 왕복하는 전송시간값 출력  -> 네트워크의 상태,시간값 수정가능 

 -> 두 기기의 시간을 동기화 해줌 / 32bit 값을 가지고있음 

타임스탬프 Round-trip 계산법 

Original timestamp field : echo request가 출발할떄 시간값 

Recieve timestamp field : 초기값이 0이고 리시버가 echo를 받았을떄 시간값

transmit timestamp field : 내부적으로 처리후 timestamp reply를 보낼때의 시간값 

 

 

TCP 와 UDP의 차이점

 

728x90