본문 바로가기
Infra & Security Eng/Network & Security

네트워크 하위 계층의 모든 것: Ethernet 프레임, IP 헤더 분석, 그리고 ARP 동작

by 엔지니어 E 2026. 3. 9.
반응형

네트워크 인터페이스 계층

네트워크 인터페이스 계층

1. Preamble(동기화): 이제 데이터 시작한다라고 신호를 맞춤
2. DA /SA(주소): 목적지와 출발지의 MAC 주소
3. Type(상위 프로토콜 확인): IPv4인지 IPv6인지 구분(분석의 핵심) 
4. DATA(가변): 페이로드: 실제 전송 내용(L3 패킷이 담김)
5. FCS(에러 검출): 전송 중 데이터가 깨졌는지 확인(다르면 폐기)

Type의 대표적인 값들 
1. 08 00: IPv4(가장 일반적인 인터넷 통신) - IP가 보냈다라는 뜻 
2. 08 06: ARP(IP주소로 MAC 주소를 찾을 때 사용)
3. 86 DD: IPv6(차세대 인터넷 프로토콜) 

 

Network Layer 구조 IP

인터넷 계층 
IP(Internet Protocol)
가장 대표적인 네트워크 계층의 프로토콜, 하위 계층의 서비스를 이요하여 두 노드간의 데이터 전송 경로를 확립해 주는 역할을 한다 IP주소를 총 32비트이며, 네트워크주소와 호스트 주소로 나뉜다 


클래스별 차이



IP 헤더 

* 가로로 4Byte씩 총 20Byte(DESTINATION IP ADDRESS 까지) 

1. Version(4bit): IP의 버전 등을 명시함. 인터넷 프로토콜 버전으로 IPv4, Ipv6은 6임. 4비트로 0-15 비트까지 총 16개의 상태를 표현
2. Header Legnth(4bit): IP 프로토콜 헤더의 길이를 나타냄(Word 단위), 헤더의 길이가 가변적일 수 있어 바이트 단위로 계산해 확인
3. Type of Service(8bit): 데이터의 우선순위 등을 설정함. 현재는 거의 무시(사용 안함) 됨
* Type of Service에 값이 있어도 무시함
4. Total Lenghth(16bit): 헤더와 데이터를 합친 전체 패킷(데이터그램)의 길이 
5. Identification(16bit): 큰 데이터로 쪼갰을 때(단편화), 원래 같은 데이터였다는 것을 알리기위한 일련번호 
* 만약 데이터를 보내는데 데이터가 크다면 큰 데이터가 네트워크를 통과하기 위해 여러 조각(Fragment)로 쪼개진다. 이 조각들이 원래 하나의 데이터였다는 것을 증명하는 일련번호 이다
6. Flag(3bit): 데이터가 쪼개졌는지 여부를 알려줌
- 0 이면 쪼개지지 않은 원본
- 비트 값에 따라 뒤에 남은 조각이 더 있는지 확인함 
7. Fragment Offset(13bit): 쪼개진 데이터가 전체의 어느 위치에 해당하는지 알려줌
* 더 쉽게 말해서 내 뒤에 나랑 같은 identification 이 있는지 없는지 알려주게 된다 
8. TTL (8bit): 패킷의 '생존 시간'임. 라우터를 거칠 때마다 줄어들며, 0이 되면 패킷을 버려 길을 잃고 영원히 떠도는 것을 방지함
9. Protocol Type (8bit):상위 계층의 프로토콜(TCP, UDP 등) 종류를 알려줌
10. Header Checksum (16bit): 헤더 전달 과정에서 오류(깨짐)가 있는지 검사하며, 손상되었다면 즉시 폐기함
* 깨졌으면 그냥 버림
11. Source IP Address (32bit): 보내는 사람의 IP 주소
12. Destination IP Address (32bit): 받는 사람의 IP 주소

 

Ethernet 헤더 해석

70 5d cc 04 be b0 2c fd a1 72 a8 d4 08 06 00 01
08 00 06 04 00 01 2c fd a1 72 a8 d4 c0 a8 0a 03
70 5d cc 04 be b0 c0 a8 0a 01

1. 이더넷 헤더만 추출하기 때문에 14바이트만 해석 하면 된다
2. Ehternet 헤더 해석
- Dest MAC Add: 70:5d:cc:04:be:b0 (패킷을 수신하는 장치의 물리적 주소, Destination)
- Sour MAC Add: 2c:fd:a1:72:a8:d4 (패킷을 전송하는 장치의 물리적 주소, Source)
- Type: 08 06(상위 계층의 프로토콜 종류, ARP)

4 바이트 = 1워드 , 1 바이트 = 8 비트 

 

ARP 핵심 요약

ARP
프레임(Frame)을 생성하기 위해 상대방의 IP 주소는 알고 있으나 MAC 주소를 모를 때, 이를 동적으로 알아내기 위해 ARP를 이용

1. ARP 사용 배경(주소 정보의 불일치)
클라이언트가 서버에 접속할 때 포트 번호와 IP 주소는 제공되지만, 실제 데이터를 전송하기 위한 물리적 주소(MAC Address)는 제공되지 않음

2. 특징(통신 범위)
ARP는 동일한 네트워크 영역인 브로드캐스트 도메인 안에서만 데이터를 주고받으며 동작함
3. 계층

32bit IP 주소를 48bit 이더넷 주소로 변환함
* 이 변환은 동적(Dynamic)으로 이뤄짐

4. 작동 프로세스
1) ARP 요청(Request)
목적지 MAC 주소에 **브로드캐스트(Broadcast, ff:ff:ff:ff:ff:ff)**를 적어 네트워크 전체에 전송함
2) ARP 응답(Reply)
목적지 호스트가 자신의 MAC 주소를 담아 요청자에게 **유니캐스트(Unicast)**로 응답함
3) 결과
수신된 응답을 이용해 ARP Cache 목록에 해당 호스트의 MAC 주소를 저장하고 이후 통신을 계속함

5. ARP 패킷의 구분과 전송 방식
1) ARP 요청 (ARP Request)
서버의 MAC 주소를 알아내기 위해 **목적지 MAC 주소에 브로드캐스트(ff:ff:ff:ff:ff:ff)**를 적어 네트워크 전체에 전송함
2) ARP 응답 (ARP Reply)
자신의 IP임을 확인한 서버 호스트가 자신의 MAC 주소를 담아 클라이언트에게 다시 전달함

6. ARP 헤더 구조
1) H/W Type
하드웨어 주소 유형 (Ethernet : 1)
2) Protocol Type
네트워크 레이어 프로토콜 정의 (IPv4 : 0x0800)
3) H/W Length
하드웨어 주소 길이 (6byte)
4) Protocol Length
프로토콜 주소 길이 (4byte)
5) OP (Operation Code) - 현재는 사용하지x
패킷의 유형 구분 (1: ARP 요청, 2: ARP 응답)
6) 주소 식별 필드 (실제 데이터)
SA (Sender Address):
송신자의 MAC 주소(6 byte)와 IP 주소(4 byte)
DA (Target Address): 목적지의 MAC 주소(6 byte)와 IP 주소(4 byte)

 

IP 패킷 분석

해석: 현재 네트워크 통신이 어떤 상태인지 상황 파악을 하는 것 

P ==
Version(4bit): 0100(4 : IPv4)
헤더길이(4bit) : 0101(5 word)
TOS(1byte): 00 
전체길이(2byte) : 00 e0 : 224 byte
Identification(2byte) : 0a be : 2750
Flag(3bit): 000 : 절편화 없음
Fragment Offset(13bit) :  0000000000000 : 0 byte
TTL(1byte) : 40 : 64
Protocol(1byte) : 06 (TCP)
Header Checksum (2byte) : 99 59 : 1001100101011001 
Source IP(4byte) : c0 a8 0a 7d (192.168.10.125)
Destination IP(4byte) : c0 a8 0a 33 (192.168.10.51)


IPv4 헤더 패킷 분석(P 데이터) 
P ==
1. 기본 제어(Version&Lenghth)
1) Version(4bit): 0100(4 : IPv4) - 현재 4버전 인터넷 프로토콜 사용 중 
2) 헤더길이(4bit) : 0101(5 word) - 헤더 길이: 20바이트(표준)
3) TOS(1byte): 00 
전체길이(2byte) : 00 e0 : 224 byte - Total Length(224 byte):  헤더와 데이터를 합친 전체 패킷 크기

2. 단편화 관리(Identification & Flags)
1) Identification(2byte) : 0a be : 2750 - 이 패킷의 고유 번호. 만약 쪼개진다면 후속 조각들도 모두 이 번호를 가짐 
2) Flag(3bit): 000 : 절편화 없음. MF(More Fragments)가 0 이므로 뒤에 올 후속 조각이 없는 "단일 패킷임" 
3) Fragment Offset(13bit) :  0000000000000 : 0 byte - 데이터의 맨 앞부분을 나타냄

3. 전송 경로 및 상위 프로토콜 
1) TTL(1byte) : 40 : 64 - 라우터를 최대 64개까지 통과 가능(생존 시간)

2) Protocol(1byte) : 06 (TCP) - 상위 계층에서 TCP 프로토콜을 사용함 
3) Header Checksum (2byte) : 99 59 : 1001100101011001 - 헤더의 무결성 검증 값 

4. 주소 정보(IP Address)
1) Source IP(4byte) : c0 a8 0a 7d (192.168.10.125) - 출발지 IP
2) Destination IP(4byte) : c0 a8 0a 33 (192.168.10.51) - 목적지 IP