NAT: Network Address Translation
- 내부적으로는 유일한 ip 주소를 사용한 패킷이 외부로 나가면 유일하지 않으므로 돌아올 수 없음
- -> gateway router에서 자기자신의 유일한 ip 주소로 바꿔주는 작업을 함

- gateway router의 ip 주소는 여러개 = 인터페이스 개수
- subnet: 같은 네트워크 id를 가지는 것들의 집합
디자인 상의 문제점
layer 디자인이 무너짐
- 원래는 destination ip address로 host를 찾고 port 번호로 host 내의 processor를 찾아감
- router가 ip 패킷의 소스 주소를 고쳐버리고 데이터 부분까지 고쳐버림
- -> port 번호로 host 찾고 processor를 찾을 방법이 없음
현실적인 문제점
- 변환되기 때문에 외부에서 찾아들어올 방법이 없음
IPV4 vs IPV6
- IPV4는 address space와 security 문제가 있음
- 어떤 프로토콜이든 아키텍처를 바꾸기 어려움
- 전세계 모든 라우터를 변경하기 어려우므로 IPV6로 바꾸기 어려움
Dynamic Host Configuration Protocol (DHCP)
- 동적으로 IP 주소를 배정해주는 프로토콜
- 고정 IP는 DHCP가 필요없음
- DHCP는 IP 주소 회수 후 재사용 가능
- 고정 IP에 비해 address pool을 유연하게 사용 가능

- DHCP discover
- src: 0.0.0.0
- dest: 255.255.255.255 -> broadcast
- broadcast: subnet에 있는 모든 멤버들은 다 메세지를 받음
- 67번 포트만 열려서 listen하고 있으므로 DHCP 서버만 discover 메세지를 의미 있게 받아들임
- DHCP offer
- 사용 가능하다는 offer를 주는 메세지
- src: 서버 자신
- dest: broadcast
- 68번 포트만 열려서 listen하고 있으므로 client만 메세지를 의미 있게 받아들임
- DHCP request
- DHCP offer에 대한 request를 전송
- DHCP 서버가 여러개일 수도 있으므로 1개만 정해서 전송
- dest: broadcast로 선택한 offer를 알려줌
- DHCP ACK
IP fragmentation, reassembly

- MTU: link가 한번에 보낼 수 있는 data unit의 최대 사이즈
- 문제: MTU<패킷 사이즈면 패킷을 전송할 수 없음
- 해결: 분리해서 독립적인 사이즈의 frame으로 바꿔 서로 다른 fragment 패킷들로 만든다
- 쪼개서 보내진 fragment 패킷은 도착지에서 다시 assemble됨

- header : 20byte, data: 2980
- MTU=1500 이므로 3개로 쪼갬
- 조립해야 하므로 ID는 공통
- 뒤에 더 붙을게 있으면 fragflag=1
- offset은 데이터가 어떤 위치에 있었는지 알려줌