IP protocol을 통해 주소에 대한 기본적인 해석을 알아본다.
IP는 디바이스를 off->on을 했을 때, 변경될 수 있고 아닐 수도 있다. 변경된다면 유동주소이고 변경되지 않는다면 고정주소이다. DHCP서버가 알아서 할당해준다.
IP 버전을 알아보자.
- IPv4는 32bit로, 약 43억개개의 주소를 만들 수 있다.
- IPv5는 64bit이다.
- IPv6은 128bit이다. 128bit은 IP주소를 인구당 몇십억개를 사용할 수 있게 된다. 이는 IOT 통신을 위한 모든 IP를 할당할 수 있다. 이는 20년전부터 이야기가 나왔고 장비들 모두 IPv6를 지원하지만 오래걸린다. IPv4를 아직도 사용하며 공유기와 같이 사설망을 만들어, IP주소를 디바이스에 부여한다. 아직까지 IPv4로 처리할 수 있고한다.
서버의 경우 고정 IP를 사용한다. 클라이언트들이 요청을 보내는데 IP가 변경되면 당연히 안 된다.
IP 주소는 예외를 제외하고 세계적으로 고유하다.
그 중 하나는 loop back주소로 로컬 상에서 클라이언트와 서버를 모두 실행하기 위해서이다.
그리고 공유기에서 제공하는 사설망 주소는 192.168.~~로 예외적으로 고유하지 않다.
IP주소는 .으로 구분된 10진수로 많이 보았다. 하지만 IP는 헤더에 2진수로 저장된다.
2진수를 알아보기 편리하게 위와 같이 끊어 출력한다
IP 초창기 때, class를 사용하여 network까지의 경로를 결정했다. 이를 route가 처리하는데, class의 Netid를 통해, network까지, 네트워크 수신을 처리했던 것이다.
Class A부터 Class E까지 존재하며, 일단 C까지만 알아보자.
- Class A: 처음 bit이 0인 경우
- Class B: 처음 두 bit가 10인 경우
- Class C: 처음 세 bit가 110인 경우
이 때 IP class 종류별로의 비율
이 때 class 별로 Netid와 hostid의 비율이 다르다.
- Class A: 1:3
- Class B: 2:2
- Class C: 3:1
A는 그럼 개별 Netid가 총 2^7만큼 생긴다.
B는 그럼 개별 Netid가 총 2^14만큼 생긴다.
c는 그럼 개별 Netid가 총 2^21만큼 생긴다.
이 개별 Netid를 block 단위로 나누어, 개별 네트워크에 부여하면 라우트가 이 앞 Netid를 통해 네트워크까지 데이터를 인도해준다.
그런데 C의 경우 2^8만큼, 즉 256개의 device에 hostId를 부여할 수 있게 되고
257개가 있는 경우엔 B를 사용해야 한다.
왜냐하면 두 개의 block을 하나의 네트워크에 사용할 수 없었기 때문이다.
마치 전화번호와 동일하다.
class의 구분을 위한 이진수와 십진수이다.
이를 위한 비율이다.
Class A이다. 이는 하나의 block을 네트워크에 연결하면 16,777,216개의 hostid를 사용할 수 있고, 다 못쓴다면 그냥 낭비되는 것이다.
B도 마찬가지이다.
C는 부족해보인다.
그럼 B를 사서 낭비해야한다.
하지만 현대 기술은 이런식으로 동작하지 않는다.
나중에 알아보자.