728x90

/ 실습

- 정보기기 기본이해.pdf 파일 14페이지

/ OSI 7계층

 

 

/ IP란?

- 네트워크 환경에서 컴퓨터(노드)사이에 통신을 하기 위해 각 컴퓨터에 부여된 주소(라고 생각하면 된다.)
* 사실은 각 컴퓨터라기보단 랜카드에 부여된 것인데 일단은 이해를 쉽게 하기위해 컴퓨터라고 생각하자. 또는 핸드폰..
- 이때 아이피 주소는 네트워크 ID호스트 ID로 나뉘게 되는데 예를 들면 이런것이다.
  ex) 내 아이피가 192.168.10.100라고 했을때 [192.168.10]까지는 네트워크 주소라고 말하고 의미는 '집주소'같은 것이다.
       그리고 아이피의 맨 끝인 [.100]부분은 호스트 주소라고 말하고 의미는 '상세주소'같은 것이다.

IP 네트워크 ID 호스트 ID
192.168.10.100 192.168.10 .100
주소 기본 집 주소 상세 주소
서울시 중랑구 면목동 00-00번지 101201 서울시 중랑구 면목동 00-00번지 101동 201호

 

/ IP의 구조

- ip는 32비트로 나누어진다.

1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0

- 근데 이렇게 화면에 표시하면 보기가 너무 불편하니 8비트씩 잘라서 4부분으로 나누고 점찍고 10진수로 표시한다.

1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0
192 168 10 100
첫번째 옥탯 두번째 옥탯 세번째 옥탯 네번째 옥텟

- 나눠진 8비트를 부르는 말은 '옥텟'이다.
- ip는 4개의 옥텟 구조로 되어있다고 할 수 있다.



/ IP 클래스

- 옛날 사람들이 ip를 뭔가 효율적이고 적정하게 배분하기 위해 첫번째 옥탯의 규칙으로 클래스를 나누었다.
- 첫번째 옥텟의 '앞선 비트'에 따라 A, B, C, D, E 클래스로 나누어진다. (이것을 대역에 따라 나눈다고 한다.)
- 시작 ip주소는 각 옥텟의 비트가 제일 작을때를 뜻하고, 각 옥텟의 수가 점점 올라가서 최대값이 되면 끝 주소가 된다.
- 클래스 A는 대규모, 클래스 B는 중규모, 클래스 C는 소규모 네트워크 환경에 쓰인다.
- 클래스 D는 멀티캐스트용, E는 연구/개발용 혹은 미래에 사용하기 위해 남겨놓은 것으로 일반적으로 사용되지 않는다.
- 클래스 A에서 첫 옥텟이 00000000(0)인것과 01111111(127)인 ip는 예약이 되어 있어서 사용할 수 없다.

클래스 앞선 비트 첫번째 옥텟 시작 IP주소
2진수
(10진수)
끝주소
2진수
(10진수)
클래스 A 0 00000000 00000000.00000000.00000000.00000000
(0.0.0.0)
01111111.11111111.11111111.11111111
(127.255.255.255)
클래스 B 10 10000000 10000000.00000000.00000000.00000000
(128.0.0.0)
10111111.11111111.11111111.11111111
(191.255.255.255)
클래스 C 110 11000000 11000000.00000000.00000000.00000000
(192.0.0.0)
11011111.11111111.11111111.11111111
(223.255.255.255)
클래스 D 1110 11100000 11100000.00000000.00000000.00000000
(224.0.0.0)
11101111.11111111.11111111.11111111
(239.255.255.255)
클래스 E 1111 11110000 11110000.00000000.00000000.00000000
(240.0.0.0)
11111111.11111111.11111111.11111111
(255.255.255.255)

* A, B, C, D나눈게 이해가 잘 안되면 돈으로 잠시 생각해보자.
A = 1,000원 ~ 1,999원
B = 2,000원 ~ 2,999원
.
.
.
뭐 대충 이런식으로 구간을 나눠놓은 것이라고 생각하면 된다.

- 각 클래스를 대규모, 중규모, 소규모 별로 쓴다고 했는데 어떻게 그렇게 쓰느냐... 하면
   클래스별로 네트워크ID로 사용하는 옥텟의 갯수가 정해져 있다. 

클래스 A 0                                                              
네트워크 ID
옥탯 1개
호스트 ID
호스트 ID 갯수 = 2의 24승 = 약1,670만개
클래스 B 1 0                                                            
네트워크 ID
옥탯 2개
호스트 ID
호스트 ID 갯수 = 2의 16승 = 약 6만5천개
클래스 C 1 1 0                                                          
네트워크 ID
옥탯 3개
호스트 ID
2의 8승 = 256개

