네트워크/라우팅,스위칭 관리

IPv4 데이터그램 단편화

Jaden Park 2021. 4. 22. 18:12

데이터그램 단편화 개요

모든 링크 계층 프로토콜이 같은 크기의 네트워크 계층 패킷을 전달할 수 없다.
어떤 프로토콜은 큰 데이터그램을 전달하는 반면에 다른 프로토콜은 작은 데이터그램만을 전달할 수 있다.
예를 들어 이더넷 프레임은 최대 1500바이트 데이터를 전달할 수 있지만 광역 링크 프레임은 576바이트 이상의 데이터를 전달할 수 없다.
링크 계층 프레임이 전달할 수 있는 최대 데이터 양을 MTU(Maximum Transmission unit)이라 부른다.

  • '데이터그램' 이란?
    • IP계층의 가변길이 패킷
    • IP헤더와 데이터 부분으로 구성
    • 헤더는 20 byte ~ 60 byte
    • 라우팅과 전달에 필요한 정보를 포함
    • TCP/IP에서는 헤더를 4바이트 단위로 표시
  • 데이터그램 구성요소
    • ID : 각 패킷의 ID (Sender)
    • flag : flagment 되었는지 여부를 나타냄
      • 1 : 뒤에 단편화된 패킷이 존재
      • 0 : 뒤에 단편화된 패킷이 존재하지 않음
    • offset : 전체 패킷에서의 위치
      • 첫번째 flag의 offset 값은 0
      • 두번째 flag 이전 pay-load 합/ 8
  • IP 데이터크램의 캡슐화
    • IP 데이터그램은 이더넷 프레임으로 캡슐화
    • IP 데이터그램의 EtherType 필드의 값 : 0x0800

각 IP 데이터그램은 한 라우터에서 다른 라우터로 전송하기위해 링크계층 프레임 내에 캡슐화되므로 링크 계층 프로토콜 MTU는 IP 데이터그램 길이에 엄격한 제약을 둔다. IP 데이터그램 자체의 크기 제약은 문제가 되지 않지만 문제는 송신자와 목적지 간의 경로를 따르는 각 링크 계층 프로토콜을 사용할 수 있고 각 프로토콜이 서로 다른 MTU를 가질 수 있다는 점이다.

데이터그램 단편화 과정

IP헤더에서 단편화.재결합 에 필요한 옵션들은 3가지로 구성된다.
식별자, 플래그, 단편화 오프셋이 해당
하나의 데이터그램이 여러개로 단편화되고 마지막에 다시 결합되려면 단편화된 데이터그램들은 모두 같은 식별자를 가지고 있어야 한다.
즉, ID값이 달라지면 안되고 모두 동일해야한다.
그리고 어디까지가 단편화된 데이터그램인지 구별하기 위해
맨 마지막 단편화 데이터그램의 플래그는 0
다른 모든 조각의 플래그는 1로 설정
마지막으로는 오프셋 필드는 조각이 분실되었는지 또는 적절한 순서로 조각을 재결합 하기위해 데이터그램내에 조각의 위치를 명시하는 용도로 사용

위 그림을 보자.
만약 입력 패킷의 크기가 4000byte 이고 이 패킷이 나가려는 링크의 MTU는 최대 1500byte 이다.
그렇다면 4000byte의 패킷을 쪼개야 한다. 여기서 주의해야 하는게 단순히 1500byte씩 쪼개기만 하는게 아니라 쪼개는 패킷도 IP데이터그램 포맷에 맞춰야 한다.
따라서, 헤더크기인 20byte 를 고려해야 한다.
우선 4000byte의 입력패킷은 20byte의 헤더와 3980byte의 페이로드로 이루어져 있다.
우리는 페이로드인 3980byte를 1480byte씩 쪼개고 각 조각마다 20byte의 헤더를 붙어야 한다.

  • pay-load 페이로드란?
    • 사용에 있어서 전송되는 데이터를 뜻한다.
    • 페이로드는 전송의 근본적인 목적이 되는 데이터의 일부분으로 그 데이터와 함께 전송되는 헤더와 메타데이터와 같은 데이터는 제외

입력패킷 : 20 + 3980 (바이트)
3980 = 1480 + 1480 + 1020 (바이트)
1번째 단편 : 20(헤더) + 1480(페이로드) | ID : x | fragflag : 1 | offset : 0
2번째 단편 : 20(헤더) + 1480(페이로드) | ID : x | fragflag : 1 | offset : 185
3번째 단편 : 20(헤더) + 1020(페이로드) | ID : x | fragflag : 0 | offset : 370

오프셋은 첫번째 단편의 pay-load/8 로해서 나온 값으로 하면 된다.
즉, 첫번째 단편의 오프셋은 0
2번째 단편의 오프셋은 1480 / 8 = 185
3번째 단편의 오프셋은 (1480+1480) / 8 = 370

문제

1600 byte 데이터그램을 500 byte의 MTU를 가지는 링크로 전송한다고 생각하자. 원래 데이터그램에 식별번호 291이 포함되었다고 가정하자. 얼마나 많은 단편들이 생성되는가? 단편화에 관련되어 생성된 IP 데이터그램의 다양한 필드들의 값은 무엇인가?

문제풀이

입력패킷 : 20 + 1580 (byte)
1580 = 480 + 480 + 480 + 140
오프셋 : 480 / 8 = 60
1번째 단편 : 20(헤더) + 480(페이로드) | ID : 291 | fragflag : 1 | offset : 0
2번째 단편 : 20(헤더) + 480(페이로드) | ID : 291 | fragflag : 1 | offset : 60
3번째 단편 : 20(헤더) + 480(페이로드) | ID : 291 | fragflag : 1 | offset : 120
4번째 단편 : 20(헤더) + 140(페이로드) | ID : 291 | fragflag : 0 | offset : 180

'네트워크 > 라우팅,스위칭 관리' 카테고리의 다른 글

시스코 IOS Software  (0) 2021.04.26
멀티플렉싱 & 디멀티플렉싱  (0) 2021.04.22
MTU  (0) 2021.04.22
3. TCP/IP  (0) 2021.04.20
2. OSI 7 계층  (0) 2021.04.19