CS Study/네트워크

서브넷, 서브넷 마스크, 게이트웨이

ju_dev 2024. 5. 3. 08:47

LESSON 21. 서브넷의 구조

*서브넷팅(subneting) : (하나의) 네트워크를 분할하는 것

*서브넷(subnet) : 분할된 네트워크
ㄴ 서브넷은 2^n 개 단위로만 나눌 수 있다. 
ex) 17개의 서브넷으로 나누고 싶다면 2^4(16개)로는 부족하고,  2^5(32개)로 나누어서 15개는 사용하지 않는게 최선의 방식이다.

ex) A 클래스의 대규모 네트워크를 작은 네트워크(subnet)로 분할 

주의 : 공유기 사설 IP 할당 범위의 설정을 바꿔서 하나의 공인 IP주소로 192.168.1.0 와 192.168.2.0 네트워크를 사용하는 것은
하나의 네트워크를 분할(서브넷팅)하는 게 아니라, 2개의 '독립적인 별도의 네트워크를 생성'해 사용하는 것이다.



-> 분할의 장점 : 브로드 캐스트(전체)로 전송되는 패킷의 범위를 좁힐 수 있다.
-> 기존 IP 구성 : 네트워크 ID + 호스트 ID  
-> 서브넷팅 후 구성 : 네트워크 ID + 서브넷 ID + 호스트 ID

*서브넷 ID : 원래 호스트 ID에서 빌린 bit
 
*서브넷 마스크 : 네트워크 ID, 호스트 ID를 식별하기 위한 값, IP주소와 똑같은 형태(32bit, 옥텟마다 점으로 구분)
ㄴ 네트워크 ID, 서브넷 ID의 bit가 모두 1, 나머지 호스트ID bit는 모두 0으로 이루어진 것을 말함
ㄴ 사용 목적 : 특정 IP가 서브넷팅 된 네트워크 중에서 어느 네트워크에 속하는지 구하는 데 사용한다.
ㄴ (특정 IP가 속한 네트워크 주소) == (특정 IP) AND (서브넷마스크)




* 클래스별 서브넷 마스크
ㄴ 네트워크 ID의 bit와 서브넷 ID의 bit가 모두 1이고, 나머지 bit는 모두 0이다.
ㄴ 여기서는 특정 네트워크를 딱 짚지 않았기 때문에 
A : 255.0.0.0
B : 255.255.0.0
C : 255.255.255.0

*프리픽스(prefix)표기법 (서브넷 마스크를 표현하는 다른 방법) (== CIDR, Classes Inter-Domain Routing)
ㄴ 슬래시(/네트워크 ID의 비트수)로 표현
A : /8
B : /16
C : /24



* 호스트 ID에서 비트를 빌려서 서브넷ID가 n bit 를 사용한다 == 해당 네트워크에서 2^n개의 서브넷을 만들 수 있다


문제1) 211.168.83.0 네트워크를 사용하는 회사에서 5개의 서브넷을 사용해야 할 때
이 네트워크의 클래스, 각 서브넷에 최대 host의 개수, 필요한 서브넷 마스크를 구하라.
또한 IP가 211.168.83.34 인 기기가 속한 서브넷의 네트워크 주소와 브로드캐스트 주소도 구하라.


풀이1) 네트워크의 첫 옥텟이 211 => 첫 옥텟의 상위비트가 110 (10진수 192~223 사이에 오는) C 클래스 네트워크이다.
서브넷은 2^N 개 단위로만 나눌 수 있으므로 5개를 쓰려면 2^3 = 8개로 서브넷팅 한 후에 3개를 안 쓰는 방식을 선택하는 게 최선

원래 C클래스 : 네트워크 ID (24bit) +호스트 ID (8bit) 이고, 기본 서브넷 마스크 : 255.255.255.0 == /24
=> 서브넷팅 후 : 네트워크 ID (24bit) + 서브넷ID (3bit) + 호스트 ID (5bit) 이고, 
서브넷 마스크는 네트워크ID, 서브넷 ID가 모두 1이고, 나머지 bit는 0
=> 서브넷 마스크 : 11111111 . 11111111. 11111111 . 111 00000 == 255.255.255.224 == /27
또한, 각 서브넷의 최대 host 개수는 2^5 = 32개

