IPv4
IPv4는 32비트를 사용합니다.
흔히 보는 192.168.x.x 역시 IPv4를 사용한 IP입니다.
IPv4 주소는 숫자를 4개의 점으로 구분하는데, 각 숫자는 8비트를 사용하기 때문에 총 32비트인 것입니다.
이렇게 8비트 단위로 나누고 점으로 구분한 것을 옥텟(Octet)이라 합니다.
그리고 8비트의 옥텟의 최대 값은 255인데,
8비트를 이진수로 표현하면 11111111 이고, 이를 십진수로 표현하면 255가 됩니다.
네트워크 주소와 호스트 주소
IP주소는 네트워크 주소와 호스트 주소 두 부분으로 나뉩니다.
네트워크 주소는 호스트(단말)들을 모은 네트워크를 지징하는 주소입니다. 네트워크 주소가 동일한 네트워크를 로컬 네트워크라 합니다.
호스트 주소는 하나의 네트워크 내에 존재하는 호스트(단말)을 구분하기 위한 주소입니다.
이렇게 네트워크 및 호스트 주소를 나누는 과정을 서브넷팅이라 합니다.
네트워크 크기가 너무 커지게 되면 네트워크 내 특정 단말과 통신을 시도할 때 브로드캐스트의 범위가 너무 커지게 됩니다.
그러다보면 네트워크 관리 및 효율성이 나빠지게 됩니다.
이를 해결하기 위해 상황에 맞는 네트워크 및 호스트 크기를 설정해야 하는데,
IP 주소에서 네트워크 주소와 호스트 주소를 구분하는 경계점이 고정되어있지 않습니다.
이 네트워크 크기를 다르게 할당할 수 있도록 클래스가 등장했습니다.
이 클래스를 사용하는 방법을 클래스풀 서브넷팅(Classful Subnetting)이라 합니다.
클래스풀 서브넷팅
네트워크와 호스트를 구분하기 위한 클래스는 A, B, C, D, E 다섯 가지가 존재합니다.
하지만 D 클래스틑 멀티캐스트를 위해 사용되고, E 클래스는 예약 되어있는 클래스이기 때문에 일반적 사용자는 A, B, C 만을 사용하게 됩니다.
각 클래스의 네트워크 및 호스트 주소를 나누는 지준은 아래와 같습니다.
A -> 네트워크.호스트.호스트.호스트
B -> 네트워크.네트워크.호스트.호스트
C -> 네트워크.네트워크.네트워크.호스트
클래스트 풀 서브넷팅 방법에서 단말(호스트)가 가진 주소가 어떤 클래스에 속하는지 알 수 있는 방법은, 맨 앞 옥텟의 주소를 보고 판단할 수 있습니다.
A -> 1~127.0.0.0 (로컬호스트)
B -> 128~191.0.0.0
C -> 192~223.0.0.0
D -> 224~239.0.0.0
이 방법을 통해 흔히 아는 192.168.x.x는 C 클래스에 속하는 방법임을 알 수 있습니다.
사실 현재는 클래스 풀 서브네팅 방식은 사용되지 않습니다.
클래스별 할당 방식은 네트워크 크기를 미리 정의하기 때문에, 낭비되는 IP 주소가 발생되기 때문입니다.
이제는 클래스를 사용하지 않는 클래스리스 서브넷팅(Classless Subnetting) 방식을 사용합니다.
클래스리스 서브넷팅
클래스리스 서브넷에서는 서브넷 마스크를 사용해 네트워크 및 호스트 주소를 구분합니다.
서브넷 마스크는 IP 주소와 같은 길이의 비트로 구성되며
네트워크 주소는 1로, 호스트 주소는 0으로 설정됩니다.
예를 들어 서브넷 마스크가 255.255.255.0 이라면 24비트가 네트워크 주소이고, 나머지 8비트가 호스트 주소가 됩니다.
192.168.x.x/24와 같은 형태를 보신 분들이 있을 것입니다.
슬래쉬(/) 뒤의 24가 네트워크 주소 길이를 의미하며, 이는 곧 서브넷 마스크가 255.255.255.0라는 것을 의미하게 됩니다.
이러한 표기법을 CIDR(Classless Inter-Domain Routing)이라 합니다.
이 서브넷 마스크로 서브넷을 구할 수 있습니다.
서브넷
서브넷, 즉 서브네트워크는 네트워크 내부의 네트워크입니다. 서브넷을 통해 네트워크 트래픽은 불필요한 라우터를 통과하지 않고, 더 짧은 거리를 이동할 수 있습니다.
출처 : https://www.cloudflare.com/ko-kr/learning/network-layer/what-is-a-subnet/
클래스리스 방식으로 서브넷팅을 해 보겠습니다.
[기본 네트워크 (서브넷팅 전)]
- IP 주소 : 192.168.1.0/24
- 서브넷 마스크 : 255.255.255.0
- 가능한 호스트 주소 : 192.168.1.1 ~ 192.168.1.254 (254개의 호스트)
💡 192.168.1.0은 네트워크 주소로 사용됩니다.
[서브넷팅 후]
- 192.168.1.0/26 서브넷
- 서브넷 마스크 : 255.255.255.192
- 가능한 호스트 주소 : 192.168.1.1 ~ 192.168.1.62 (62개의 호스트)
- 192.168.1.64/26 서브넷
- 서브넷 마스크 : 255.255.255.192
- 가능한 호스트 주소 : 192.168.1.65 ~ 192.168.1.126 (62개의 호스트)
- 192.168.1.128/26 서브넷
- 서브넷 마스크 : 255.255.255.192
- 가능한 호스트 주소 : 192.168.1.129 ~ 192.168.1.190 (62개의 호스트)
- 192.168.1.192/26 서브넷
- 서브넷 마스크 : 255.255.255.192
- 가능한 호스트 주소 : 192.168.1.193 ~ 192.168.1.254 (62개의 호스트)
위와 같이 192.168.1.0/24를 네 개의 서브넷으로 나눠 효율적으로 네트워크를 사용할 수 있게 됩니다.
참고로, 단말의 정확한 호스트 주소를 알고 싶다면 IP와 서브넷 마스크를 & 연산을 통해 구할 수 있습니다.
예시
- IP 주소 : 10.0.5.20 → 00001010.00000000.00000101.00010100
- 서브넷 마스크 : 255.255.240 → 11111111.11111111.11111111.11110000
- 네트워크 주소 : 10.0.5.16 → 00001010.00000000.00000101.00010000
- 호스트 주소 : 0.0.0.4 → 00000000.00000000.00000000.00000100
'인프라' 카테고리의 다른 글
오픈스택과 TripleO 아키텍처 (0) | 2024.06.08 |
---|---|
클라우드 (0) | 2024.06.05 |
씬 프로비저닝과 씩 프로비저닝 (0) | 2024.05.28 |
도커 네트워크 구성 (0) | 2024.05.27 |