프래그먼테이션 (Fragmentation)

Fragmentation은 큰 데이터 패킷을 네트워크의 최대 전송 단위(Maximum Transmission Unit, MTU)보다 작은 조각으로 나누는 과정이다.

이는 다음과 같은 목적을 가진다:

  1. 다양한 MTU를 가진 네트워크 간의 통신 가능
  2. 네트워크 성능 향상
  3. 대역폭 활용도 개선

프래그먼테이션이 필요한 이유

네트워크마다 처리할 수 있는 최대 패킷 크기가 다르다.
이를 MTU(Maximum Transmission Unit)라고 한다.
예를 들어:

  • 이더넷의 MTU: 1500 바이트
  • PPP의 MTU: 576 바이트
  • Wi-Fi의 MTU: 2304 바이트
    만약 4000 바이트 크기의 데이터를 MTU가 1500 바이트인 이더넷 네트워크로 전송하려면, 이 데이터는 반드시 더 작은 조각들로 나뉘어야 한다.

Fragmentation의 작동 방식

  1. 프래그먼트 생성 원본 패킷은 여러 개의 작은 프래그먼트로 나뉜다.
    각 프래그먼트는:

    • 원본 패킷의 헤더 정보를 포함
    • 고유한 프래그먼트 오프셋 값을 가짐
    • More Fragments(MF) 플래그로 추가 프래그먼트 여부를 표시
  2. 프래그먼트 전송 각 프래그먼트는 독립적으로 목적지로 전송된다.
    이때:

    • 각각 다른 경로로 전송될 수 있음
    • 순서가 뒤바뀔 수 있음
    • 일부가 손실될 수 있음
  3. 재조립 과정 목적지에서는 다음과 같은 방식으로 프래그먼트들을 재조립한다:

    • 프래그먼트 오프셋을 이용해 올바른 순서 확인
    • MF 플래그로 모든 프래그먼트 수신 여부 확인
    • 타임아웃을 통해 손실된 프래그먼트 처리

구체적인 예시를 통한 이해

4000 바이트 크기의 데이터 패킷이 1500 바이트 MTU 네트워크를 통과해야 하는 경우:

  • 1번 프래그먼트:
    • 크기: 1500 바이트
    • 오프셋: 0
    • MF 플래그: 1 (더 있음)
  • 2번 프래그먼트:
    • 크기: 1500 바이트
    • 오프셋: 1480
    • MF 플래그: 1 (더 있음)
  • 3번 프래그먼트:
    • 크기: 1000 바이트
    • 오프셋: 2960
    • MF 플래그: 0 (마지막)

Fragmentation의 주요 구성 요소

  1. Identification Field (16 비트): 같은 원본 패킷의 조각들을 식별한다.
  2. Fragment Offset Field (13 비트): 조각의 순서를 나타낸다.
  3. More Fragments Field (MF): 더 많은 조각이 있는지 표시한다.
  4. Don’t Fragment Field (DF): 패킷의 분할을 금지할 수 있다.

Fragmentation의 장단점

장점:

  • 다양한 네트워크 환경에서의 통신 가능
  • 네트워크 리소스의 효율적 사용

단점:

  • 재조립 과정에서의 복잡성 증가
  • 패킷 손실 시 전체 데이터의 재전송 필요
  • 보안 문제 발생 가능성 (일부 방화벽에서 문제 발생)

IPv6에서의 프래그먼테이션

IPv6에서는 중간 라우터에서의 프래그먼테이션을 금지하고, 대신:

  • Path MTU Discovery를 통해 적절한 패킷 크기 결정
  • 출발지에서만 프래그먼테이션 수행
  • 더 효율적인 전송 보장

Fragmentation 회피 기술

  1. Path MTU Discovery: 경로상의 최소 MTU를 찾아 패킷 크기를 조절한다.
  2. TCP MSS (Maximum Segment Size) 조정: TCP 세그먼트 크기를 MTU에 맞게 조절한다.

실제 응용 사례

파일 전송을 예로 들어보면:
10MB 크기의 파일을 전송할 경우:

  1. 응용 프로그램 계층: 파일을 세그먼트로 분할
  2. IP 계층: 필요한 경우 추가 프래그먼테이션 수행
  3. 네트워크: MTU에 맞는 크기로 전송
  4. 수신측: 순차적 재조립 후 파일 복원

용어 정리

용어설명

참고 및 출처