[네트워크] 클래스 기반 주소 지정

2025. 1. 29. 22:57·CS/Network

전공 수업 내용 정리 (문제 발생시 비공개합니다.)

 


클래스 기반 주소 지정

 

블록 내의 주소의 수 = 2^(32-n)

 

Sample Internet

하나의 라우터에는 여러 개의 주소가 할당될 수 있다.

 

Network mask

네트워크 주소 추출 방법 -> mask 이용

교집합처럼 생각하기. 마스크를 씌워서 더 작은 쪽으로 남긴다!

Example 5.16

라우터는 목적지 주소 201.24.67.32의 패킷을 수신한다. 라우터가 패킷의 네트워크 주소를 찾는 방법은?

 

답

해당 주소는 클래스 C에 속하기 때문에 라우터가 네트워크 주소를 찾기 위해서는 클래스 C의 기본 마스크인 255.255.255.0을 적용해야 한다.

 

 

서브네팅 전

출처: https://florescene.tistory.com/157

  • 위 그림은 subnetting 전의 클래스 B 주소를 사용하는 네트워크를 보여준다.
  • 하나의 네트워크는 216개의 호스트로 구성되어 있으며, 전체 네트워크는 하나의 연결을 통해 인터넷의 라우터 중 하나에 연결된다.
  • 라우터 - IP 주소, 스위치 - 맥 주소

 

서브넷팅 후 

 

 

 

  • 네트워크는 라우터를 사용하여 네트워크를 네 개의 하위 네트워크로 나눈다.
  • 외부 인터넷들은 여전히 이들을 하나의 네트워크로 본다.(네트워크 주소, 즉 네트워크 시작 주소를 대표 주소로 간주한다.)
  • 내부적으로 네트워크는 4개의 하위 네트워크로 구성되어 있다. 각 하위 네트워크는 이제 214개의 호스트를 가질 수 있다.(216 - 2(시작, 마지막 주소) = 214)
  • 위 네트워크는 4개의 다른 단과대가 존재하는 대학 캠퍼스에 비유할 수 있다.
  • subnetting 후, 각 단과대는 자체 하위 네트워크를 가지고 있지만, 여전히 전체 캠퍼스는 외부 인터넷을 위한 하나의 네트워크이다. ex) ㅇㅇ대 -> ㅇㅇ대 자연대, ㅇㅇ대 사범대, ㅇㅇ대 공대, ㅇㅇ대 경영대...
  • /16 와 /18은 netid와 subnetid의 길이를 나타낸다.
  • site 라우터는 서브넷의 개수와 그 서브넷이 어떻게 동작하는지 알아야 한다.

 

서브넷 마스크

 

서브넷 아이디로 바뀌는 부분만큼, 호스트 아이디에서 서브넷 아이디로 바꿔야 한다.

 

 

Example 5.20

예제 5.19에서는 클래스 B 네트워크를 4개의 sub네트워크로 나누었다.

클래스 B이므로 n = 16

n1 = n2 = n3 = n4 = 16 + log4(log(분할네트워크갯수), 몇 비트를 subnet을 위해 할당해야 하는지 알아내기 위한 로그) = 18. 총 18비트를 봐야 sub 네트워크의 주소를 알 수 있다. 즉, subnet mask는 18개의 1과 14개의 0을 가진다**(subnet mask = 11111111.11111111.11000000.00000000)**.

subnet 마스크는 255.255.192.0으로 클래스 B의 네트워크 마스크**(255.255.0.0)**와 다르다.

 

 

Example 5.21

예제 5.19에서 클래스B의 네트워크를 4개로 분할했다. 그 중 subnet 2의 주소 중 하나가 141.14.120.77이므로 서브넷 주소는 다음과 같이 찾을 수 있다.

 

 

서브넷 2의 주소가 141.14.120.77

subnet 네트워크 주소를 구할 때는 주소를 binary로 바꾼 후 계산하면 훨씬 계산이 편리하다.

 

슈퍼넷팅(Supernetting)

Subnetting의 개념과는 반대로 여러개의 작은 Network를 하나의 커다란 Network로 바꾸는 작업을 의미한다.

 

슈퍼넷 마스크

 

서브넷 구성 시 네트워크를 8개의 서브블록으로 나누려면 총 8비트가 필요하다.

따라서 n(=24) + log8(=3) = 27

 

 

 

Prefix and suffix

 💡 블록의 주소 갯수는 prefix 길이의 값 n과 반비례한다.

 

