본문 바로가기

자격증/정보보안기사

IP(IPv4) 프로토콜의 구조 이해

1. 개요

-비연결형 프로토콜(Connectionless Protocol) : 연결 상태를 유지하지 않기 때문에 패킷 전송 순서를 보장하지 않음

-비신뢰적 프로토콜(Unreliable Protocol) : 신뢰성 있는 통신을 보장하지 않음

-IP는 목적지 주소(Destination IP Address)를 기반으로 라우팅을 담당하는 인터넷 계층의 대표 프로토콜.

2. IP 프로토콜 구조

 출처 : https://www.netmanias.com/ko/post/blog/5372/ethernet-ip-ip-routing-network-protocol/packet-header-ethernet-ip-tcp-ip

-VER(4bits) : IP의 버전정보, 일반적으로 IPv4 사용

-IHL(=HLEN)(4bits) : 헤더 길이, 4 BYTES 단위로 표현

-TOS(=Service type)(8bits) : 서비스 품질(QoS)를 위한용도. 지금은 사용하지 않음

-Total Length(16bits) : 헤더부와 데이터부를 포함한 전체 IP Packet의 길이

-Identification(=ID)(16bits) : 단편화/재조합 관련 필드

  •   IP 데이터그램을 여러 조각으로 분할을 단편화(Fragmentation), 단편을 조합하는 것을 재조합(Reassembly)
  •   단편화 전 원본 IP 데이터그램을 식별하기 위한 ID

-Flages(=0/DF/MF)(3bits) : 단편화/재조합 관련 필드

  • 첫 번째 비트 : 사용안함
  • 두 번째 비트 : Don't fragment bit(1 설정 시 패킷을 단편화 하지 말라는 의미)
  • 세 번째 비트 : More fragments bit(1 설정 시 재조합 단편이 남아 있음. 0 설정 시 단편이 더 이상 없다는 의미)

-Fragmentation offset(13bits) : 단편화/재조합 관련 필드

  • 원본 IP 데이터그램의 단편들이 순서대로 전송되지 않기 때문에 현재 단편의 상대위치(offset)를 저장한 필드
  • 8bytes 단위로 표현

-TTL(=Time to Live)(8bits) : IP패킷의 생존시간을 지정하는 필드

  • 라우터/L3스위치 통과 횟수(hop count)
  • 패킷이 라우터/L3스위치에 도착하면 TTL값을 1 감소시키고 0이 되면 폐기
  • 무한루핑(looping)을 방지하여 네트워크 대역만 차지하는 상태를 막음

-Protocol(8bits) : 상위 프로토콜을 식별하기 위한 프로토콜 번호를 저장하는 필드

  • ICMP(1), TCP(6), UDP(17) 등

-Header checksum(16bits) : 데이터부를 제외한 헤더 부분의 오류 검사값

-Source IP address(=SA)(32bits) : 출발지 IP 주소

-Destination IP address(=DA)(32bits) : 목적지 IP 주소

-IP option 헤더는 보안상 사용하지 않음

3. IP 단편화(Fragmentation)

-IP 패킷/데이터그램은 MTU(Maximum Transmission Unit)에 따른 단편화가 발생

-물리적인 네트워크 프로토콜들은 각자 물리적인 특성에 맞게 정의 된 MTU를 가진다. 가장 많이 이용하는 이더넷의 경우 MTU는 1500바이트(옥텟)이다.

※FDDI : 4352, Ethernet : 1500, X.25 : 576, PPP : 296

-단편화는 라우터, 스위치 중계 구간의 MTU에 따라 추가적으로 발생하지만 재조합은 최종목적지에서만 이루어짐

출처 : https://kalilinuxtutorials.com/fragroute/

- tcpdump의 IP단편화 관련 출력 형식

  • (frag "단편ID":"단편의 크기(IP헤더 제외)"@"오프셋"+)
  • +가 있으면 추가 단편이 있다는 의미(More Fragments bit : 1)
  • +가 없으면 마지막 단편이라는 의미(More Fragments bit : 0)