서브넷과 서브넷 마스크

게임 서버 프로그래밍/네트워크 개념정리

2020. 2. 18. 15:21

등장배경

- 대규모 내부망을 가진 집단 사이에서 메시지를 주고 받는 상황

- 이더넷 케이블을 링크 계층에 연결했을 때의 문제점들(보안상의 문제 + 이더넷 패킷이 네트워크상 모든 호스트를 거쳐야 함.)

- 효율적 연결을 위해 링크 계층 수준에선 직접 연결되지 않은 호스트 사이에서도 서로 패킷을 주고 받을수 있게 네트워크 계층에서 라우팅할 필요가 있다.

 

서브네팅

- 브로드캐스트의 영역을 나누는 것. 서브네팅을 하지 않으면 브로드캐스트의 도메인이 너무 커져서 브로드캐스팅이 너무 많이 발생하게 됨

- 네트워크 관리자가 네트워크 성능을 향상시키기 위해, 자원을 효율적으로 분배하는 것. IP주소를 아낄 수 있다.

- 하나의 네트워크가 국가급 네트워크라 가정하면 서브네팅은 한 국가를 여러 도시의 네트워크로 나누는 행위로 묘사

 

정의

서브넷 : 네트워크의 논리적 분할. 어떤 기관에 소속된 네트웍이지만 따로 분리되어 한 부분으로 인식될 수 있는 네트웍

서브넷 마스크 : 서브네팅을 하기 위한 도구. 주어진 네트워크를 가공해서 쓰는 경우 사용된다.

 

특징

32 bit 숫자로서, IP 주소와 동일하게 숫자 네 개를 마침표로 구분하여 쓴다.

어느 두 호스트의 IP 주소를 각각 서브넷 마스크와 비트 AND 연산하여 그 결과가 같으면, 두 호스트는 같은 서브넷에 있다고 친다.

 

호스트 IP 주소 서브넷 마스크 IP 주소와 서브넷 마스크를 비트 AND한 값
A1 18.19.100.1 255.255.255.0 18.19.100.0
A2 18.19.100.2 255.255.255.0 18.19.100.0
B1 18.19.200.1 255.255.255.0 18.19.200.0

사용법

서브넷 마스크는 1만 연달아 나온 뒤 0이 주욱 이어지는 꼴이다.

서브넷 마스크 서브넷 마스크 이진수 형태 상위 비트 수 가능한 호스트 개수
255.255.255.248 11111111 11111111 11111111 11111000 29 6
255.255.255.192 11111111 11111111 11111111 11000000 26 62
255.255.0.0 11111111 11111111 00000000 00000000 16 65534
255.0.0.0 11111111 00000000 00000000 00000000 8 16777214

서브넷마다 두 개의 주소는 예약되어 있어 호스트에 할당할 수 없다. (브로드캐스트 주소, 네트워크 주소)

// 네트워크 주소
networkAddress = ipAddress & subnetMask;
// 브로드캐스트 주소
broadcastAddress = networkAddress | (~subnetMask);

CIDR (Classes Inter-Domain Routing)

네트워크 주소와 서브넷을 간단히 줄여 쓰는 방법. 서브넷 마스크는 이진수로 나타내면 1이 n개 나온 뒤,

0이 (32-n)개 붙는 형식이다. 따라서 슬래쉬로 구분하여 (네트워크주소/서브넷 마스크의 1인 비트 개수) 형식으로 쓸 수 있다.

Ex) 18.19.100.0/24