개발/Network / / 2021. 11. 7. 20:31

네트워크 프로그래밍 - Classfull Addressing Example, Network mask, Subnet, Subnet mask

반응형

example

IP주소 73.22.17.25가 있다면

해당 주소의 Class는 첫 번째 byte가 0~127 사이의 수 이므로 Class A이다. 따라서 block의 주소의 개수는 총 2^(32-8) = 16,777,216개 이고, 시작 주소는 73.0.0.0, 마지막 주소는 73.255.255.255이다.

 

그림으로 표현하면 다음과 같다.

example

IP주소가 180.8.17.9 이라면

해당 주소의 Class는 128~191 사이의 수이므로 Class B이므로 주소의 개수는 2^(32-16) = 65,536 개이다.

시작주소는 180.8.0.0, 마지막 주소는 180.8.255.255 이다.

일반적으로 시작 주소는 네트워크의 주소이고, 마지막 주소는 broadcast 용으로 시작 주소와 마지막 주소는 할당하여 사용하지 않는다. 

example

IP주소가 200.11.8.45 이면

첫 번째 byte수가 192~223이므로 Class B에 해당하고, 주소의 개수는 2^(32-24) = 256개이다.,

시작주소는 200.11.8.0, 마지막 주소는 200.11.8.255 이다.

 

 

Sample Internet

위 그림에서 왼쪽 네트워크의 경우 네트워크 주소가 220.3.6.0이고 Netid가 220.3.6이므로, 각 장치의 주소는 모두 220.3.6으로 시작한다.

R1 라우터도 마찬가지로 220.3.6으로 시작하는 주소를 할당받지만, 연결된 다른 네트워크(200.78.6.0)의 주소 또한 할당받아 총 2개의 네트워크를 할당받는다.

 

Network addresses

Router에는 Routing Table이 있고, 이 Table안에 Router에 연결된 네트워크들의 주소가 적혀있다.

네트워크 주소는 해당 네트워크의 대표주소(Netid에 Hostid가 모두 0인 시작주소)만 있다면 네트워크를 찾아갈 수 있으므로 Routing Table 는 네트워크 안의 수많은 주소 중 시작주소만을 가지고 있다. 

 

Network mask

주소를 가져오기 위해서는 Netid에 해당하는 bit만 살리고, 뒤의 Hostid에 해당하는 주소는 제외시켜야 한다. 

Finding a network address using the default mask

 위 그림과 같이 Mask에는 Netid는 모두 1로, Hostid는 모두 0으로 설정되어있어, Netid만을 살린 결과를 통해 네트워크 주소를 얻는다. 

example

Router가 패킷을 받았는데, 패킷의 목적지 주소가 201.24.67.32.라고 하자.

Routing Table에는 네트워크 주소만이 저장되므로, 목적지 주소의 네트워크 주소를 찾아야 한다.

해당 주소의 Class는 첫 byte 수가 192~223 범위이므로 Class C이므로 Network Mask는 255.255.255.0이다.따라서 Mask와 bitwise AND연산을 진행하면 구해지는 Network address는 201.24.67.0 임을 알 수 있다.

example

하나의 네트워크를 통째로 사용하는 것은 보안상으로도 효율상으로도 좋지 않아 실제로는 네트워크 안에서 subnet으로 또 나누게 된다.

만약 위 그림과 같이 네트워크 주소가 141.14.0.0라고 하자.

이 안에서 4개의 subnet을 만들기 위해서는 2bit로 00,01,10,11 4가지를 만드는 방법이 있는데, bit로 표현하기 위해 십진수와 이진수를 혼합하여 IP를 표현하면 다음과 같다.

subnet을 위한 빨간부분 2bit를 제외한 그 뒤의 bit들이 모두 0이면 해당 subnet의 대표주소이다. 

 

따라서 그림과 같이 4개의 subnet에 해당 IP로 대표주소가 지정되어있다. 

 

Network mask and subnetwork mask

이와 같이 subnet이 구분되는 경우 subnetwork mask도 다음과 같이 바뀐다.

example

위 subnet그림과 같이 subnet이 구분된 경우 Class B에 추가 2bit까지가 subnetid이기 때문에 총 18bit만큼의 subnetmask가 필요하다.

추가로 필요한 bit의 경우 위 그림에서는 subnet 4개로 나누는 상황이므로 log_2(4)로 2bit가 필요함을 알 수 있다.

18bit subnetmask는 처음부터 18번째 bit까지 1인 255.255.192.0으로 Class B의 mask와는 다르다.

 

example

4개의 subnet으로 나누어진 network 중 두 번째 subnet에 속한 한 주소가 141.14.120.77이라고 할 때, subnet address는 다음과 같이 구한다.

subnet에 속한 한 address와 subnet mask를 bitwise and 연산하면 subnet address를 구할 수 있다. 

 

120과 192를 and 연산하는 것은 어려우므로 이진법으로 바꾸어 계산하면 다음과 같다.

 

 

위 예제와 같이 구하는 방법을 라우터가 언제 사용하는지 알아보자.

위 그림에서 router는 특정 address가 어느 subnet에 속한 주소인지를 알아내야한다.

routing table에는 각 subnet의 subnet address의 목록만이 있다.

목적지인 address와 subnet mask를 and연산 하게 되면 전달해야하는 subnet address를 구할 수 있고, 구한 subnet address를 routing table에서 찾아 해당 port로 전달해주는 것이다. 

 

Comparison of subnet, default, and supernet mask

위 그림의 경우 default mask가 class C의 mask이고,

subnet mask에서는 8개의 subnet을 만들기 위해 3bit를 사용하여 뒤로 3bit를 추가로 사용한다. 

supernet mask는 subnet과 달리 mask에 해당하는 bit까지가 동일하고, 나머지로 구분하는 것이 supernet인데 자세히는 다루지 않는다. 

 

 

CLASSLESS ADDRESSING

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유