[Network] IP fragmentation

2023. 5. 31. 12:00·공부/Network
목차
  1. IP fragmentation
728x90

IP 데이터그램의 형식은 다음과 같다.

http://www.cs.umd.edu/~shankar/417-F01/Slides/chapter4b-aus/sld001.htm

데이터 그램은 transport layer의 세그먼트에 header로 감싸 만든 것이라고 배웠다.

 

그래서 보다싶이 데이터 그램의 data에 해당하는 부분이 segment이고 나머지 부분이 header가 된다.

 

IP fragmentation

만약 IP 데이터 그램의 사이즈가 크다면 여러 데이터 그램을 쪼개게 되는데 이러한 과정을 IP fragmentation이라고 한다.

 

아래 그림과 같이 라우터에서 라우터로 이동할 때는 link layer를 거치게 되는데 link layer는 MTU(Maximum Transmission Unit)이라는 최대 전송 단위를 가지고 있다.

 

만약 데이터 그램의 사이즈가 link layer의 MTU보다 크다면 network layer에서 link layer로 거치기 전에 여러 개의 데이터 그램으로 쪼개서 보내게 된다.

 

이후 최종 목적지에 도착하게 되면 나눠진 데이터 그램들이 합쳐진다.

만약 IP 데이터 그램의 크기가 4000Bytes이고 network link 의 MTU가 1500Bytes이라면 데이터 그램은 총 3개로 나눠질 것이다.

 

여기서 각 데이터 그램의 크기가 1500, 1500, 1000이라고 착각하기 쉬운데 실제로는 그렇지 않다.

 

나눠진 각 데이터 그램들은 원본 데이터 그램과 동일한 header를 가지고 있어야 하기 때문이다.

 

데이터 그램의 header가 20Bytes라고 하자.

 

그러면 원본 데이터 그램의 data 크기는 3980Bytes가 될 것이다.

 

MTU가 1500Bytes라고 가정했는데 실제 header 20bytes가 포함되어 있으므로 실제 보낼 수 있는 최대 data의 크기는 1480Bytes이다.

 

그러므로 실제 각 데이터 그램의 크기는 다음과 같다.

참고로 데이터 그램이 나눠질 때 같은 데이터 그램으로부터 나왔다는 사실을 알 수 있는 비트가 identifier bit이다.

 

나눠진 데이터 그램의 id는 원본 데이터 그램의 id와 같다.

 

이 식별자를 사용하여 목적지에서 데이터 그램들이 하나의 데이터 그램으로 합쳐지게 된다.

 

flag는 3비트로 되어있는데 위치마다 다음의 의미를 지니고 있다.

 

  1. 첫 번째 비트 : 0으로 고정
  2. 두 번째 비트 : 1이면 나누지 않는다. (MTU보다 크면 보내지 않는다.) 0이면 나눈다.
  3. 세 번째 비트 : 0이면 더 이상 나눠진 데이터 그램이 없다는 뜻이고 1이면 더 있다는 뜻이다.

flag가 000이라면 더 이상 데이터 그램을 나누지 않는다는 뜻이고 더 이상 나눠진 데이터 그램이 없다는 뜻(마지막 frag)이다.

 

또한 offset은 8로 나눈다.

 

 

728x90

'공부 > Network' 카테고리의 다른 글

[Network] DHCP와 NAT  (0) 2023.06.06
[Network] IP addressing  (0) 2023.06.04
[Network] Network layer(네트워크 레이어)와 Router  (0) 2023.05.29
[Network] TCP RDT  (0) 2023.04.27
[Network] RDT (Reliable Data Transfer protocol)  (0) 2023.04.22
  1. IP fragmentation
'공부/Network' 카테고리의 다른 글
  • [Network] DHCP와 NAT
  • [Network] IP addressing
  • [Network] Network layer(네트워크 레이어)와 Router
  • [Network] TCP RDT
웅대
웅대
알고리즘과 백엔드를 중심으로 열심히 공부 중입니다! 같이 소통하며 공부해요!
    250x250
  • 웅대
    웅대 개발 블로그
    웅대
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 백준 알고리즘
        • dp
        • 문자열
        • 정렬
        • 스택
        • 브루트 포스
        • 이진 탐색
        • 정리
        • 우선순위 큐
        • 자료구조
        • 그래프
        • 기타
        • 그리디
      • 컴퓨터 언어
        • Kotlin
        • Python
        • C#
      • 공부
        • Database
        • Android Studio
        • Algorithm
        • 컴퓨터 구조론
        • Spring
        • lombok
        • AWS
        • Network
        • OS
        • Git & GitHub
        • AI
        • Computer Vision
        • 보안
        • Nginx
        • 프론트
        • express
        • GCP
        • grokking concurrency
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    codetree
    ChatPromptTemplate
    influxDB CLI
    ci/cd
    AWS Lambda
    Merge
    푸쉬 알람
    다익스트라
    binary search
    openvidu 배포
    code tree
    파이썬
    embedding
    스택
    스프링 OAuth2
    parametric search
    Vector Store
    nn.RNN
    bfs
    RNN
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
웅대
[Network] IP fragmentation
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.