private ip addr은 인터넷에 나가지 못하는 non routable address! 얘를 인터넷에 나갈 수 있는 public ip addr로 바꿔주는 애를 NAT라고 한다.
local network를 떠나 인터넷으로 나가는 애들은 다 똑같은 주소(공식 ip 주소)로 바뀌어서 나감! 구분은 src port로..
만약 16 bit port num이면? 65535(2^16)개의 클라가 하나의 public ip주소 같이쓰기 가능
small office, home office라서 많은 범위의 ip 필요 없을때 유용.
주소가 노출이 안되니 보안 좋음
내 로컬 네트워크 안에서 device의 주소를 마음껏 바꿀 수 있고, 상위 ISP에게 알려줄 필요도 없다.
시나리오: privte 클라 → public의 서버
LAN에서의 주소, 포트와 나갈때 주소, 포트 기록.
IPv4쓰면 되지 왜 NAT 쓰는가?
왜 L4 계층의 포트 번호를 막 봐? 레이어링 망가져!
라우터에서 끊기니까 e2e connectivity를 파괴.
private 서버 + public 클라면 어떻게 할거야? → NAT traversal techniques
8개 파트로 쪼개서 콜론으로 구분.
0의 반복은 생략 가능.
IPv4와는 달리, multiple IP addr can be allocated to one NIC card.
fixed length 40 byte header
flow label: 패킷들의 플로우를 조절하려고 했으나..실패!
next header: 데이터 필드가 전달될 프로토콜 식별
hop limit: ghost traffic 잡음. TTL과 같다.
데이터 필드에 있는 것이 다른 프로토콜의 메세지가 아니라 또다른 IPv6 헤더 일 수 있음.
ipv6의 경우 fragmentation 라우터에서 안함. fragment header은 호스트에서만 쓸 수 있다.
option, padding 없어짐.
헤더 길이가 고정됐으므로 header length 필요 없음.
라우터가 fragmentation 하지 않으니 frag 필드 필요 없음.
고품질이라서 에러 적으니까 checksum 뒤로 뺌
TTL → Hop limit
Type of service → Traffic class
Total length → payload length
Upper layer protocol → next header
어떻게 네트워크가 IPv4, IPv6 모두 작동하게 할까?
SDN: Software Defined Networking
SDN은 Qos(서비스 품질 우선순위)도 있고 IPv6이 실패한 pkt flow 조절도 성공함!
"match plus action" 에서
match: 모든 레이어의 헤더 값 보고 match.
action: 기존 라우팅 프로토콜은 forwarding만 했는데 sdn은 load balancing과 rewrite(NAT), block, drop, firewall 등등도 해준다.
여러개 서버가 마치 하나인것처럼...(single point of failure 대비) → Logically centralized
forwarding 말고 다른 action도 취하므로 FIB 대신 flow table 이라고 한다. 라우터는 packet switch 라고 한다.
match 볼때 flow 단위로 보고 특별 제어 가능. traditional 라우터는 불가능했던 load balancing이 가능해졌다.
Router
Firewall
Switch
NAT