IP Datagram

IP 형식은 위 그림과 같다.
TCP와 마찬가지로 최소 20bytes의 header 크기를 가지고 있다.
Type of service : Data의 Type
Length : Header + Data 총 길이
16-bit identifier/flgs/fragment offset
: 크기가 큰 Datagram을 여러 조각으로 나누어 전송하는 과정에서 조각난 fragment 정보들을 표현
Time to live : TTL (남은 이동 가능한 hop 수)
Upper Layer : TCP or UDP
MTU (Max Transfer Size)
- IP Datagram의 최대 전송 크기
- IP Datagram의 크기가 너무 거대하면 이를 잘게 쪼개어 전송한다.
Datagram fragmentation

원본 4000byte의 Datagram을 fragment로 나누었다.
1500 / 1500 / 1040 길이로 나누었으며 포함된 내용은 다음과 같다.
length = header + data 길이
fragflag = fragment 여부 / 뒤에 잘린 Datagram이 더 있는지
offset = 이전 Payload / 8
각 IP Datagram은 header 길이 20을 포함하기 때문에
Payload는 1480 + 1480 + 1020 = 4000 이다.
IPv4 Addressing
IP Address
IP 주소 등급
ICANN (Internet Corp. for Assigned Names and Numbers)에서 IP 주소 관리
Network ID의 범위에 따라 단계를 나눈다.

Subnet
IP 주소는 앞의 Subnet part과 뒤 Host part로 나뉜다.

Subnet Mask는 Network ID로 사용할 구간까지 연속된 1로 표현한다.
Subnet Mask를 통하여 IP 주소의 어디까지가 Network ID인지 구분할 수 있다.

IP주소/끝나는 부분 으로 표현
CIDR 필요성

Client가 Network에 연결하기 위해 주소가 필요.
1) Client가 DHCP Server에 주소 요청
2) DHCP Server가 주소 제공
3) Client가 주소 확인
4) DHCP Server가 확인
현재 IPv4 주소는 고갈 -> IPv6를 사용하려고 하지만 제약이 많음
이를 해결하기 위해 NAT (Network Address Translation)이 등장
하나의 공유기를 사용하는 내부망과 외부망의 연결 시, 공유기가 연결을 관리.
공유기를 통해 내부 IP 주소와 Port 번호를 변형하여 연결한다.

IPv6는 128bit 길이의 주소 체계이다.
기존 10진수 형식의 표현에서 16진수 표현법으로 변경되었다.

기존 IPv4에서 보다 주소 길이가 늘어났기 때문에 오버헤드를 줄이기 위해 Header 정보들을
개편하였다.
최소 크기는 40bytes이며, 확장 헤드를 이용하여 헤드를 확장할 수 있다.
-> IPv4에서 fragmentation 과정과 대응
IPv4 에서 IPv6로 주소 체계를 변경하는 것은 상당한 시간이 필요하다.
-> Router가 IPv4를 지원하기 때문에, 모든 Router를 당장 교체하는 것이 불가능.
IPv4에서 IPv6 주소를 사용하는 방법은 tunneling을 이용하는 것이다.
IPv4의 Datagram에서 Payload 부분에 IPv6의 Datagram을 넣어서,
IPv4에서도 IPv6의 내용을 사용할 수 있도록 한다.
