네트워크 공부를 시작한 지 얼마 되지 않긴 했지만, 그럼에도 항상 느끼는 것이 있다. 실생활과 매우 밀접한 전공이라는 점!
오늘 공부한 IP가 특히나 그렇다. 종종 들어 익숙해진 개념에 대해 깊숙이 배우니 더 흥미롭다.
🔦 본 포스트는 유튜브 널널한 개발자 강의를 기반으로 함을 알립니다.
IP 주소에는 현재 IPv4, IPv6의 두 가지 버전이 있다. 가장 큰 차이는 주소의 길이로, IPv4는 32bit 주소 체계를 사용하며 IPv6는 128bit 주소 체계를 사용한다.
결과적으로 IPv4는 2의 32제곱의 경우의 수를 가지게 된다.
→ 인터넷에 참여할 수 있는 Host의 개수는 약 43억 개가 된다. 그러나, 전 세계의 컴퓨터는 43억 개를 훨씬 능가한다.
🔎 사람들은 대안책으로 어떤 방법을 내놓았을까?
PC에서 cmd 창을 열어 ipconfig
명령어를 입력하면 IP주소를 확인할 수 있다.
'.'으로 구분된 한 마디 내에서 나올 수 있는 수의 범위는 0~255이다. 총 256개이므로 이는 2의 8제곱, 즉 8bit가 된다.
8bit가 네 마디 있으므로 IPv4는 32bit이다(2의 32제곱).
💡 IP주소는 8bit씩 끊어서 표시한다는 점을 기억하자.
IP 주소는 다음과 같이 두 부분으로 나누어 볼 수도 있다.
24bit
ipconfig
명령어를 사용하면 IP 주소 뿐만 아니라 Subnet mask (서브넷 마스크)도 알 수 있다.
본 PC의 서브넷 마스크는 255.255.255.0 으로 확인되었다.
🔎 이 때, 이상한 점을 발견할 수 있다.
IP 주소인 172.30.1.59는 B클래스인데, B클래스의 기본 서브넷 마스크인 255.255.0.0을 사용하지 않고 C클래스의 기본 서브넷 마스크를 사용하고 있다. 이는서브네팅
과 관련이 있다. 서브네팅에 대해 설명한 링크를 첨부하였다.
255는 0xFF이고 이진수로는 1111 1111로 표기한다. 따라서 IP 주소의 첫 번째 옥텟과 서브넷 마스크의 첫 옥텟을 논리 AND 연산하면 본래의 IP 주소와 동일한 값이 나온다.
1010 1100
1111 1111
-> 1010 1100
IP 주소의 마지막 옥텟과 서브넷 마스크의 마지막 옥텟을 논리 AND 연산하면 다음과 같이 항상 0이 나오게 된다.
0011 1011
0000 0000
-> 0000 0000
결과적으로, IP 주소와 서브넷 마스크를 논리 AND 연산하면 Network ID를 얻을 수 있다.
172.30.1.59
255.255.255.0
-> 172.30.1.0 = Network ID
💡서브넷 마스크를 172.30.1.59/24 처럼 표기하기도 한다.
/24 라는 표현은 1이 24개가 있다는 뜻이다. 1은 네트워크 영역으로 사용한다는 것이며 0은 호스트 IP로 사용하겠다는 것이다. 즉, 사용자에게 0이 표현된 부분만 호스트 IP를 할당할 수 있게 만들겠다는 의미이다.
-> Host ID가 8bit이며 Network ID가 24bit라는 것을 알 수 있다.
✍🏻 옥텟
https://limkydev.tistory.com/166
https://limkydev.tistory.com/167
https://limkydev.tistory.com/168