본문 바로가기

Computer Engineering/Networks

서브넷 마스크

서브넷을 어렵게 생각 하고 ㄱㅖ셔서 잠시 도움을 드리겠습니다.


서브넷이 존재하는 이유는 네트워크를 쪼개기 위한 것입니다.

단지 그 이유만은 아니지만 어쨋든 서브넷은 네트워크를 쪼개기 위해 존재 한다고 생각

하세요...


네트워크는 3가지로 분류가 되죠.


A Class   1.0.0.0  

B Class    1.1.0.0

C Class    1.1.1.0


위 내용을 보면 0 이라고 되어 있는 부분부터 ip 를 할당 할수가 있습니다.  그래서


A Class 최대 IP 갯수 : 1.0.0.1 ~ 1.255.255.255.254  까지

B Class 최대 IP 갯수 : 1.1.0.1 ~ 1.1.255.254 까지

C Class 최대 IP 갯수 : 1.1.1.1 ~ 1.1.1.254 까지...


자 그럼 우리회사에서 C class 의 네트워크 대역을 받았습니다.

그럼 보시는 바와 같이 255개의 IP 를 부여 받겠죠...


그런데 우리 회사는 255개의 IP 를 전부 사용하지 않습니다.

필요가 없기 때문이죠...

그래서 ISP업체(ip 를 부여해주는 업체 kt , 데이콤 등)에게

우리는 ip 255개가 필요없으니 128개만 주라 고 요청을 했습니다.


그러면 isp업체의 네트워크 담당자는 이 255개의 ip 를 쪼개야 합니다.

그래서 128개만 우리를 주고 남은 128개는 또 다른 회사에게 줄수가 있겠죠...




●서브넷 마스크의 역할

"192.168.100.123‘이라는 IP가 있을 때 어디까지가 네트워크 주소 부분이고 어디까지가 호스트 주소 부분일까요? 물론 앞에서 클래스를 공부했으므로 여러분은 192로 시작하는 것을 보고 C 클래스 IP이며 따라서 앞의 세 자리까지가 네트워크 주소 부분이라는 것을 알고 있습니다. 그러나 이러한 것은 얼마든지 수정이 가능합니다. 무슨 말인지는 곧 알게 됩니다.

서브넷 마스크는 IP 주소에서 어디까지가 네트워크 주소 부분이고 어디가 호스트 주소 부분인지를 구별하기 위해 쓰여집니다. C 클래스의 기본적인 서브넷 마스크는 ‘255.255.255.0’입니다. IP 주소와 서브넷 마스크를 2진수로 변환하여 보면 다음과 같습니다.

 

IP주소 (10진수)

192

168

100

123

서브넷마스크(10진수)

255

255

255

0

IP주소 (2진수)

11000000

10101000

01100100

01111001

서브넷마스크(2진수)

11111111

11111111

11111111

00000000

10진수 서브넷 마스크를 2진수로 바꾸어 보면 연속된 숫자 ‘1’을 볼 수 있습니다. 2진수로 바뀐 서브넷 마스크의 ‘1’로된 부분이 네트워크 주소 부분이고 ‘0’으로 표시된 부분이 호스트 주소 부분입니다.

서브넷 마스크는 이와 같이 네트워크 주소와 호스트 주소를 구분하는 역할과 더불어 목적지 IP 주소와 출발지 IP 주소가 같은 네트워크 주소인지 아닌지를 판단하기 위해서도 사용됩니다.

목적지의 IP 주소와 출발지 IP 주소를 서브넷 마스크를 이용하여 각각 AND 연산을 실시, 그 값이 동일하면 동일한 네트워크 그룹에 속해 있는 것이고 틀리다면 서로 다른 네트워크 그룹에 속해 있는 것입니다. 자세한 내용은 서브넷 나누기에서 계속 됩니다.

 

기본 서브넷마스크(10진수)

기본 서브넷마스크(2진수)

A 클래스

255.0.0.0

11111111.00000000.00000000.00000000

B 클래스

255.255.0.0

11111111.11111111.00000000.00000000

C 클래스

255.255.255.0

11111111.11111111.11111111.00000000

●서브넷 나누기

C 클래스의 기본적인 서브넷 마스크는 ‘255.255.255.0’입니다. 즉 하나의 네트워크에서 254개의 호스트(컴퓨터)에게 IP를 부여 할 수 있습니다. 하지만 필요한 IP100개 정도인 기업에 254개의 IP를 부여하면 절반 이상의 IP가 낭비되겠지요. 이럴 때는 서브넷 마스크를 나누어 필요한 수 만큼의 IP를 부여할 수 있습니다.

11111111   11111111   11111111   00000000

255.255.255.0

11111111   11111111   11111111   10000000

255.255.255.128

