본문 바로가기
Network/침해탐지

네트워크 계층의 헤더 기능

by 수픽 2021. 4. 2.

IP Header

[그림 1] IP Header 구조

 

 

IP 헤더 크기는 일반적으로 20byte지만 경우에 따라 IP Options 항목을 이용해 21byte가 된다.

 

VERSION

IPv4 - 4, IPv6 - 6

 

Header Length

IP 헤더의 크기 (일반적으로 20)

 

Type of Service (ToS)

해당 패킷의 전송 우선 순위

-> 회선이 혼잡할 경우에도 해당 패킷 우선 전송 A.K.A 구급차

 

Total Length

IP 헤더(20~21) 포함한 패킷 전체의 길이 정보

 

Identification, Flags, Fragement Offset

-> MTU에 따른 패킷 분할 정보를 담는 항목

 

* MTU

: 최대 전송 단위. 각 프로토콜에서 정한 데이터 크기의 최대 범위.

ex) 이더넷 - MTU : 1500bytes = 이더넷 구간을 통과할 수 있는 데이터 최대 크기가 1500바이트

 

IF) 5900바이트 크기의 데이터 발생, 어떻게 통과?

-> Identification, Flags, Fragement Offset 항목 필요

... TCP 헤더의 플래그 항목과 다름(IP : 두개의 비트(D,M) 이용, 패킷의 분할 유무 표시 <-> TCP : 제어 신호 설정시 사용)

 

EX1. 이더넷 구간, 1400 바이트 패킷 

-> MTU : 1500 바이트, 패킷 분할 불필요

ID Flag (D 비트) Flag (M 비트) Flagemet Offset
0 1 0 0

D 비트 : Do not fragment -> 패킷 분할 불필요

M 비트 : More fragment -> 패킷 분할 필요

 

EX2. 이더넷 구간, 5900 바이트 패킷

-> MTU : 1500 바이트, 패킷 분할 필요

 

[송신 OS]

1. 이더넷 MTU에 적합하도록 100바이트의 쓰레기 값을 채움 -> Padding!

2. 6000바이트를 각각 MTU 크기(1500)로 분할

ID Flag (D 비트) Flag (M 비트) Flagemet Offset
1234 0 1 0
1234 0 1 1500
1234 0 1 3000
1234 0 1 4500

[수신 OS]

첫번째 패킷 헤더 : ID, D 비트 통해 해당 패킷이 분할 패킷임 + M 비트 통해 또 다른 분할 패킷 존재 + 플레그먼트 오프셋을 통해 시작 위치가 0바이트

두번째 패킷 헤더 : 플래그먼트 오프셋 통해 첫번째 패킷이 0바이트에서 시작해 1499바이트로 끝나는 1500바이트짜리 패킷

세번째 패킷 헤더 : 플래그먼트 오프셋 통해 두번째 패킷이 1500바이트에서 시작해 2999바이트로 끝나는 1500바이트짜리 패킷

마지막 패킷 : M 비트 통해 더 이상 분할 패킷 없음 + 플래그먼트 오프셋 통해 세번째 패킷이 3000바이트에서 시작해 4499바이트로 끝나는 1500바이트짜리 패킷

-> 위 표 기반으로 네 개의 분할 패킷을 순서에 따라 재조립. .. 빈번한 패킷 분할은 과부하 유발 가능

*

 

Time To Live (생존시간)

라우팅 루프가 일어난 구간에서 패킷을 폐기하기 위한 용도

해당 패킷이 통과할 수 있는 라우터의 개수 정보를 담음

ex) TTL = 0, 해당 패킷은 10대 이하의 라우터 통과 가능

 

Protocol

상위 계층에 속한 프로토콜 번호 저장

ex) 송신 측, UDP 페이로드 생성 -> 17, TCP 페이로드 생성 -> 6

     수신 측, 17읽고 해당 패킷을 데이터그램으로 간주, 6읽고 해당 패킷을 세그먼트로 간주

 

↓ 프로토콜 번호 종류 확인 가능

en.wikipedia.org/wiki/List_of_IP_protocol_numbers

 

Header Checksum (헤더 오류 검사)

비활성 상태. 일반적으로 사용 x

 

출발지 주소 / 목적지 주소

크기 : 32bit, 출발지 IP 주소와 목적지 IP 주소 저장

 

* IP 주소

: IANA에서 관리, 범위 0~255(0.0.0.0~255.255.255.255), 총 32비트, A~E 등급까지 있지만 C까지 사용

등급 범위 기본 서브넷 마스크 비고
A 1 ~126 255.0.0.0 127.0.0.1 루프백 주소
B 128~191 255.255.0.0  
C 192~223 255.255.255.0  

등급에 따라 네트워크 ID와 호스트 ID가 다름

