
ver -> ip.4, ip.6 인지 알려줌 => 4 bits
head.len: 4 bits => header size 기본적으로 20bytes이나 options 등으로 더 길어질 수도 있음
TTL: 남은 hop 개수 (라우터 하나 거칠때마다 1씩 감소)
if TTL == 0 => router discards this packet
network link는 MTU(max transfer size)가 있음 -> 한번에 보낼 . 수있는 범위 존재 -> 넘어서면 잘라서 보내야함! => one datagram이 several datagram으로 나눠짐 -> 목적지에 도달해서 reassembled됨
=> 이때 ip header가 구분하기 위해 사용됨(누가누가 같은 datagram이었나~)
example
: 4000 bytes datagram (= 20 header + 3980 bytes segment size)
MTU 1500bytes
3개로 쪼개지게됨
1500 : 20 header + 1480 bytes data, offset: 0(0바이트에서 시작), fragflag: 1
1500 : 20 header + 1480 bytes data, offset: 185(1480바이트에서 시작), fragflag: 1
1040 : 20 header + 1020 bytes data, offset: 370(2960바이트에서 시작), fragflag: 0 => last fragmentation
IP address: 32bit 식별자 host나 router interface에 속해있음
interface: host/router와 physical link사이의 연결해주는 디바이스
subnet: router 통하지 않고, 물리적으로 연결되어있는 device interface
ip address
subnet 223.1.3.0/24 => 상위 24비트까지가 subnet part라는 의미
223.1.3 => 각각 8 bits(총 24bits 나타냄)
DHCP
호스트에게 네트워크를 일정시간 임대해주는 서버 => 서브넷의 호스트들을 관리
호스트가 네트워크에 join하면 서버가 IP 주소를 동적으로 할당하며, 주소의 재사용이 가능
단계:
1. host: DHCP discover => optional
2. DHCP server: DHCP offer => optional
3. host: DHCP request
4. DHCP server: DHCP ack
*1.2번은 client가 이전 ip address기억하면 넘어갈 수 있음
ip address말고
시나리오
1. 랩탑 -> DHCP를 통해 ip address, address of first-hop router, address of DNS server를 얻고자 할거
2. DHCP REQUEST 메세지는 udp에 encapsulate되고, udp는 IP에 encapsulate되고, IP는 Ethernet에 encapsulate됨
3. Ethernet은 LAN을 통해 broadcast하고, DHCP server의 router에서 받게됨
4. demux함
5. DHCP server에서 DHCP ACK메세지에 client's ip address, ip address of first-hop router for client, name & ip address of DNS server를 담음
6. 보냄
7. 이로써 client는 ip address, name and ip address of DNS server, ip address of its first-hop router를 알게됨
IP 주소를 계층 체계로 구성한다 => ISP가 담당

21~23번째 bit로 8개의 기관을 관리할 수 있음!
이렇게 계층적으로 나눠서 앞선 bit가 맞으면 나에게로 보내~~가 가능
이런 정보는 어디서 구함..? ICANN이라는 글로벌 기구가 있음, 여기서 전체 IP 주소에대한 관리, DNS 등 전체 관리가 가능해짐

여러 개의 호스트가 특정 ip를 사용해야 할 때...!
이 해당 Public ip는 외부 네트워크와 연결되어있고, host들과 public ip는 로컬에서 연결이 되어있음(호스트들은 임의의 ip주소를 부여받음 -> 구분가능)
장점
▪ subnet 내의 host를 위해 provider ISP로부터 하나의 IP 주소 받으면 됨 -> 외부 연결을 위한
▪ 외부에 알리지 않고 로컬 네트워크의 호스트 주소 변경 가능 => 로컬 안에서만 변경하면 되니께
▪ 로컬 네트워크의 장치 주소를 변경하지 않고 ISP 변경 가능(host들은 바깥 세상 상관없디~)
▪ 보안 문제 해결 => 로컬 안에 있는 호스트들은 직접적으로 외부 네트워크와 연결 할 수 없고, 보여지지 않음
등장 배경: IPv4가 고갈 됨,
Ipv4은 TTL field가 있어서 매번 router에서 checksum을 계속 계산, option field가 있어서 속도 저하 => header format을 좀 바꿔보자

문제는! 한방에 ipv6를 다 인식하게 만들 수가 없었음
=> 그래서 ipv4 datagram안에 ipv6를 넣어둠

ipv6를 처리하지 못하는 CD를 지나야 . 할때는 ipv4 header안에 ipv6 datagram을 넣고, source ip, destination ip를 변경해서 전송한다. E가 받아서 header떼고 다시 ipv6의 datagram으로 처리함
*여기서부터 잘 모르겠다..
flow table에 match/action이라고 있음
packet의 header를 보고 해당하는 packet은 flow table에 있는 action을 취하게됨