Prefix = 네트워크 n 비트

suffix = 호스트 32-n비트

 

 

Example 5.22

전체 인터넷이 4,294,967,296개의 주소를 가진 하나의 블록으로 간주될 경우 prefix 길이와 suffix 길이는?

 

답 prefix 길이: 0 (블록의 수: 2^0 = 1)

suffix 길이: 32 (주소의 수(각 블록의 사이즈): 2^32 = 4,294,967,296)

이 single block에서는 32비트로 2^32 = 4,294,967,296개의 호스트를 정의할 수 있다.

 

 

Example 5.23

인터넷을 4,294,967,296개의 블록으로 나누고 각 블록이 하나의 주소를 가진다면 prefix 길이와 suffix 길이는?

 

답

 

prefix 길이: 32 (블록의 수: 2^32 = 4,294,967,296)

suffix 길이: 0 (주소의 수(각 블록의 사이즈): 2^0 = 1)

2^32 = 4,294,967,296 블록을 정의하는 데는 32비트가 모두 필요하다. 각 블록의 유일한 주소는 블록 자체에서 정의된다.

 

 

슬래시 표기법(Slash notation)

n = prefix의 길이

slash + prefix 길이를 같이 써주어야 한다.

 

 

Example 5.25

클래스 없는 주소 지정 방식에서, 블록 정보를 알기 위해서는 주소와 프리픽스를 알아야한다.

주소 정보만 알고 있다고 해서 주소가 속하는 블록 정보를 알 수는 없다.

 

 

Example 5.26

다음은 슬래시 표기법을 사용한 주소들이다.

  1. 주소 12.23.24.78/81.0.0.0 (8개의 1, 24개의 0)
  2. prefix 길이: 8, suffix 길이: 24
  3. 네트워크 마스크: 255.0.0
  4. 주소 130.11.232.156/161.1.0.0 (16개의 1, 16개의 0)
  5. prefix 길이: 16, suffix 길이: 16
  6. 네트워크 마스크: 255.255.0.0
  7. 주소 167.199.170.82/271.1.1.11100000 (27개의 1, 5개의 0)
  8. prefix 길이: 27, suffix 길이: 5
  9. 네트워크 마스크: 255.255.224

 

첫번째, 마지막 주소 구하기

  • 특수한 경우
    • 첫 번째 주소: suffix를 다 0으로 만들어 준다.
    • 마지막 주소: suffix를 다 1로 만들어 준다.
  • 일반적인 경우마지막 주소: 위의 보수(프리픽스만큼 0, 나머지를 1로 설정)를 취하고 AND 연산
  • 첫번째 주소: 프리픽스만큼 1, 나머지를 0으로 설정하고 AND 연산

 

Example 5.27

블록에 있는 주소 중 하나가 167.199.170.82/27일 때, 네트워크의 주소 갯수, 첫 번째 주소, 마지막 주소는?

 

답

n=27이므로 네트워크 마스크에는 27개의 1과 5개의 0이 존재한다. ☞ 255.255.225.224a. 네트워크의 주소 갯수(총 블록 갯수): 2^(32 - n) =  2^(32 - 27) = 2^5 = 32b. 첫 번째 주소(네트워크 주소): 마스크와 주소를 AND 연산 ☞ 167.199.170.64/27

 

출처: https://florescene.tistory.com/158

 

Example 5.28

블록에 있는 주소 중 하나가 17.63.110.114/24일 때, 네트워크의 주소 갯수, 첫 번째 주소, 마지막 주소는?

 

답

n=24이므로 네트워크 마스크에는 24개의 1과 8개의 0이 존재한다. ☞ 255.255.225.0

a. 네트워크의 주소 갯수(총 블록 갯수): 2^(32 - n) =  2^(32 - 24) = 2^8 = 256

b. 첫 번째 주소(네트워크 주소): 마스크와 주소를 AND 연산 ☞ 17.63.110.0/24

 

 

Example 5.29

블록에 있는 주소 중 하나가 110.23.120.14/20일 때, 네트워크의 주소 갯수, 첫 번째 주소, 마지막 주소는?

 

답

n=20이므로 네트워크 마스크에는 20개의 1과 12개의 0이 존재한다. ☞ 255.255.240.0a. 네트워크의 주소 갯수(총 블록 갯수): 2^(32 - n) =  2^(32 - 20) = 2^12 = 4096b. 첫 번째 주소(네트워크 주소): 마스크와 주소를 AND 연산 ☞ 110.23.112.0/20

 

 