211.168.83.34 가 속하는 네트워크 주소 == 211.168.83.34 AND 서브넷 마스크 결과

         211.168.83.34                           네번째 옥텟 : 0000 0010
AND 255.255.255.224                       네번째 옥텟 : 1100 0000
------------------------------                       ---------------------------------
         211.168.83.32   (네트워크 주소)                     0010 0000 (십진수 32)

(단, X가 숫자면 => X AND 255 = X 과 X AND 0 = 0 이 항상 성립하므로 여기선 네번째 옥텟만 AND 하면 된다.)

211.168.83.34 가 속하는 브로드캐스트 주소 == 해당 IP 주소의 호스트 ID (5bit)가 전부 1인 경우
211.168.83.34 => 211.168.83. 001 00010 에서 호스트 ID bit를 모두 1로 바꾼다. =>
211.168.83. 001 11111 => 211.168.83.63 (브로드캐스트 주소)


부연 설명)
서브넷 별 IP주소 범위는 
1번 서브넷 : 211.168.83.0(네트워크 주소) ~ 211.168.83.31(브로드캐스트 주소)
2번 서브넷 : 211.168.83.32(네트워크 주소) ~ 211.168.83.63(브로드캐스트 주소)
3번 서브넷 : 211.168.83.64(네트워크 주소) ~ 211.168.83.95(브로드캐스트 주소)
4번 서브넷 : 211.168.83.96(네트워크 주소) ~ 211.168.83.127(브로드캐스트 주소)
...
8번 서브넷 : 211.168.83.224(네트워크 주소) ~ 211.168.83.255(브로드캐스트 주소)
이 중 211.168.83.34 가 속하는 부분은 두 번째 서브넷이다.

----------------------------------------문제 끝----------------------------------------

문제2) 54.0.0.0 네트워크를 사용하는 회사에서 500개의 서브넷을 사용해야 할 때,
이 네트워크의 클래스, 각 서브넷에 최대 host의 개수, 필요한 서브넷 마스크를 구하라.
또한 IP가 54.136.27.194 인 기기가 속한 서브넷의 네트워크 주소와 브로드캐스트 주소도 구하라.


풀이2) 네트워크 첫 옥텟 54 => 첫 옥텟 상위비트가 0 ( 00000000 ~ 011111111 ) 즉 10진수로 0 ~ 127 사이에 오는 A클래스 네트워크이다.
서브넷은 2^N개 단위로 나눌 수 있으므로 500개의 서브넷을 사용하려면 2^9 = 512개로 서브넷팅 한 후에 12개를 안쓰는 방식이 최선

원래 A클래스 : 네트워크 ID (8bit) +호스트 ID (24bit) 이고, 기본 서브넷 마스크 : 255.0.0.0 == /8
=> 서브넷팅 후 : 네트워크 ID (8bit) + 서브넷ID (9bit) + 호스트 ID (15bit) 이고, 
서브넷 마스크는 네트워크ID, 서브넷 ID가 모두 1이고, 나머지 bit는 0
=> 서브넷 마스크 : 11111111 . 11111111. 10000000 . 00000000 == 255.255.128.0 == /17
또한, 각 서브넷의 최대 host 개수는 2^15 = 32,768 개 


54.136.27.194 가 속하는 네트워크 주소 == 54.136.27.194 와 구한 서브넷 마스크를 AND 연산한 결과

         54.136.27.194 => 세번째 옥텟 : 0001 1011
AND 255.255.128.0 => 세번째 옥텟 : 1000 0000
---------------------------                ---------------------------
            54.136.0.0                               0000 0000

(단, X가 숫자면 => X AND 255 = X 와 X AND 0 = 0 이 항상 성립하므로 세번째 옥텟만 계산하면 된다.)


