본문 바로가기

ACC/ACC CNU

[ASC 1기] 3주차 준비 - Subnet

이번주 주제는 VPC, Route53, Subnet, Region이다.

지난 학기 데이터 통신 과목을 수강하면서 IP 주소가 주어졌을 때, 서브넷마스크, 네트워크 ID, 브로드캐스트주소를 계산하는 문제가 나왔었다. 학점을 위해 구하는 공식은 외우고 무엇인지는 모르는 상태였는데 그 생각이 나서 한번 알아보기로 했다.

 


[IP]

 

IP? → Internet Protocol의 약자

 

Protocol이란 통신 규약(신호처리, 오류처리, 암호, 인증, 주소 등에 대한)을 의미한다. 예시로는 우리가 URL앞에 붙이는 http 역시 http 프로토콜을 따른다는 의미이다.

 

Internet Protocol은 인터넷에서 사용하는 통신 규약을 의미.

 


[IP 주소]

 

IP가 무엇인지 알았으니 IP 주소는 간단하다. IP를 따르면서 인터넷에서 통신할 때 사용하는 주소일 것이다.

 


[IP주소의 구성]

 

IP주소는 총 32비트로 구성되어 있고 8비트로 구분된다. IP주소가 n.m.p.q이면 .으로 구분된 네 개의 n, m, p, q가 각 8비트로 표현 가능한 것이다. (IPv4기준)

 

IP주소는 네트워크 주소와 호스트 주소로 구성되어 있다. 네트워크 주소는 인터넷 상에서 네트워크를 구분하는 역할을 하고, 호스트 주소는 해당 네트워크 안에 존재하는 호스트들을 구분하는 역할이다.

 

만약 IP주소가 192.168.0.x이고 네트워크 주소로 상위 24비트를 사용한다면, 192.168.0.1, 192.168.0.2는 모두 같은 네트워크 내에 존재한다고 생각할 수 있다.

 


[IP주소 클래스]

 

IP주소는 총 $2^32$개로 그 개수가 생각보다 모자란 탓에 그 개수를 최대한 활용하기 위해 클래스를 이용해 네트워크를 분류하였다. 클래스는 총 A,B,C,D,E로 나뉘어 있고 A 클래스는 상위 8비트를, B 클래스는 상위 16비트를, C 클래스는 상위 24비트를 네트워크 주소로 사용한다.

 

A 클래스로 갈수록 많은 호스트를 배정할 수 있는 것이므로 규모가 큰 집단에서 사용하기에 적합하다. 하지만 이는 비효율적인 면이 크다. 클래스로 구분하여 효율적으로 쓰는 것은 좋은데 클래스를 구분하는 단위가 무려 8비트라는 것이다. 가령 B 클래스는 과도하고 C 클래스는 부족한 어느 집단이 있다고 가정해보자. 부족하게 주소를 할당해줄 수는 없으니 B 클래스 주소를 할당해주어야 하는데, 남는 IP주소를 방치한다면 개수를 최대한 활용한다는 취지에 어긋나게 된다.

 

이를 해결하기 위해 서브넷이라는 기술을 도입하였다.

 


[서브넷]

 

적절한 크기의 주소를 배정하기 위해 분할된 네트워크. 추가로 네트워크를 분할하는 것을 서브네팅(Subnetting)이라고 한다.

예를 들어서 기존의 C 클래스에서 배정할 수 있는 호스트가 256개였다. 하지만 서브네팅을 이용하여 128개, 64개, 이런 식으로 줄일 수 있게 된다.

 


[서브넷 마스크]

 

네트워크 주소를 나타내는 비트 수를 명시한 값. 만약 IP주소가 192.168.0.1/24라면 서브넷 마스크는 /24에 해당하는 부분이다. 서브넷 마스크를 통해 상위 24비트가 네트워크 주소임을 알 수 있다. 바꿔 말해서, 24비트로 서브네팅한 주소임을 알 수 있게 된다.

 

그렇다면 어떻게 서브넷 마스크를 이용하여 서브넷을 구별할 수 있을까?

이를 위해 이진법 계산이 사용된다. 서브넷 마스크를 이진법으로 바꿔서 계산하면 해당 서브넷에서 필요한 정보를 얻을 수 있게 된다. (※ 24의 이진수 표현이 11000이라고 11000으로 바꾸는 것이 아닌, 위에서 언급했듯 상위 n비트로 서브네팅함을 알기 위한 것이므로 11111111 11111111 11111111 00000000로 바꿔야 한다.)

 


[네트워크 ID]

 

위에서 설명한 네트워크 주소를 갖는 IP들의 가장 첫번째 주소.

서브넷 마스크와 &연산을 해서 구할 수 있다. 이유는 하위 비트(= 호스트 주소)가 0인 서브넷 마스크와 &연산을 하면 하위 비트가 전부 0이 될 것이기 때문.

 


[브로드캐스트 주소]

 

특정 네트워크에 속하는 모든 호스트들이 전달받을 수 있는 주소 네트워크 ID와 반대로 특정 네트워크의 가장 마지막 주소를 사용한다.

마찬가지로 서브넷 마스크의 1의 보수와 | 연산으로 구할 수 있다. 이유는 하위 비트(=호스트 주소)가 1인 서브넷 마스크와 | 연산을 하면 상위 비트인 네트워크 ID만 남고 나머지는 전부 1이 되어 가장 마지막 주소가 될 것이기 때문.

 


[Reference]

 

https://hyoje420.tistory.com/32

https://all-young.tistory.com/20

https://hyoje420.tistory.com/10

https://zitto15.tistory.com/21

https://hyoje420.tistory.com/31