- 이게 뭔 의미이냐..하면
  클래스 A의 경우, ip의 32비트 중에 앞의 8자리는 그냥 회사 번호라고 생각하면 되고 뒤의 24자리가 각 사원컴퓨터 번호라고 생각하면 1,670만명의 사원이 있다고 볼 수 있다. 1,670명이 아니라 1,670만명.
  클래스 B의 경우 ip의 32비트 중에 앞의 16자리를 회사 번호라고 생각하면 뒤에 16비트로는 6만5천명의 사원컴퓨터가 된다.

- 위처럼 네트워크ID호스트ID구분하기 위해 쓰는 것서브넷 마스크(subnet mask)이다.
- '서브넷 마스크'라는 것의 생김새는 ip와 비슷하게 생겼다. 옥텟.옥텟.옥텟.옥텟
- 근데 각 옥텟의 구성이 '10101010.11011010.00101010.00110011' 이런식으로 되면 안된다.
- '11111111.00000000.00000000.00000000'처럼 연속된 1과 연속된 0으로 구성되어야 한다.
- 네트워크 ID가 되는 부분은 1로 표시하고, 호스트ID가 되는 부분은 0으로 표시한다.

클래스 서브넷 마스크
2진수
서브넷 마스크
10진수
클래스 A 11111111.00000000.00000000.00000000 255.0.0.0
클래스 B 11111111.11111111.00000000.00000000 255.255.0.0
클래스 C 11111111.11111111.11111111.00000000 255.255.255.0

- ...?
- 이것이 뭐 어쩌라는 것이냐면..
  예를 들어 '클래스 A로 ip주소를 10.10.10.10을 할당 받았다'그러면 아래와 같이 파악할 수 있다.
  (첫번째 옥탯이 네트워크 ID 8개로 모두 채워졌구나 하고.)

10 10 10 10
네트워크 ID
11111111
호스트 ID
00000000.00000000.00000000

  '클래스 B로 ip주소를 172.10.10.10을 할당 받았다'면 아래와 같이 파악할 수 있다.
  (두번째 옥탯까지 네트워크 ID 16개로 모두 채워졌구나 하고.)

172 10 10 10
네트워크 ID
11111111.11111111
호스트 ID
00000000.00000000

  '클래스 C로 ip주소를 192.168.10.10을 할당 받았다'면 아래와 같이 파악할 수 있다.
  (세번째 옥탯까지 네트워크 ID 24개로 모두 채워졌구나 하고.)

192 168 10 10
네트워크 ID
11111111.11111111.11111111
호스트 ID
00000000


- 네트워크ID가 뭐지.. 호스트ID가 뭐지.. 하면 위에 적은 집주소, 상세주소를 떠올려보자.
  회사에서 내 아이피가 B클래스이고 '172.10.10.10' 라면 [172.10]까지는 특정 회사에 대해 묶여 있는 것(네트워크ID)이고 그 뒤의 [.10.10]은 그 회사에 있는 컴퓨터를 특정지을 수 있는 것(호스트 ID)이다.
  직원이 만약 10명이면 ip를 대충 이런식으로 받았을것이다.
  172.10.10.0
  172.10.10.1
  172.10.10.2
  .
  . 
  .
  172.10.10.9
  172.10.10.10

- 또, 서브넷 마스크를 프리픽스(Prefix)라는 방법을 이용해서 아이피뒤에 표시해주기도 한다.
- '클래스 A로 ip주소를 10.10.10.10을 할당 받았다'를 보면 네트워크ID의 갯수가 8개이므로 '10.10.10.10/8' 이렇게 표시한다.
- '클래스 B로 ip주소를 172.10.10.10을 할당 받았다'를 보면 네트워크ID의 갯수가 16개이므로 '172.10.10.10/16' 이렇게 표시한다.
- '클래스 C로 ip주소를 192.168.10.10을 할당 받았다'를 보면 네트워크ID의 갯수가 24개이므로 '192.168.10.10/24' 이렇게 표시한다.
- 이게 뭔말이냐면 보통 아이피를 클래스 A다, 클래스 B다 이렇게 말 안하고 '192.168.10.10/24'이런식으로 표기하는데,
  이때 프리픽스의 숫자를 보고 '네트워크ID가 24자리까지 있구나. 이건 클래스 C다'하고 알아야 한다는 것이다.

 

- 여기까지 모두 이해되었다면 이제.. 단순히 A, B, C클래스로 나누었을때의 단점을 알아보고 이에대한 대응방안으로 나온 서브넷팅이라는 것을 알아볼 차례이다.
-  ip를 단순히 A, B, C클래스로 나누어 할당을 하려고 보니 안쓰는 ip가 대거 발생하는 문제가 생겼다.
- 예를 들어 어떤 회사가 50개의 아이피를 할당해달라고 요청했을때 클래스C로 할당을 하자니 256개중에 약 200개가 사용하지 않는 ip가 되어버린다..
  ex) 192.168.10.0/24