54.136.27.194 가 속하는 브로드캐스트 주소 == 해당 주소의 호스트 ID (15bit)가 모두 1인 경우
54.136.27.194 => 54.136. 0 0011011 . 11000010 에서 호스트 ID bit를 모두 1로 바꾼다. =>
54.136. 0 1111111 . 1111111 => 54.136.127.255 (브로드 캐스트 주소)

----------------------------------------문제 끝----------------------------------------




* ISP는 일반적으로 하나의 라우터에 하나의 공인 IP주소를 할당한다.
이 하나의 공인 IP주소를 가지고 여러 개의 서로 다른 사설 네트워크를 생성해 사용할 수 있으며(서브넷팅 아님),
하나의 사설 네트워크를 여러 개의 서브넷으로 나눌 수 있다. (서브넷팅)
그렇게 나눠진 각각의 서브넷은 서로 다른 네트워크이다.


참조한 영상 : 서브넷 마스크 - https://youtu.be/o-NRjtQsJx4?si=62GLeVpEKuwh95kn 

---------------------------------------------------------------------------------------------------------------------------------------------------------------

LESSON 22. 라우터의 구조

라우터 - 연결된 기기들의 네트워크를 분리 가능(서브넷팅 가능)
스위치, 허브 - 연결된 모든 컴퓨터는 동일 네트워크(네트워크 분리X, 서브넷팅 불가)

*기본 게이트웨이(default gateway) : 기본적으로 설정된 라우팅 경로. "라우터의 IP주소"

ㄴ 같은 네트워크에 있는 컴퓨터간의 통신은 게이트웨이가 설정되지 않더라도 통신 가능
ㄴ 서로 다른 네트워크에 있는 컴퓨터끼리 통신(데이터 전송)하려면 게이트웨이를 설정해야 한다.
ㄴ 데이터를 송신했는데 수신하려는 기기가 같은 네트워크에 없으면, 기본 게이트웨이로 지정된 라우터로 데이터를 보낸다.
ㄴ 기본 게이트웨이로 설정하는 IP주소는 자신이 속해있는 네트워크의 IP 주소 범위에 속해있어야 하며, 자신의 컴퓨터 IP 주소로 할당할 수 없음
ex) 자신 IP주소와 서브넷마스크가 192.168.1.5/28 이라면 (subnet ID : 4bit 즉 2^4개의 서브넷으로 분할한 네트워크. 한 서브넷에 host 16개)
=> 게이트웨이는 192.168.1.1 ~ 191.168.1.15 사이의 값이어야 함 (자신의 IP주소 192.168.1.5 제외)




145p 그림) 컴퓨터1이 컴퓨터6에 데이터를 전송하는 상황

컴퓨터1에서 기본 게이트웨이를 192.168.1.1 로 설정 == 컴퓨터1이 외부 네트워크와 통신할 때 라우터의 IP주소를 아는 것 (네트워크 계층)
컴퓨터1이 ARP 패킷을 broadcast => L2 스위치가 ARP 패킷을 받아 broadcast => 스위치에 연결된 모든 기기(컴퓨터, 라우터) 에 ARP 패킷 전송
그 후,
수신 대상이 같은 네트워크에 존재하면 => broadcast 에 대한 응답O
수신 대상이 다른 네트워크에 있으면 => broadcast 에 대한 응답X
최종적으로, 라우터의 IP 주소(게이트웨이 IP)에 해당하는 라우터의 MAC 주소를 응답으로 받는다. (데이터링크 계층)
(ARP 프로토콜)




*라우팅 테이블 등록 방법( 네트워크 관리자가 )
: 라우팅 프로토콜 설정 -> 라우터 간 경로 정보 교환 -> 라우팅 테이블에 등록
1. 수동 - 소규모 네트워크에 적합
2. 자동 - 대규모에 적합, 라우터 간 경로정보를 서로 교환해서 라우팅 테이블 정보를 자동 수정

*라우팅 프로토콜 : 라우터 간 라우팅 정보를 교환하는 프로토콜
ex) RIP, OSPF, BGP 등