Router가 하는일
1. forwarding
패킷을 목적지 방향으로 전달한다. (헤더에 적혀있는 목적지로)
과정
두번째 예제에서
addr range 두번째와 세번째를 비교해보면
두번째 range가 더 길게 (보다 정확하게) 매칭이되므로 선택이된다.
32bit 주소체계,
2^32개의 IP주소를 가진다.
8비트씩 끊어서 255가 최대
IP주소는 호스트에 들어있는 N/W interface(NAC)를 지칭한다.
즉 IP주소를 여러개 동시에 가질 수 있다. --> 대표적인 예가 Router
막무가내로
: 문제점 -> forwarding table이 너무너무 커진다.
계층화
N/W id(=prefix=Subnet ID) 와 Host ID로 나눔
addr와 Mask는 항상 같이다닌다.
같은 prefix끼리 묶인다. forwarding table에서 단순화됨.
Add하기도 쉬워진다. (prefix만 맞춰주면 되므로)
선정하는데 그렇다고 모두 사용는것도 아님.낭비하게 된다.
Class C로가면 기관은 많아지지만 하나받으면 255개의 host만 처리가능하다. (부족함)
Class간 유연함이 매우 떨어져 Class개념이 사라지고
Classless Inter-Domain Routing(CIDR)이 생겨남
2개의 32비트 숫자를 사용한다.
Network number = IP address + Mask
Longest prefix matching방식으로 찾는다.
같은 prefix를 가진 device들의 집합
Router를 거치지 않고도 접근 가능한 host들의 집합
Router도 IP주소를 갖는다.
예제)
6개의 서브넷. prefix가 같은 것이 subnet이니까
IP address는 32bit의 주소공간이며 interface를 지칭한다.
2^32개의 host지원가능 ( 약 40 억)
초창기에는 매우 많은 수였으나,
상업화 후에는 부족하게 되어
IPv6로 재디자인하게 되었다.
IPv6는 128bit로 늘림으로 2^128개의 host가 지원 가능하다-> 매우 많음 ( 해변 모래알만큼의 양 .. )
하지만 현재는 iPv4를 사용한다.
왜?
이미 IPv4의 용량은 초과했지만 재활용으로 버티고 있다.
-> NAT 라는 기술 (trick 같은 느낌이랄까)
local주소는 글로벌(외부)로 나갈 수 없기 때문에 NAT가 IP 주소를 바꿔준다.
재사용하긴 하지만 문제점이 있다.
IP packet (Header | Data) 에서
Header부분의 source IP -> 헤더정보 & Data부분까지 바꿔버린다. (계층 violation)
Port 넘버의 기능 : host내부에서 process를 찾아가는 용도
IP주소 : Host를 찾아가는 용도
Host를 찾는데에 포트번호를 써버림. 서버를 사용하게 되지 못한게 된다.