클래스 C 1 1 0                                                          
네트워크 ID
50개의 ip가 필요한 회사에
호스트 ID
2의 8승
256개를 할당해버림

- 어쩔까..어쩔까.. 하다가 나온것이 '호스트ID쪽의 비트를 쪼개보자!'하고 서브넷팅이다.

 

/ 서브넷팅

- 만약 'ip가 100개 필요한 상황이다'하면 일단 비트로 몇개를 만들 수 있나 보자.
  1비트로는 0, 1이니까 2개 만들 수 있고(2의 1승 = 2개)
  2비트로는 00, 01, 10, 11 이니까 4개를 만들 수 있다. (2의 2승 = 4개)
  3비트로는 000, 001, 010, 011, 100, 101, 110, 111. 총 8개를 만든다. (2의 3승 = 8개)
  이런 식으로 몇 비트로 ip 100개를 충당할 수 있을까.. 생각해보면 7비트로 128개를 만들면 ip 100개는 충당할 수 있다는 결론이 나온다.

1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0
네트워크 ID   호스트 ID
7비트로 128개 만듬 

- 이때 7비트로 호스트ID를 만들게 됬을때 4번째 옥탯의 맨 앞에 있는 1비트는 어떻게 되는거냐,
  이 비트는 네트워크ID로 쓰게되는데 이걸 서브넷 구분 비트라고 한다.

- 만약 ip가 10,000개 필요하다면?
  보자보자.. 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384  ..니까 2의 12승. 12비트를 호스트ID영역으로 만들고 나머지는 네트워크 ID로 만들면 되겠다.

- 10,000개 필요한데 16,000개나? 라고 할 수 있지만 6만5천개 만든것보다 낫잖아.. 하는것이 서브넷팅이다.
- 그림을 보면 알겠지만 몇번째 옥탯에 있는 비트자리에서 나뉘어지는가에 따라 클래스B에서 할당하는지 클래스C에서 할당하는지 알 수 있다.

 

- '몇개를 할당한다' 까지는 알겠으면 이제 범위를 구하는 쪽도 알아보자.
- 서브넷팅이라는 개념이 사실 위에서 서술한대로도 설명할 수 있지만 또 다른 방식으로도 서술해보자면
- 클래스 C에서 할당가능 한 ip의 갯수는 256개인데, 이때 256개라는 뜻은 네번째 옥탯의 8비트. 즉 00000000(10진수 0) ~ 11111111(10진수 255)까지라서 256개가 카운트 된것이다.
- 이때 8비트의 맨 앞자리 수를 0 또는 1로 고정시켜서 7비트로만 범위를 카운트해보면 127개씩 범위가 나온다.

자릿수 1 2 3 4 5 6 7 8
첫번째 경우 0 0000000 ~ 1111111
두번째
경우
1 0000000 ~ 1111111

  첫번째 경우 00000000(10진수 0) ~ 01111111(10진수 127) 로 범위가 나오고
  두번째의 경우 10000000(10진수 128) ~ 11111111(10진수 255)로 범위가 나온다.
  그리고 각 갯수는 256개를 반으로 쪼갠 127개가 된다.
- 첫번째 경우 192.168.10.0 ~ 192.168.10.127
  두번째 경우 192.168.10.128 ~ 192.168.10.255
  (파란색은 네트워크ID영역이고 주황색은 호스트ID영역이다.)

  * 2진수가 바로바로 10진수로 변환이 안되면 일단은 2진수 계산기 사이트를 이용해보자. 그치만 계산할줄은 알아야 한다.  

- 이번엔 맨 앞자리수 말고 맨앞 두자릿수를 00, 01, 10, 11로 고정시키고 6비트로 범위를 나눠보면 어떻게 될까?

자릿수 1 2 3 4 5 6 7 8
첫번째 경우 0 0 000000 ~ 111111
두번째
경우
0 1 000000 ~ 111111
첫번째 경우 1 0 000000 ~ 111111
두번째
경우
1 1 000000 ~ 111111

  첫번째 경우 00000000(10진수 0) ~ 00111111(10진수 63) 로 범위가 나오고
  두번째 경우 01000000(10진수 64) ~ 01111111(10진수 127) 로 범위가 나오고
  세번째 경우 10000000(10진수 128) ~ 10111111(10진수 191) 로 범위가 나오고
  네번째의 경우 11000000(10진수 192) ~ 11111111(10진수 255)로 범위가 나온다.
  그리고 각 갯수는 128개를 반으로 쪼갠 64개가 된다.
