IP 란 ?
IP는 8비트 씩 4자리로 이루어진 32 자리 이진수로 구성되어 있습니다.
아래 포스팅에 IPv4 와 IPv6에 대해서도 한번 읽어보시는 것을 추천 드립니다.
- 192.168.0.1
위 IP 주소를 예를 들어 이진수로 표현했을 땐 다음과 같습니다.
2^7 ( 128 ) | 2^6 ( 64 ) | 2^5 ( 32 ) | 2^4 ( 16 ) | 2^3 ( 8 ) | 2^2 ( 4 ) | 2^1 ( 2 ) | 2^0 ( 1 ) | |
192 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
168 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
여기서 네트워크 주소는 어디까지 이고 호스트 주소는 어디 까지 일 까요 ?
IP Class
Class의 개념을 알게 되면, IP의 주소에서 어디까지가 네트워크 영역이고 호스트IP 영역인지 알 수 있습니다.
네트워크 영역과 호스트 영역을 왜 알아야 할까요 ?
“IP 주소는 하나의 네트워크안에 IP들은 네트워크 영역은 같아야하고, 호스트 IP는 서로 달라야 통신이 가능하다.” 라는 규칙 때문입니다.
Class의 개념을 알게 된다면 아래 주소의 네트워크 주소는 어디까지 이고 호스트 주소는 어디 까지인지 알 수 있습니다.
정답부터 말하자면 192.168.0.1 는 C 클래스로 192.168.0 까지가 네트워크 영역이고, 1이 호스트 영역입니다.
어떻게 알 수 있었을 까요 ? 이제 자세히 알아봅시다.
Class의 종류는 총 5가지가 있습니다.
- A클래스
- B클래스
- C클래스
- D클래스
- E클래스
하지만 이중에서 D, E 클래스는 멀티캐스트용, 연구용으로 사용하여
보통 A, B, C 정도만 알고 있으면 충분합니다.
각 클래스는 다음 표를 보고 알 수 있으며 클래스를 통해 네트워크와 호스트를 구분할 수 있습니다.
클래스 | 2진수의 시작 (s : 네트워크, h : 호스트 ) | 네트워크 시작과 끝 주소 (개수) | 호스트 범위(개수) |
A 클래스 | 0sss ssss.hhhh hhhh.hhhh hhhh.hhhh hhhh | 0.0.0.0 ~ 127.255.255.255 ( 2^7 - 1 :127 개 ) => -1 를 한 이유는 127은 네트워크 범위에서 제외된다는 약속 때문 |
2^24 -2 개 -2 는 네트워크, 브로드캐스트 주소 제외 |
B 클래스 | 10ss ssss.ssss ssss.hhhh hhhh.hhhh hhhh | 128.0.0.0 ~ 191.255.255.255 ( 2^14 개 ) |
2^16 - 2 개 -2 는 네트워크, 브로드캐스트 주소 제외 |
C 클래스 | 110s ssss.ssss ssss.ssss ssss.hhhh hhhh | 192.0.0.0 ~ 223.255.255.255 ( 2^22개 ) |
2^8 -2 개 -2 는 네트워크, 브로드캐스트 주소 제외 |
위 표를 통해 예시로 든 IP 주소 192.168.0.1 는 192.0.0.0 ~ 223.255.255.255 범위에 있기 때문에 C 클래스 인것을 알 수 있으며,
네트워크 개수는 2^22개, 호스트 개수는 2^8 -2 개 인것을 알 수 있습니다.
CIDR (Classless Inter-Domain Routing)
CIDR 는 기존 네트워크 클래스로 나눠 정의하던 IP정보를 Class 없이 유연하게 나눠줄 수 있는 라우팅 기법입니다.
원래는 Class로 A, B, C, D, E 클래스로 나누어서 네트워크를 사용했지만,
클래스로 나누게 되는 경우 IP들은 유연성이 없고 IP의 개수가 많기 때문에 좀 더 유연하게 사용하고자 CIDR라는 개념이 나오게 되었습니다.
Class와 CIDR의 차이점
클래스 | 앞 비트 | 시작 주소 | 끝 주소 | 해당 CIDR 블록 |
A 클래스 | 0 | 0.0.0.0 | 127.255.255.255 | /8 |
B 클래스 | 10 | 128.0.0.0 | 191.255.255.255 | /16 |
C 클래스 | 110 | 192.0.0.0 | 223.255.255.255 | /24 |
Class와 CIDR를 표현하면 위 표 처럼 표현할 수 있습니다.
Class 단위를 이준수로 놓고 보면 앞자리를
A 클래스 : 0000
B 클래스 : 1000
C 클래스 : 1100
이렇게 앞자리 4개의 비트수를 정해서 사용하는 것을 볼 수 있습니다.
이렇게 Class로 고정적으로 사용하던 것을 CIDR를 사용하면 뒤에 서브넷(가변길이), 어디서 끊어 읽어 주어야할지 알려주는 /(슬래시)와 비트수를 함께 붙여 표기하여
단 한줄만으로 네트워크 범위를 알수 있고, 자유롭게 사용할 수 있습니다.
CIDR 표시 방법
만약 192.168.0.1/32 를 2진수로 표현한다면 다음과 같이 표현가능합니다.
1100 0000.1010 1000.0000 0000.0000 0001
여기서 /32의 32는 비트 수를 의미하며 맨 앞 부터 32개 모두 이진수 0과 1중 1로 되어 있다는 것을 의미합니다.
- 2 진수
1111 1111.1111 1111.1111 1111.1111 1111
- 10진수로 표현
255.255.255.255
이것을 AND 연산하면
AND 연산 : 두 값의 각 자릿수를 비교해, 두 값 모두에 1이 있을 때에만 1을, 나머지 경우에는 0을 계산
1100 0000.1010 1000.0000 0000.0000 0001
1111 1111.1111 1111.1111 1111.1111 1111
--------------------------------------------------------
1100 0000.1010 1000.0000 0000.0000 0001
자기 자신 192.168.0.1 만 나오게 되며 총 사용할 수 있는 IP 갯수는 1개가 됩니다.
만약 호스트 IP 갯수를 늘리고 싶다면 ?
CIDR 주소를 /30이라고 가정하고 계산해보겠습니다.
/30 은 맨 앞부터 1이 30개 있다는 뜻으로 똑같이 AND 연산을 해보겠습니다.
1100 0000.1010 1000.0000 0000.0000 0001
1111 1111.1111 1111.1111 1111.1111 1100
------------------------------------------------------------
1100 0000.1010 1000.0000 0000.0000 0000
이렇게 되면 총 32 비트중 30을 뺀 00 이 남게되는데
이렇게 되면 총 사용할 수 있는 IP 개수는 ( 2^2 - 2 ) 2개로 늘어나게 됩니다.
이와 같이 /24의 숫자를 필요에따라 더 쓰거나 적게 사용하여 IP를 적절하게 할당하는 방법을
서브넷팅, 슈퍼넷팅 이라고 합니다.
서브넷팅과 슈퍼넷팅
서브넷팅과 슈퍼넷팅
- 서브넷팅 ( 네트워크 IP 더 많이 쓰기) : 서브넷 마스크를 호스트ID 방향(오른쪽)으로 움직인다. (값 증가)
- 슈퍼넷팅 ( 호스트 IP 더 많이 쓰기) : 네트워크 방향(왼쪽)으로 움직인다. (값 감소)
서브넷팅의 경우 /N 의 N의 수가 증가함에 따라 네트워크수(서브넷 수)는 2배씩 증가하고 호스트 수는 2배씩 감소합니다.
슈퍼넷팅의 경우 /N 의 N의 수가 감소함에 따라 네트워크수(서브넷 수)는 2배씩 감소하고 호스트 수는 2배씩 증가합니다.
서브넷팅 개념과 사용하는 이유 ?
"한 개의 네트워크를 서브넷 마스크를 이용해 여러 개의 서브넷 네트워크로 분할"
왜 한 개의 네트워크를 여러 개로 나누는가 ?
만약 , 일반 가정집에 A 클래스를 부여한다면 다쓰지도 못하고 한참남는 수많은 호스트 IP를 낭비할 것입니다.
이러한 문제로 인해 효율적으로 사용할 수 있도록 한 방법이 서브넷팅 입니다.
슈퍼넷팅 개념과 사용하는 이유 ?
"서브넷팅과 반대로 분할된 여러개의 작은 네트워크를 하나의 컨다란 네트워크로 합치는 것"
슈퍼넷팅으로 얻는 효과
슈퍼넷팅을 통해 메모리, CPU 자원 낭비를 막을 수 있는 효과를 얻을 수 있습니다.
'◼ CS 기초 지식 > [네트워크]' 카테고리의 다른 글
HTTP와 HTTPS의 개념 및 차이점에 대해 알아보자. (2) | 2022.09.22 |
---|---|
URI와 URL 비슷해보이는데 차이점이 뭘까? ( 완벽 정리 ) (2) | 2022.09.22 |
TCP와 UDP란? 왜 사용하는지 알아보자 (0) | 2022.09.21 |
OSI 7 계층(OSI 7 LAYER)이란 ? 개념 및 각 계층 역할구조 까지 쉽고 간단하게 알아보자. (1) | 2022.09.18 |
IPv4와 IPv6 란? IPv4와 IPv6의 차이점에 대해 알아보자. (3) | 2022.09.16 |