위를 보면 마지막의 첫 번째 수가 ‘0’에서 ‘1’로 바뀌었습니다. 다시 말해 호스트 주소 부분이 줄어들고 네트워크 주소 부분이 늘어난 셈입니다. 1개의 ”0“이 ”1“로 바뀌어 21, 즉 호스트 주소가 반으로 줄었습니다. 8개의 2진수로 표시 가능한 경우의 수는 256(28)이며 7개의 2진수로 표시 가능한 경우의 수는 128(27)입니다. 서브넷을 2개로 나누기 위해서는 호스트 주소 부분을 표시하는 첫 번째 값을 ”1“로 바꾸면 된다는 말입니다. 앞에서 두 개의 ‘0’을 ‘1’로 바꾸면 어떻게 될까요? 4(22)로 서브넷이 나누어지며 한 서브넷에는 64(256/4)개의 IP 주소가 할당되겠지요.

앞에서 예로 든 ‘192.168.100.123’ 네트워크를 예로 들어 설명해보면, 서브넷이 2개로 나누어 졌으므로 사용할 수 있는 IP는 ‘192.168.100.0’에서 ‘192.168.100.127’번까지의 네트워크 하나와 ‘192.168.100.128’에서 ‘192.168.100.255’까지 또 하나의 네트워크로 나누어집니다. 당연히 ‘192.168.100.0’과 ‘192.168.100.128’은 해당 네트워크를 나타내고 ‘192.168.100.127’과 ‘192.168.100.255’는 브로드캐스트 주소이기 때문에 실제적으로 사용할 수는 없습니다.

100개의 IP만 필요한 기업에서는 ‘192.168.100.1’번에서 ‘192.168.100.126’번까지의 IP를 쓸 수 있으며 서브넷 마스크로 ‘255.255.255.128’을 사용하면 됩니다. 이렇게 서브넷 마스크를 지정해 주어야지 확실히 그 주소체계를 시스템이 인지할 수 있습니다.

<그림에서 컴퓨터 A가 컴퓨터 B, 컴퓨터 C와 통신을 시도하면 컴퓨터 A는 먼저 출발지(컴퓨터 A)의 IP 주소와 목적지(컴퓨터 B, C)의 IP주소를 자신의 서브넷 마스크(255.255.255.128)을 이용하여 AND 연산을 수행한다.>

컴퓨터 A의 서브넷 마스크와 출발지/목적지 IP와의 AND 연산결과

 

컴퓨터 A

IP 주소

11000000   10101000   01100100   00000001

서브넷마스크

11111111   11111111   11111111   10000000

AND 연산결과

11000000   10101000   01100100   00000000

 

 

컴퓨터 B

IP 주소

11000000   10101000   01100100   01100100

서브넷마스크

11111111   11111111   11111111   10000000

AND 연산결과

11000000   10101000   01100100   00000000

 

 

컴퓨터 C

IP 주소

11000000   10101000   01100100   10010110

서브넷마스크

11111111   11111111   11111111   10000000

AND 연산결과

11000000   10101000   01100100   10000000

각 컴퓨터의 AND 연산 결과를 보면 컴퓨터 A와 컴퓨터 B의 결과는 동일 하지만 컴퓨터 A와 컴퓨터 C의 결과는 틀립니다. 즉, 컴퓨터 A와 컴퓨터 B는 같은 네트워크 그룹에 속해 있지만 컴퓨터 C는 다른 네트워크 그룹에 속해있다는 말입니다.

컴퓨터 A가 컴퓨터 B와 통신하는데는 별다른 어려움이 없지만, 이 경우 컴퓨터 C는 다른 네트워크에 있기 때문에 라우터와 같은 게이트웨이 장비가 없으면 통신을 할 수 없습니다.

※참고 - AND 연산

AND 연산은 두 값을 비교하여 모두 ‘1’일 때만 그 결과값이 ‘1’이 되는 연산 방법을 말합니다.

                                    1 AND 1 = 1

                                    1 AND 0 = 0

                                    0 AND 0 = 0

[출처] 네이버 지식인

'Computer Engineering > Networks' 카테고리의 다른 글

Multicast; 멀티캐스트  (0) 2008.06.04
네트워크 명령어 "nbtstat "  (0) 2008.04.16
네트워크 명령어 'netstat '  (0) 2008.04.16
VPN 이란?  (0) 2008.04.15
이더넷, 패스트 이더넷, 기가빗 이더넷  (1) 2007.12.12
CIDR과 서브넷과의 차이점  (0) 2007.12.09
BGP/RIP/IGRP/OSPF  (0) 2007.12.08
VPI &VCI  (0) 2007.12.08
SSL Protocol 개념과 동작 원리  (0) 2007.12.08
ATM VS Gigabit 비교  (0) 2007.12.08