Example 5.30

ISP(Internet service provider, 인터넷 서비스 제공자)가 1000개의 주소 블록을 요청했을 때 부여되는 블록의 첫 번째 주소와 마지막 주소?

 

답

a. 1000보다 크면서 담을 수 있는 가장 작은 주소의 개수 1024(1024 = 2^10). suffix = 10

b. 블록의 prefix 길이 n = 32 - 10 = 22 ☞ prefix = 22

c. 시작 주소는 18.14.12.0

부여되는 블록: 18.14.12.0/22

첫 번째 주소: 18.14.12.0/22

마지막 주소: 18.14.15.255/22

 

Example 5.31

조직이 과거에 클래스 A 블록을 73.0.0.0으로 지정했다고 가정하자. 블록이 권한에 의해 취소되지 않는 경우 classless 아키텍처는 조직이 classless addressing에 블록 73.0.0.0**/8**을 가지고 있다고 가정한다.

=> 서브네트워크에 대한 주소 할당에서 적용되는 제한사항은 네트워크 주소 할당에 사용되는 것과 유사하다.

 

Example 5.32- 서브 네트워크

조직에 블록 130.34.12.64/26이 부여된다.

조직은 각각 동일한 수의 호스트를 가진 4개의 서브 네트워크를 필요로 한다. 이때 하위 네트워크를 설계하고 각 네트워크의 정보를 찾아라.

 

답

전체 네트워크의 주소 갯수는 N = 2^(32 - 26) = 2^6 = 64개이다.

네트워크의 첫 번째 주소는 130.34.12.64/26이고 마지막 주소는 130.34.12.127/26이다.

하위 네트워크 설계:

  1. 4개의 각 서브 네트워크에 16개의 주소를 부여한다. (64/4 = 16)
  2. 각 하위 네트워크에 대한 하위 네트워크 마스크는 다음과 같다.

 

 

저작자표시 비영리 동일조건 (새창열림)

'CS > Network' 카테고리의 다른 글

[네트워크] TCP/IP 프로토콜의 핵심을 쉽게 이해해보자!  (0) 2025.02.13
[네트워크] NAT  (0) 2025.01.29
[네트워크] IP 주소 개요  (0) 2025.01.29
[네트워크] 소켓 프로그래밍: 프로토콜, 클라이언트와 서버의 함수호출  (0) 2025.01.29
[네트워크] 소켓 프로그래밍 개요  (0) 2025.01.29
'CS/Network' 카테고리의 다른 글
  • [네트워크] TCP/IP 프로토콜의 핵심을 쉽게 이해해보자!
  • [네트워크] NAT
  • [네트워크] IP 주소 개요
  • [네트워크] 소켓 프로그래밍: 프로토콜, 클라이언트와 서버의 함수호출
abyss-s
abyss-s
프론트엔드 공부합니다.
  • abyss-s
    abyss-s의 블로그입니다.
    abyss-s
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • Web (16)
        • JavaScript (6)
        • TypeScript (1)
        • React (5)
        • Vue (0)
        • Storybook (1)
        • Next.js (1)
      • Backend & Infra (8)
        • Database (3)
        • Node.js (2)
        • SpringBoot (1)
      • PS (71)
      • CS (30)
        • OS (13)
        • Structure & Algorithm (5)
        • Network (10)
        • 정보처리기사 (2)
      • Language (18)
        • OOP (1)
        • JAVA (13)
        • C++ (4)
      • Activities (12)
        • 멋쟁이 사자처럼 (2)
        • OSSCA (3)
        • LG U+ URECA (3)
        • Project (2)
      • AI (0)
      • Git & Github (5)
      • Notion (1)
      • IT (4)
      • Statistics (11)
      • Book (4)
      • Diary (1)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
    • 백준
    • 트위터
  • 공지사항

    • abyss-s의 티스토리에 오신 것을 환영합니다.
  • 인기 글

  • 태그

    Java
    github
    Python
    코드트리
    C++
    그리디
    생활코딩
    운영체제
    BAEKJOON
    DP
    파이썬
    백준
    BFS
    자바기반응용프로그래밍
    JavaScript
    네트워크
    통계학
    자바스크립트
    React
    OS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
abyss-s
[네트워크] 클래스 기반 주소 지정
상단으로

티스토리툴바