-
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