- Version ( 4 bits )
IPv4 -> 4 IPv6 -> 6
IANA 버전 관리 ( http://www.iana.org/assignments/version-numbers/version-numbers.xhtml )
- IP Header Length ( 4 bits )
IP 해더의 길이는 20 bytes ~ 60 bytes 이다.
- Type Of Service ( 8 bits )
IP Datagram이 라우터에서 어떻게 처리되어야 하는지를 정의
요구되는 서비스 품질을 나타냄, 현재 대부분의 시스템에서는 이 필드를 무시
OSPF는 이 값을 바탕으로 경로 선택이 가능하게 함
EX) TOS ( Type Of Service )
-------------------------------------------------
IP: ...0 .... = normal delay
IP: .... 0... = normal throughput
IP: .... .0.. = normal reliability
IP: .... ..0. = not ECN capable transport
-------------------------------------------------
------------------------------------------------
Priability - Current, Not used
Delay - 1 : Minimum delay (최소 지연)
Throughput - 1 : Maximum throughput (최대 처리율)
Reliablity - 1 : Maximum reliablity (최대 신뢰성)
Transport - 1 : Mimimum cost (최소 비용)
congestion experienced - Current, Not used
------------------------------------------------
EX) TOS ( Type Of Service ) 필드 권장
[참고] http://www.ktword.co.kr/abbr_view.php?nav=&m_temp1=2051&id=425
- 전체 길이 ( Total Length, 16 bits )
IP 헤더와 IP 데이터를 포함한 패킷의 전체 길이
최대값은 65.535 ( 2^16 -1 )
- 분할 식별자 ( Fragment Identification , 16 bits )
데이터그램의 분할과 재조립을 위해서 사용된다. 보내는 쪽에서는 단편화(Fragmentation), 받는 쪽에서는 재조합(Reassembly)이 발생하기 때문에 분할전 원본 데이터그램(Datagram)을 식별하기 위해 사용되는 ID이다.
각 조각이 동일한 데이터그램에 속하며 같은 일련번호를 공유한다.
- 분할 플래그(Fragmentation Flag, 3 bits)
분할 여부를 식별할 때 사용한다.
3비트 필드 중
- 첫 비트는 사용하지 않고, 따라서 항상 0
- 두번째 비트가 1이면 분할 불가능, 0이면 분할 가능을 나타낸다.
1로 세팅되면 목적지 컴퓨터가 조각들을 다시 모을 능력이 없기 때문에 라우터로 하여금 데이터그램을 단편화하지 말라는 뜻이고 0으로 세팅되면 라우터에서 분열(조각,단편)이 가능함을 뜻한다.
- 세번째 비트가 1이면 마지막 조각이 아니고 0이면 마지막 조각임을 나타냄.
현재 조각이 마지막이면 0이고, 더 많은 조각이 뒤에 계속 있으면 1이다.
- 분할 옵션(Fregmentation Offset, 3 bits)
조각나기 전 원래의 데이터그램의 8 바이트 단위의 위치이다.
최초 분열 조각으로부터 어떤 곳에 붙여야 하는 위치를 나타낸다.
분할 데이터그램 중 데이터그램의 시작 번호를 명시한다.
IP의 특성상 원본 데이터그램의 분할 패킷들이 순서대로 전송되는 것이 아니므로 이를 순서대로 조합하기 위한 offset 값이다.
[참고] Flag
00 : 분할 가능 마지막조각
01 : 분할 가능 마지막 조각 아님
10 : 분할 불가 마지막 조각
11 : 분할 불가 마지막 조각 아님
[참고] Frag Offset
Ethernet Frame
|
Preamble (8) |
DST (6) |
SRC (6) |
Type (2) |
DATA (46 ~ 1500) |
FCS (4) |
|
IP Frame ( Ethernet Frame DATA ( 46 ~ 1500 ))
-> 전체 길이가 1500을 넘을 수 가 없으며 46 이하일 수 없다.
3000 bytes 를 1480 으로 자르면 0~1479 ( 1500 ), 1480~2959 ( 1500 ) , 2960~3000 ( 40 ) X
-> 46 이하가 하나 발생한다. 3000 bytes는 1480 으로 나누면 안된다. MSS값은 적당한 값으로 선정됨
- TTL(Time to Live, 8 bits)
IP Datagram이 네트워크상에서 살아 있을 수 있는 시간을 정의하는 필드이다.
라인상에 체류할 수 있는 시간을 홉카운트(Hop Count)로 나타내는 필드이다.
라우터를 지날 때마다 1씩 감소하고 0이면 페기한다.
최초에는 초 단위로 생존시간을 명시할 의도였으나 시간측정의 어려움으로 인해 라우터/게이트웨이 통과 횟수(hop count)로 그 의미가 바뀌었다.
라우터/게이트웨이를 통해 패킷 라우팅을 하던 중 무한 루핑이 발생할 수 있으며, 라우팅 테이블의 오류 또는 기타 사유에 의해 루핑이 발생하여 목적지에 도달하지 못하면서 패킷이 무한히 살아 있는 경우를 방지 하기 위해 TTL 값을 지정한다.
일반적으로 리눅스(64), 윈도우즈(128), 유닉스(256)을 부여한다. 운영체제마다 기본 TTL 값이 틀리므로 해당 필드를 통해 OS fingerprint 목적으로 사용되기도 한다.
- 프로토콜(Protocol Identifier, 8 bits)
IP 상위 계층의 프로토콜 식별자
IANA 프로토콜 번호 관리(프로토콜 번호: 프로토콜 종류)
00: Reserved, 01: ICMP, 02: IGMP, 04: IPv4(IP-in-IP Encapsulation),
06: TCP, 08: EGP, 17: UDP,
50: ESP(Encapsulatiing Security Payload) Extension Header
88: EIGRP, 89: OSPFIGP, 179: BGP
[참고] http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml
- 검사합(Checksum, 16 bits)
헤더에 대한 오류 검출(데이터 제외)
에러확인을 위한 16비트 필드
- 출발지 IP 주소(Source IP Address, 32 bits)
출발지 IP 주소이다.
- 목적지 IP 주소(Destination IP Address, 32 bits)
목적지 IP 주소이다.
- IP 헤더 옵션(선택 옵션)
가변 길이 bits
IANA IP OPTIONS NUMBERS : http://www.iana.org/assignments/ip-parameters/ip-parameters.xhtml
- 패딩(Padding)
가변 길이 bits
필요한 경우에만 사용
옵션을 사용하다 보면 헤더가 32비트의 정수배로 되지 않는 경우가 있다.
이런 경우 자리 우기(Padding)을 통해 정수 배로 설정한다.
'Security > Network Security' 카테고리의 다른 글
TCP 패킷 분석 (0) | 2017.10.19 |
---|---|
MTU ( Maximum Transfer Unit, 최대 전송 단위 ) (0) | 2017.10.18 |
ICMP 패킷 분석 (0) | 2017.10.18 |
ARP Spoofing 방어 방법 (0) | 2017.10.18 |
ARP Spoofing (0) | 2017.10.18 |