다양한 기록

IP 구조, Fregmentation 본문

네트워크

IP 구조, Fregmentation

라구넹 2024. 5. 6. 23:49

네트워크 레이어 프로토콜

IP

ICMP - 에러 리포팅, 라우터 시그널링

Routing protocols(라우터끼리 데이터 교환할 때 사용): RIP, OSPF, BGF

 

** ICMP

IP는 에러 신경 안씀, 신경써야 하면 ICMP 사용

 

IP 구조

ver head. len type of service length
16-bit identifier flags fragment offset
time to live upper layer header checksum
32 bit source IP address
32 bit destination IP address
options (if any)
data
(variable length,
typically a TCP or UDP segment)

ver : IPv4, IPv6

head. len : 헤더 길이 (최소 20바이트)

type of srevice : 텍스트 등

length : 전체 데이터그램 크기

16-bit identifier

flags

fragment offset

time to live : 지나칠 홉의 개수를 예측한 값, 하나 지날 때마다 하나씩 값을 내림

** 값이 0이 됐는데 도착을 안했다? -> 예정과 달리 도착을 안한 거니 폐기. 어차피 송신자가 재전송할 것

upper layer : TCP, UDP

header checksum : TCP/UDP에서 체크해서 사실 필요가 없음 -> IPv6에는 없음 ( 링크 레이어에서도 체크함

 

IP Fragmentation

길이 좁으면 데이터그램 쪼개기 가능( MTU, Max Transfer Size. 대역폭 )

각각 헤더를 다시 달아주는데 이때 identifier, flags, fragment offset 사용

쪼개진 데이터그램은 최종 도착지에서 재조립

 

length = 4000 ID = x frag flag = 0 offset = 0

MTU가 1500이라 하면 위 데이터그램은 지나갈 수 없음

 

length = 1500 ID = x frag flag = 1 offset = 0
length = 1500 ID = x frag flag = 1 offset = 185
length = 1040 ID = x frag flag = 0 offset = 370

이렇게 세 조각으로 나누면 지나갈 수 있음

이때, IP 헤더 20바이트를 고려해서 length = 1480 + 20 이 되도록 해야 한다.

 

ID는 같으면 원래 같은 패킷이었다는 것을 의미한다.

 

flag는 1이면 뒤에 더 따라올 패킷이 있음을 의미한다.

 

offset : 데이터가 조각화되면, 처음에서 얼마나 떨어져 있는 데이터인지 오프셋을 줘야 함

1480 / 8 = 185, 1480 * 2 / 8 = 370

 

왜 8로 나누는가? 그냥 단위가 8

'네트워크' 카테고리의 다른 글

DHCP, NAT  (0) 2024.05.21
IP addressing: Subnet Mask, CIDR  (0) 2024.05.21
네트워크 스케줄링 메커니즘  (0) 2024.05.06
라우터 내부, switching fabric  (0) 2024.05.06
네트워크 레이어, 포워딩과 라우팅  (0) 2024.05.06