ex) 
    첫번째 경우 192.168.10.0 ~ 192.168.10.63
    두번째 경우 192.168.10.64 ~ 192.168.10.127
    세번째 경우 192.168.10.128 ~ 192.168.10.191
    네번째 경우 192.168.10.192 ~ 192.168.10.255
    파란색은 네트워크ID영역이고 주황색은 호스트ID영역이다.

- 클래스 C에서 봤으니 클래스 B에서도 한번 예를 들어볼까나
  클래스 B에서 할당가능한 호스트ID ip의 갯수는 약 65,000개인데 이때 65,536개는 8+8비트. 즉 16비트의 00000000.00000000(10진수 0) ~ 11111111.11111111(10진수 65535)까지라서 65,536개가 카운트 된것이다.
- 이때도 똑같이 16비트에서 맨 앞자리 비트를 0 또는 1로 고정시켜서 15비트로만 범위를 카운트해보면 32,768개씩이 된다.

자릿수 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
첫번째 경우 0 0000000.00000000 ~ 1111111.11111111
두번째
경우
1 0000000.00000000 ~ 1111111.11111111

  첫번째 경우 00000000.00000000(10진수 표현 0.0) ~ 01111111.11111111(10진수 표현 127.255) 로 범위가 나오고
  두번째의 경우 10000000.00000000(10진수 표현 128.0) ~ 11111111.11111111(10진수 표현 255.255)로 범위가 나온다.
  그리고 각 범위의 갯수는 65,536개를 반으로 쪼갠 32,768개가 된다.
ex) 
    첫번째 경우 129.10.0.0 ~ 129.10.127.255
    두번째 경우 129.10.128.0 ~ 129.10.255.255
    파란색은 네트워크ID영역이고 주황색은 호스트ID영역이다.

  * 2진수가 바로바로 10진수로 변환이 안되면 일단은 2진수 계산기 사이트를 이용해보자. 그치만 계산할줄은 알아야 한다.  

- 이번에도 맨 앞자리 비트 말고 앞 두자리 비트를 00, 01, 10, 11로 고정시키고 14비트로 범위를 나눠보면 어떻게 될까?

자릿수 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
첫번째 경우 0 0 000000.00000000 ~ 111111.11111111
두번째
경우
0 1 000000.00000000 ~ 111111.11111111
세번째 경우 1 0 000000.00000000 ~ 111111.11111111
네번째
경우
1 1 000000.00000000 ~ 111111.11111111

  첫번째 경우 00000000.00000000(10진수 0) ~ 00111111.11111111(10진수 63.255) 로 범위가 나오고
  두번째 경우 01000000.00000000(10진수 64.0) ~ 01111111.11111111(10진수 127.255) 로 범위가 나오고
  세번째 경우 10000000.00000000(10진수 128.0) ~ 10111111.11111111(10진수 191.255) 로 범위가 나오고
  네번째의 경우 11000000.00000000(10진수 192.0) ~ 11111111.11111111(10진수 255.255)로 범위가 나온다.
  그리고 각 범위의 갯수는 32,768개를 반으로 쪼갠 16,384개가 된다.
ex) 
    첫번째 경우 129.10.0.0 ~ 129.10.63.255
    두번째 경우 129.10.64.0 ~ 129.10.127.255
    세번째 경우 129.10.128.0 ~ 129.10.191.255
    네번째 경우 129.10.192.0 ~ 129.10.255.255
    파란색은 네트워크ID영역이고 주황색은 호스트ID영역이다.

- 이때 위에서 말했던 00, 01, 10, 11 이런식으로 아이피 대역을 4개로 나누든 00, 01 두개로 나누든 했던 부분을 서브넷 구분 비트라고 하고 요 부분은 네트워크ID로 쓰이게 된다.

- 바로 위 예시의 첫번째 경우 129.10.0.0 ~ 129.10.63.255 범위에서 129.10.55.56 라는 아이피를 할당 받았다면 129.10.55.56/18으로 표기할 수 있는데, 그 이유는 아래의 구조와 같기 때문이다.

  

/ 이쯤 되면 사실 그냥 비트 쪼개기 놀이 하는 느낌인데 뭐 시험이나 실무 이런곳에서 어떻게 쓰이는지 살펴보자.

 

 

 

 

 

 

 

/ 고정길이 서브넷 마스크(FLSM)

 

/ 가변길이 서브넷 마스크(VLSM)

 

728x90

'정보보안학원 > 과정평가형 일지' 카테고리의 다른 글

9일차 - 시스템  (0) 2022.04.26
8일차 - 네트워크  (0) 2022.04.25
6일차  (0) 2022.04.21
5일차  (0) 2022.04.21
4일차  (0) 2022.04.19

+ Recent posts