서브넷과 관련되어서 설명좀 부탁드립니다.
안녕하세요 ㅠ
서브넷과 관련된 문제인데 이해가 잘 안되는 부분에 있어 조언을 여쭤보고자 글을 올렸습니다.
문제는 바로 아래와 같습니다.
[문제] 서브넷을 호스트를 기준으로 할건지, 네트워크를 기준으로 할건지를 정해야 하며 호스트를 기준으로 한다
고 했을때 예를들어 주어진 네트워크가 192.168.1.0/24에서 각 네트워크당 호스트를 10명으로 잡았을때 서브넷팅에
대해 설명을 해보고자 한다.
호스트 기준으로 나눌 때 필요로 하는 호스트에 +2를 해서 계산을 해야한다. 네트워크 주소와 브로드캐스트 주소가
사용이 되기 때문이다.
그리고 이진법을 적용해서 12를 포함하는 경우를 찾아내야 한다.
2의 3제곱승은 8이니까 안되고 2의 4제곱승인 16은 12를 포함하므로 우리가 원하는 숫자는 4이다.
그럼 주어진 네트워크 192.168.1.0/24 에서 서브넷마스크 255.255.255.0을 이진법으로 표시하면
1111 1111. 1111 1111. 1111 1111. 0000 0000 이고 우리가 서브넷팅에서 사용할 숫자는 0000 0000인데
호스트 기준으로 할 때는 오른쪽에서부터 1로 채우면 된다.
좀전에 계산으로 얻은 숫자는 4이니까 오른쪽부터 1을 채우면 0000 1111이 되고
우리가 원하는 서브넷팅은 1111 0000이 된다.
그럼 우리가 필요로 하는 총 서브넷 마스크를 구하면 1111 1111. 1111 1111. 1111 1111. 1111 0000이 되고
10진수로 표현하면 255.255.255.240 이며 192.168.1.0/28이 된다.
==================== 위의 문제를 통해, 제가 이해한 부분 ====================
워낙 네트워크분야에 소질이 없기에 제가 이해한 부분을 글로 적어보았는데 답답하셔도 조금만 이해해주시
면 정말 감사드리겠습니다.
예를들어 주어진 네트워크를 192.168.1.0/24 이렇게 설정하셨는데
이 주소같은 경우에는 C급을 예로들어 주어졌다고 가정을 하였습니다.
그리고, 위의 주어진 네트워크 주소를 토대로 호스트를 10명이서
서브넷팅을 해야된다고 가정을 했을때, 필요로 하는 호스트에 +2를
계산을 해야한다고 말씀하셨는데 이것은 어떤 주소가 오더라도 상관없이
무조건 네트워크주소와 브로드캐스트 주소가 사용되기 때문에 무조건 +2를
해주어야 하는 부분까지 이해를 했습니다.
그리고 이진법을 적용해서 12를 포함하는 경우를 찾아야 한다고 말씀하셨는데,
처음에 10명이서 서브넷팅을 해야한다는 조건과 네트워크주소와 브로드캐스트 주소가
사용되기 때문에 +2의 값을 더해서 12가 됨으로 12를 포함되는 경우를 찾아야 하며,
2의 3제곱승은 8이니까 안되고, 2의 4제곱승인 16이 12보다 더 크게 되므로 우리가
원하는 숫자가 4가 되는과정까지 알게 되었습니다.
그리고, 주어진 서브넷마스크를 2진수로 표시하고, c급 주소의 기본 서브넷마스크가
255.255.255.0인 부분까지는 이해가 되었는데, 윗글에서 "우리가 서브넷팅에 사용할
숫자는 0000 0000인데 호스트 기준으로 할 때는 오른쪽에서부터 1로 채우면 된다. "
이부분이 잘 이해가 가질 않습니다ㅠ ( 제머리가 워낙 안좋아서..)
서브넷팅에 사용할 숫자가 왜 0000 0000인지 잘 모르겠습니다.
c급 주소에 보면 상위 3개 옥텟은 네트워크이고 마지막 1개가 호스트인데
[network,network,network,host] 어떻게 해서 서브넷에 사용할 숫자가 왜 0000 0000인지..
잘 모르겠습니다.
마지막으로.. " 우리가 좀전에 계산으로 얻은 숫자는 4이니깐,
오른쪽부터 1을 채우면 0000 1111이 되고 우리가 원하는 서브넷팅은 1111 0000이 된다. "
이부분같은 경우 2의 4제곱으로 얻은 숫자가 4이니까, 1을 4개를 가장 오른쪽부터 채워주는것인가요?
그리고, 0000 1111의 값을 구하고 난 뒤에 갑자기 왜 우리가 원하는 서브넷팅이
1111 0000 으로 1111과 0000의 위치가 바뀌었는지도 의문입니다.
음 ..
https://kldp.org/comment/622074#comment-622074
일전에 network 의 크기는 wildcard mask 로부터 구하고, wildcard 는 ~netmask 라고 했습니다.
(~netmask 는 netmask 에 NOT 연산, 즉 모든 비트를 반대로 뒤집은 것)
네트워크의 크기는 2^(wildcard bit 1 의 갯수) 이기 때문에.. 네트워크의 크기는 항상 2^n 으로 계산됩니다.
반대로 network 의 크기가 주어지면, 역으로 해서 wildcard mask 를 계산할 수 있겠죠.
네트워크는 network address (start address), host address, broadcast address (end address) 로 구성되니까..
host address 가 10 개 필요하다고 하면, 거기에 host address 가 아닌 2 개의 IP 를 더한 후에..
그 숫자보다 큰 2^n 중에서 가장 작은 숫자가, 내가 필요한 최소 네트워크의 크기가 되겠죠.
subnetting 은 host number 를 다시 (sub)network number 와 host number 로 나누는 과정이라고 보시면 됩니다.
즉, netmask 에서 이미 bit 가 1 인 부분은 subnetting 을 하는 데에 사용될 수 없다는 뜻입니다.
문제로 돌아가서, subnet 의 크기를 16 으로 계산했으므로..
16 = 2^4 에서, C Class 의 host number 부분은 8 bit 이니, wildcard 는 0000 1111 이 되고..
원래 공식 wildcard = ~netmask 에서 양변에 ~ (NOT) 을 주면..
~wildcard = ~~netmask = netmask 를 거쳐, 1111 0000 이 바로 새 netmask 가 되죠.
그럼 원래의 11111111.11111111.11111111.00000000 에서 host 부분 00000000 을 1111 0000 으로 바꾸면..
11111111.11111111.11111111.11110000 = 255.255.255.240 이 새로운 subnet mask 가 되는 겁니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
음 ..
좀 더 다른 관점에서 보면...
우리가 쓰는 IPv4 주소 체계는 32 bit 입니다.
이 말은 최대 2^32 개의 IP 를 쓸 수 있다는 의미죠.
32 bit 전체가 일단 host number 라고 가정하고..
2^32 개의 IP 를 각각 256 = 2^8 개의 IP 로 나눈다면..?
별다른 의심없이 255.255.255.0 으로 netmask 를 씌울겁니다. 흔히 말하는 C Class 네트워크죠.
물론 wildcard 1111 1111 을 32 bit 로 확장해서, 00000000.00000000.00000000.1111111 로 만든 후에..
~wildcard = 111111111.11111111.1111111.00000000 = netmask 로 계산해서 나오겠지만요.
8 bit 주소 체계를 가정하고 256 = 2^8 개의 IP 를, 각각 16 = 2^4 개의 IP 로 쪼갠다면..??
같은 과정으로 wildcard 1111 을 8 bit 로 확장해서, 0000 1111 을 만들고..
~wildcard = 1111 0000 = netmask 로 변환하겠죠.
바로 C Class 를 subnetting 하는 것과 동일한 문제가 됩니다.
C Class 의 host 부분이, 최대 2^8 개의 IP 를 가진 8 bit 주소 체계가 되는 거고..
그 8 bit 의 host 부분을, 새 netmask 로 대체하는 것이니까요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
댓글 달기