보안 / AI / 프로그래밍
[0x432] 네트워크 계층 (OSI 3계층) / IP HEADER 본문
[0x432] 네트워크 계층 (OSI 3계층) / IP HEADER
DevKTW 2021. 2. 3. 22:12[0x432] 네트워크 계층
- 네트워크 계층은 IP 프로토콜을 사용하며 대부분 IP 버전 4 (= IPv4) 를 사용한다.
- IP 주소는 xx.xx.xx.xx 형태의 4바이트 배열 형식으로 구성된다.
- 네트워크 계층의 패킷 IP 헤더는 보통 20바이트 이고, 여러 필드와 비트플래그로 구성된다.
[0x432] 네트워크 계층 - IP 헤더 내부 구조
ㅇ Verson ( 4 bits )
- IP 버전을 나타내며 현재는 보통 IPv4 를 사용한다.
ㅇ IHL ( = Header Length ) ( 4 bits )
- Internet Header Length 의 약자이며 헤더의 길이를 나타낸다.
- 4 Byte (32 bits / WORD) 단위로 헤더 길이를 표시한다. 즉, IHL 의 4배한 값이 헤더의 Byte 길이 이다.
- IHL 은 5 ~ 15 까지의 값을 가진다. 즉 20 Byte ( 5 x 4 ) ~ 60 Byte ( 15 x 4 ) 크기가 헤더의 길이 제한 범위이다.
ㅇ TOS ( Type Of Service ) ( 8 bits )
- 요구되는 서비스 품질을 나타낸다.
ㅇ Total Packet Length ( 16 bits )
- IP 헤더 및 데이터를 포함한 IP 패킷 전체의 길이를 Byte 단위로 길이를 표시한다.
- 최대값은 65,535 = (216 - 1) 이다.
- RFC 791 권고 : 68 ~ 65,535 Byte 범위로써 가능
ㅇ Identifier ( 16 bits )
- 각 조각이 동일한 데이터그램에 속하면 같은 일련번호를 공유한다.
ㅇ Flags ( 3 bits )
- 분열의 특성을 나타내는 플래그이다.
ㅇ Offset ( 13 bits )
- 조각나기 전 원래의 데이터그램의 8 Byte 단위의 위치
# Identifier, Flags, Offset 은 패킷 분할에 사용된다.
ㅇ TTL ( Time To Live ) ( 8 bits )
- IP 패킷의 수명을 의미한다.
ㅇ Protocol ID ( 8 bits )
- 어느 상위계층 프로토콜이 데이터 내에 포함되었는가를 보여준다.
- 예시) ICMP = 1 / IGMP = 2 / TCP = 6 / UDP = 17 ..
- Protocol ID 에 대한 정보는 이 사이트를 참조하자.
- 캡슐화 / 역캡슐화 를 이해했다면 '어느 상위계층 프로토콜이 데이터 내에 포함되었다는 사실' 을 이해할 것이다.
ㅇ Header CheckSum ( 16 bits )
- 헤더에 대한 오류 검출을 나타낸다
ㅇ Source IP Address ( 32 bits )
- 송신처 IP 주소를 나타낸다.
- IP 주소는 xx.xx.xx.xx 형태로 4 Byte ( = 32 bits ) 임을 기억하자.
ㅇ Destination IP Address ( 32 bits )
- 목적지 IP 주소를 나타낸다.
- IP 주소는 xx.xx.xx.xx 형태로 4 Byte ( = 32 bits ) 임을 기억하자.
ㅇ IP Header Option ( 가변 길이 bits ) ( RFC791 Page 15 ~ 22 )
- 임의로 옵션을 부여할 수 있다.
- 4 Byte 단위로 가변적 확장이 이루어진다. 자세한 것은 이 사이트를 참조하자.
- 현재는 거의 사용하지 않는다.
ㅇ Padding ( RFC791 Page 23 )
- 인터넷 헤더 패딩은 인터넷 헤더가 4 Byte 경계에서 끝나도록 보장한다.
- 이 의미는 IHL이 왜 4Byte 단위로 헤더의 길이를 나타내는지 이해하도록 돕는다.
- IP Header 는 4 Byte 의 배수 크기로 틀에 탁탁 맞춰 만들어지는 구조이다.
- padding 의 값은 0으로 채워진다.
- 쉽게말해 틀맞추기 이다.
[참고자료]
IPv4 헤더 [정보통신기술용어해설] (ktword.co.kr)
RFC 791 - Internet Protocol (ietf.org)
'Hacking :: The Art Of Exploitation > 0x400 :: 네트워킹' 카테고리의 다른 글
[0x432-0x433] [보충] IP HEADER CheckSum 구하기 (0) | 2021.02.05 |
---|---|
[0x433] 전송계층 ( OSI 4계층 ) - TCP (0) | 2021.02.05 |
[0x431] 하위 계층 분석 - 데이터 링크 계층(OSI 2 계층) / MAC 주소 / ARP (0) | 2021.02.03 |
[0x423] 네트워크 바이트 순서 // 엔디언 (0) | 2021.01.23 |
[0x420] 프로토콜 ( Protocol ) // 소켓 ( Socket ) // 소켓 관련 C 함수 (0) | 2021.01.12 |