프래그먼테이션 (Fragmentation)
Fragmentation은 큰 데이터 패킷을 네트워크의 최대 전송 단위(Maximum Transmission Unit, MTU)보다 작은 조각으로 나누는 과정이다.
이는 다음과 같은 목적을 가진다:
- 다양한 MTU를 가진 네트워크 간의 통신 가능
- 네트워크 성능 향상
- 대역폭 활용도 개선
프래그먼테이션이 필요한 이유
네트워크마다 처리할 수 있는 최대 패킷 크기가 다르다.
이를 MTU(Maximum Transmission Unit)라고 한다.
예를 들어:
- 이더넷의 MTU: 1500 바이트
- PPP의 MTU: 576 바이트
- Wi-Fi의 MTU: 2304 바이트
만약 4000 바이트 크기의 데이터를 MTU가 1500 바이트인 이더넷 네트워크로 전송하려면, 이 데이터는 반드시 더 작은 조각들로 나뉘어야 한다.
Fragmentation의 작동 방식
프래그먼트 생성 원본 패킷은 여러 개의 작은 프래그먼트로 나뉜다.
각 프래그먼트는:- 원본 패킷의 헤더 정보를 포함
- 고유한 프래그먼트 오프셋 값을 가짐
- More Fragments(MF) 플래그로 추가 프래그먼트 여부를 표시
프래그먼트 전송 각 프래그먼트는 독립적으로 목적지로 전송된다.
이때:- 각각 다른 경로로 전송될 수 있음
- 순서가 뒤바뀔 수 있음
- 일부가 손실될 수 있음
재조립 과정 목적지에서는 다음과 같은 방식으로 프래그먼트들을 재조립한다:
- 프래그먼트 오프셋을 이용해 올바른 순서 확인
- MF 플래그로 모든 프래그먼트 수신 여부 확인
- 타임아웃을 통해 손실된 프래그먼트 처리
구체적인 예시를 통한 이해
4000 바이트 크기의 데이터 패킷이 1500 바이트 MTU 네트워크를 통과해야 하는 경우:
- 1번 프래그먼트:
- 크기: 1500 바이트
- 오프셋: 0
- MF 플래그: 1 (더 있음)
- 2번 프래그먼트:
- 크기: 1500 바이트
- 오프셋: 1480
- MF 플래그: 1 (더 있음)
- 3번 프래그먼트:
- 크기: 1000 바이트
- 오프셋: 2960
- MF 플래그: 0 (마지막)
Fragmentation의 주요 구성 요소
- Identification Field (16 비트): 같은 원본 패킷의 조각들을 식별한다.
- Fragment Offset Field (13 비트): 조각의 순서를 나타낸다.
- More Fragments Field (MF): 더 많은 조각이 있는지 표시한다.
- Don’t Fragment Field (DF): 패킷의 분할을 금지할 수 있다.
Fragmentation의 장단점
장점:
- 다양한 네트워크 환경에서의 통신 가능
- 네트워크 리소스의 효율적 사용
단점:
- 재조립 과정에서의 복잡성 증가
- 패킷 손실 시 전체 데이터의 재전송 필요
- 보안 문제 발생 가능성 (일부 방화벽에서 문제 발생)
IPv6에서의 프래그먼테이션
IPv6에서는 중간 라우터에서의 프래그먼테이션을 금지하고, 대신:
- Path MTU Discovery를 통해 적절한 패킷 크기 결정
- 출발지에서만 프래그먼테이션 수행
- 더 효율적인 전송 보장
Fragmentation 회피 기술
- Path MTU Discovery: 경로상의 최소 MTU를 찾아 패킷 크기를 조절한다.
- TCP MSS (Maximum Segment Size) 조정: TCP 세그먼트 크기를 MTU에 맞게 조절한다.
실제 응용 사례
파일 전송을 예로 들어보면:
10MB 크기의 파일을 전송할 경우:
- 응용 프로그램 계층: 파일을 세그먼트로 분할
- IP 계층: 필요한 경우 추가 프래그먼테이션 수행
- 네트워크: MTU에 맞는 크기로 전송
- 수신측: 순차적 재조립 후 파일 복원
용어 정리
용어 | 설명 |
---|---|