네트워크 계층은 “데이터가 목적지까지 가는 경로를 찾는 계층”
이 계층의 대표 프로토콜은 IP(Internet Protocol) 과 ARP(Address Resolution Protocol) 이다.
두 프로토콜의 구조와 역할, 그리고 실무에서 자주 언급되는 IP 단편화(Fragmentation) 문제에 대해
| 기능 | 설명 |
|---|---|
| 주소 지정 (Addressing) | IP 주소를 통해 송신자·수신자를 식별 |
| 경로 설정 (Routing) | 목적지까지의 최적 경로 선택 |
| 패킷 전달 (Packet Forwarding) | 상위 계층 데이터(세그먼트)를 패킷 단위로 캡슐화 후 전달 |
| 단편화 (Fragmentation) | 데이터가 MTU(Maximum Transmission Unit)보다 클 경우 쪼개서 전송 |
💡 네트워크 계층은 "IP 주소 기반의 논리적 통신" 을 담당한다.
물리적 연결 여부와 관계없이, 다른 네트워크 간 통신을 가능하게 한다.
IP는 네트워크 상에서 데이터 패킷을 전달하기 위한 기본 프로토콜이다.
✅ 특징
비연결성(Connectionless) : 연결 설정 없이 독립적으로 전송
비신뢰성(Unreliable) : 오류 제어, 재전송 기능이 없음 (→ 상위 계층인 TCP가 보완)
최선형 전달(Best Effort Delivery) : 가능한 한 빨리 보냄, 성공 보장 X
라우팅 기능 포함 : 목적지까지의 경로 선택
| 필드명 | 설명 |
|---|---|
| Version | IP 버전 (IPv4/IPv6 구분) |
| Header Length | 헤더 길이 (기본 20byte) |
| Total Length | 전체 패킷 크기 |
| Identification / Flags / Fragment Offset | 단편화 관련 정보 |
| TTL (Time To Live) | 패킷의 생존 시간 (라우터 통과 시 1씩 감소) |
| Protocol | 상위 계층 식별 (TCP: 6, UDP: 17, ICMP: 1 등) |
| Header Checksum | 헤더 오류 검출 |
| Source / Destination IP | 출발지 / 목적지 주소 |
🌍 IP 주소 체계
| 구분 | 설명 | 예시 |
|---|---|---|
| IPv4 | 32비트, 4옥텟 (0~255) | 192.168.0.1 |
| IPv6 | 128비트, 16진수 8그룹 | 2001:0db8::1 |
💡 IPv4는 주소 고갈 문제로 인해 IPv6로 전환이 진행 중이지만,
실무에서는 여전히 IPv4가 주로 사용된다.
ARP는 IP 주소를 이용해 MAC 주소를 알아내는 프로토콜이다.
(즉, 3계층 주소(IP) → 2계층 주소(MAC)로 매핑
⚙️ 동작 원리
1.A 컴퓨터가 같은 네트워크의 B에게 데이터를 전송하려 함
2.A는 B의 IP 주소는 알고, MAC 주소는 모름
3.A는 ARP Request 브로드캐스트(“이 IP 가진 사람 누구야?”)
4.B가 ARP Reply 유니캐스트(“그 IP는 나야! 내 MAC은 xx:xx:xx”)
5.A는 MAC 주소를 ARP Cache(테이블) 에 저장
6.이후 통신은 ARP 없이 바로 MAC 주소 사용
💾 ARP 캐시 확인
Windows:
arp -a
Linux/macOS:
ip neigh show
💡 캐시에 저장된 MAC 주소는 일정 시간이 지나면 삭제된다.
(보통 1~2분 정도의 유효 시간)
| 필드 | 설명 |
|---|---|
| Hardware Type | 네트워크 종류 (Ethernet은 1) |
| Protocol Type | 상위 프로토콜 (IPv4는 0x0800) |
| Operation | 요청(1), 응답(2) |
| Sender MAC/IP | 요청자 정보 |
| Target MAC/IP | 대상 정보 |
| 종류 | 설명 |
|---|---|
| RARP (Reverse ARP) | MAC → IP 주소를 알아내는 프로토콜 (현재는 BOOTP/DHCP로 대체됨) |
| Proxy ARP | 라우터가 다른 네트워크의 MAC을 대신 응답하여 통신 중개 |
MTU(Maximum Transmission Unit) 를 초과하는 IP 패킷은 분할되어 전송된다.
이 과정을 IP Fragmentation (단편화) 라고 한다.
🧩 동작 과정
1.송신 측이 패킷을 전송할 때, 네트워크의 MTU(기본 1500 bytes) 보다 크면 분할
2.각 조각(Fragment)에는 식별자(Identification) 와 Offset(위치정보) 가 붙는다
3.수신 측은 이 정보를 기반으로 조각을 다시 재조립(Reassembly)
⚠️ 단편화의 문제점
| 문제 | 설명 |
|---|---|
| 성능 저하 | 여러 조각을 재조립해야 하므로 지연 발생 |
| 손실 위험 증가 | 하나의 Fragment라도 손실되면 전체 데이터 무효 |
| 보안 리스크 | 단편화된 패킷을 악용한 공격 가능 (e.g., Fragment Overlap Attack) |
송신 측이 목적지까지의 경로에서 가장 작은 MTU 크기를 탐색하여 조정
ICMP 메시지(Fragmentation Needed)를 통해 MTU 크기 정보를 수신
결과적으로 단편화 없이 전송 가능
# 예시: Linux에서 MTU 확인
ip link show eth0
IP 헤더에 DF 플래그(= 단편화 금지) 를 설정하여
MTU 초과 시 분할하지 않고 오류(ICMP Type 3, Code 4) 반환
이 정보를 바탕으로 송신 측이 MTU를 조정
TCP는 MSS(Maximum Segment Size)를 협상하여 자동 조정
UDP 기반 응용(예: DNS, VoIP)은 수동으로 패킷 크기를 제한해야 함
라우터, 스위치, 방화벽 등 모든 구간의 MTU를 동일하게 설정
특히 VPN 터널 환경에서는 암호화 오버헤드 고려 필요
| 구분 | IP 프로토콜 | ARP 프로토콜 |
|---|---|---|
| 역할 | IP 주소 기반의 패킷 전달 | IP → MAC 주소 변환 |
| 주소체계 | 논리 주소(IP) | 물리 주소(MAC) |
| 전송 단위 | Packet | Frame 내 포함 |
| 주요 장비 | 라우터, 방화벽 | 스위치, NIC |
| 관련 문제 | 단편화(Fragmentation) | 캐시 만료, 중복 응답 |
| 해결 방법 | PMTU 탐색, DF 플래그 설정 | ARP Cache 관리 |