네트워크 ID : LAN 영역에 대한 고유한 식별자

호스트 ID : 해당 LAN 영역에 속한 호스트에 대한 고유한 식별자

* 모든 비트가 0인 경우 = 네트워크 IP 주소 = C 등급에서 192.168.10.0 인 경우

* 모든 비트가 1인 경우 = 브로드캐스트 IP 주소 = C 등급에서 192.168.10.255인 경우

 

네트워크 IP 주소와 브로드캐스트 IP 주소는 운영 체제 내부에서 사용

C 등급인 경우 실제 사용 가능한 IP 주소 범위 : 192.168.10.1번 ~ 192.168.10.154번 -> 총 254개

.. A,B 등급 역시 네트워크 IP주소와 브로드캐스트 IP주소를 제외한 개수가 실제 사용 가능한 개수

 

리눅스) echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

-> 브로드캐스트 IP 주소를 사용하겠다

 

리눅스) ping 192.168.10.255 -b

-> 192.168.10.1~192.168.10.254번까지 이르는 모든 호스트에게 ICMP 요청

*

ICMP 프로토콜

IP 등장 이후 전송 작업을 화면에 출력하기 위한 용도

화면 출력 메시지에 기반해 오류 통보 기능과 질의 응답 기능 등을 수행하기 위한 프로토콜

 

오류 통보 : 전송 중 일어날 수 있는 목적지 도달 불가, 발신지 억제, 시간 초과,  매개변수 등의 문제등을 사용자 화면에 출력하기 위한 기능

but, 사용자 입장에서는 질의 응답 기능이 더욱 중요

 

ping : 임의의 쓰레기 값으로 이뤄진 데이터를 생성해 전송. 목적지 호스트가 동작 중이라면 응답 옴

1. 사용자->목적지 호스트 : ICMP 질의 요청

2. OS : 네트워크 계층 기반, 쓰레기 값으로 채워진 페이로드 생성

(<->FTP,SSH : 응용 계층에서 사용자의 실제 정보 담은 페이로드 생성)

구분 상위 계층과의 연속성 페이로드 생성 계층 전송 단위
IP 있음 응용 계층 패킷
ICMP 없음 네트워크 계층 패킷

 

ICMP Header

[그림 2] ICMP Header 구조

8바이트 크기

 

Type

해당 ICMP가 요청(8)인지 응답(0)인지 구분 정보

 

ICMP 페이로드 + ICMP 헤더 = ICMP 패킷 생성!

ICMP 패킷 앞에 IP 헤더 붙음 -> IP 헤더가 있어야 라우팅이 가능하기 때문

ICMP 패킷 : 네트워크 계층 -> 데이터 링크 계층 -> 물리 계층

 

 

TCP/UDP 페이로드 TCP/UDP 헤더 IP헤더

IP

ICMP 페이로드 ICMP 헤더 IP 헤더

ICMP

 

tracert : 출발지와 목적지 사이의 라우팅 과정 확인 명령어

-> ping 명령어의 TTL 속성을 이용하여 구현

tracert

구글의 DNS 서버까지 몇 개의 LAN 영역을 통과했는가 알 수 있음

오른쪽 IP 주소=라우터 IP 주소

첫번째 찍힌 IP 주소 = 나의 로컬 라우터 IP 주소

TTL 값이 1로 설정한 ICMP 패킷 발생 -> 라우터 도착하자마자 TTL 값은 0-> 해당 라우터는 출발지 호스트에 ICMP 오류통보 기능 이용하여 목적지 도달 불가 응답 -> 출발지 호스트에서 TTL 값2로 설정.....

TTL 값이 10일 때 목적지 호스트로부터 ICMP 응답이 돌아온다

-> 출발지에서 목적지까지 경유한 경로 확인

 

tracert 명령어 사용시 주의점

1. 윈도우 계열 = ICMP 방식

   리눅스 계열 = UDP 방식 (포트 33435)

2.  경로 추적 수행시 라우팅 상황에 따라 이전과 다른 경로 나올 수 있음

-> 동적으로 동작하는 라우팅 알고리즘 때문 (최선의 경로는 상황예 따라 변화)

 

그 외의 프로토콜

IGMP -> 멀티캐스트 구현

ARP,RARP -> 엄밀히 말하면 네트워크 계층과 데이터 링크 계층 사이에서 동작하는 프로토콜. 통상적으로 네트워크 계층

 

IPv6 환경에서 ICMP -> IGMP, ARP 기능까지 구현

 

 

'Network > 침해탐지' 카테고리의 다른 글

전송 계층 기반의 주요 공격 유형  (0) 2021.05.14
전송 계층의 헤더 기능  (0) 2021.05.14
TCP/IP 방식의 계층적 구조  (0) 2021.04.02