티스토리 뷰
MTU와 패킷 단편화 🌐
1. MTU (Maximum Transmission Unit) 란?
MTU는 네트워크에서 한 번의 전송으로 보낼 수 있는 최대 데이터 크기를 의미합니다. 이 크기는 데이터 링크 계층에서 정의되며, 이더넷(Ethernet) 환경에서는 일반적으로 1500 바이트입니다.
MTU는 헤더를 제외한 순수 데이터(페이로드)의 크기가 아니라, IP 헤더, TCP/UDP 헤더를 포함한 전체 패킷의 크기를 나타냅니다. 예를 들어, 이더넷 MTU가 1500 바이트라면, IP 헤더(보통 20바이트)와 TCP 헤더(보통 20바이트)를 제외한 실제 데이터는 약 1460 바이트가 됩니다 (1500 - 20 - 20 = 1460
).
MTU 값은 네트워크 경로상의 각 장비(라우터, 스위치 등)마다 다를 수 있습니다. 전체 경로에서 가장 작은 MTU 값을 경로 MTU (Path MTU, PMTU)라고 합니다.
2. 패킷 단편화 (Packet Fragmentation) 란?
패킷 단편화는 전송하려는 패킷의 크기가 네트워크 경로상의 어떤 장비의 MTU 값보다 클 경우, 해당 패킷을 여러 개의 작은 조각(fragment)으로 나누어 전송하는 과정을 말합니다.
예를 들어, 송신 측에서 2000 바이트 크기의 패킷을 생성했지만, 다음 라우터의 MTU가 1500 바이트라면, 이 라우터는 2000 바이트 패킷을 1500 바이트 이하의 여러 조각으로 나누어 전송해야 합니다.
단편화된 패킷들은 최종 목적지 시스템에 도달하여 재조립됩니다. 각 단편에는 원래 패킷의 일부임을 나타내는 정보와 재조립 순서를 알 수 있는 정보가 포함됩니다.
🤔 왜 단편화가 발생할까요?
네트워크는 다양한 기술과 장비로 구성되어 있으며, 각기 다른 MTU 값을 가질 수 있습니다. 데이터가 여러 네트워크를 거쳐 전송될 때, 더 작은 MTU를 가진 네트워크를 통과해야 하는 경우 단편화가 불가피하게 발생할 수 있습니다.
3. 패킷 단편화의 문제점
패킷 단편화는 네트워크 통신을 가능하게 하지만, 몇 가지 문제점을 야기할 수 있습니다:
- 성능 저하:
- 라우터가 패킷을 단편화하는 데 추가적인 처리 시간이 소요됩니다.
- 수신 측에서 단편화된 패킷들을 재조립하는 데도 처리 부담이 발생합니다.
- 단편화된 패킷 중 하나라도 유실되면, 전체 원본 패킷을 재전송해야 하는 경우가 많아 효율성이 떨어집니다.
- 보안 문제: 일부 방화벽이나 보안 장비는 단편화된 패킷을 제대로 처리하지 못하거나, 악의적인 단편화 공격(Fragmentation Attack)에 취약할 수 있습니다.
4. PMTUD (Path MTU Discovery)
이러한 단편화 문제를 피하기 위해 PMTUD (Path MTU Discovery)라는 메커니즘이 사용됩니다. PMTUD는 송신 측에서 실제로 데이터가 전송될 전체 경로의 MTU(PMTU)를 파악하여, 애초에 단편화가 발생하지 않도록 패킷 크기를 조절하는 방법입니다.
PMTUD는 일반적으로 IP 패킷 헤더의 DF (Don't Fragment)
비트를 설정하여 작동합니다. DF 비트가 설정된 패킷이 MTU보다 커서 단편화가 필요한 라우터에 도달하면, 라우터는 해당 패킷을 버리고 "ICMP Fragmentation Needed" 메시지를 송신 측에 보내 PMTU 값을 알려줍니다. 송신 측은 이 정보를 바탕으로 패킷 크기를 줄여 재전송합니다.
요약 ✨
- MTU: 한 번에 전송 가능한 최대 패킷 크기.
- 패킷 단편화: 큰 패킷을 MTU에 맞게 작은 조각으로 나누는 과정.
- 단점: 성능 저하, 보안 문제 유발 가능성.
- PMTUD: 경로 MTU를 파악하여 단편화를 미리 방지하는 기술.
'DEV > ETC' 카테고리의 다른 글
LanmanServer 정보 (0) | 2025.06.11 |
---|---|
IIS FTP 세션 끊김 및 재연결 원인 (3) | 2025.06.09 |
DMA (직접 메모리 접근) 이해하기 (0) | 2025.06.02 |
MSA ( 마이크로서비스 아키텍처) 이해하기 (0) | 2025.06.02 |
스위치와 라우터의 동작 방식 (0) | 2025.06.02 |
- Total
- Today
- Yesterday
- Between
- oracle
- partition
- JavaScript
- backup
- VBS
- Eclipse
- dbeaver
- GitHub
- Filter
- 로스터리
- diff
- BAT
- 리리 커피
- Powershell
- handdrip
- MySQL
- db
- 단위변환
- 커피
- LILI COFFEE
- MariaDB
- date
- SEQUENCE
- popup
- 스페셜티
- JSP
- table
- SQL
- Coffee
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |