-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 헤더는 보안상 사용하지 않음
MTU로 필터링을 하는 순간은 IPv4 프로토콜이 붙을 때이다 mtu가 1500byte라면 ipv4프로토콜까지 붙었을떄 1500byte를 맞추고 그 뒤 2계층 프로토콜인 이더넷 프로토콜 14byte가 붙어 총 1514byte가 된다
조각화 후 목적지에서 패킷의 순서를 보장하기 위한 3가지 요소
identification: 하나의 데이터임을 표시하기 위한 고유 id값을 부여
ip flag: 일반적으로 3개 중 마지막 MF만 사용되며 뒤에 남은 조각이 있다면 1 없다면(마지막) 0을 채운다
Fragment offset: 맨 앞에서부터 얼마나 떨어진 조각인지를 표시(데이터크기 기준) 8로 나눈 값을 써준다
5000byte 데이터를 mtu 1500일 떄 보낸다면
4조각 각각 ipv4프로토콜 크기 20byte를 제외한 1480byte 3개와 560byte로 나뉘고 앞 3개는 ipv4 20byte, 이더넷 14byte이 붙어 총 1514byte가 되고 마지막 조각은 ipv4 20byte, icmp 8byte, 이더넷 14byte가 붙어 602byte가 된다