4,551,898 th visitor since 2017.2.1 ( Today : 483 )
Computer ???
No. 179
Name. coolx
Subject. 서브네트워킹 (라우팅)
Main Cate. Windows
Sub Cate.
Date. 2006-07-21 14:09
Hit. 5241 (220.76.115.27)
File.
이 자료는 MCSE 운영자로 활동 중이신 변승구님이 작성해 주신 문서입니다. 오늘은 자주 나오는 질문인 서브넷팅에 관한 이야기를 해보고자 합니다. 일단은 TCP/IP에 관한 기본적인 지식은 있다는 가정 하에 진행하도록 하지요.

서브넷팅이란 기본 서브넷 마스크를 사용하여 클래스로 묶여진 네트워크를 그보다 작은 네트워크로 나누는 작업을 이야기합니다. 예를 들어 200대의 컴퓨터를 가진 네트워크를 보도록 하죠. 이것을 하나의 네트워크가 100개의 컴퓨터를 가진 두 개의 네트워크로 운영되고자 한다면 어떤 클래스의 IP가 좋을까요? 가장 작은 클래스가 C 클래스 256개 주소가 되니까 이걸 쪼개는 방법을 써야겠네요. 여기서 잠깐 왜 나누지?라고 생각하시는 분들을 위해 다음과 같은 상황을 제시해 보죠. 두개의 네트워크가 서로 다른 지역에서 운영되고 서로간의 통신을 위해 라우터를 사용하는 상황이다.



이렇게 말이죠...(그림이 조악하다고 말해도 어쩔 수 없습니다...-_-;;;)
(한마디 더... 이렇게 나뉘어진 네트워크를 서브넷이라 부르고 이러한 작업을 서브넷팅이라 합니다.)
200대니까 그냥 C 클래스 주소를 그냥 부여할 경우 네트워크 간의 통신이 불가능하게 됩니다. 왜?
지금부터 왜!를 볼 겁니다. IP 호스트는 다른 IP 호스트와 통신하기 위해서 목적지의 위치를 파악합니다. 패킷을 라우트 할 건지 브로드 캐스트 할 건지를 알아야 한다는 이야기입니다. 예를 들어 보죠. 간단한 네트워크를 만들어 보았습니다.



위 그림처럼 네트워크를 구성했다면 IP가 192.168.0.1을 가진 컴퓨터가 172.16.0.1이란 IP를 가진 컴퓨터와 통신하기 위해 아래와 같은 프로세스를 거칩니다. 뭐 그냥 PING을 보낸다고 생각해보죠. 컴퓨터는 패킷을 어느 네트워크에 속한 컴퓨터로 보낼 것인지를 보기 위해 대상 IP를 자신의 SubnetMask 와 연산을 거치게 되죠. 물론 컴퓨터가 아는 숫자라고는 0 과 1 밖에 없으니 이진수로 봐야겠죠.

192.168.0.1은 이진수로 11000000.10101000.00000000.00000001이고
255.255.255.0은 11111111.11111111.11111111.00000000입니다.
172.16.0.1은 10101100.00010000.00000000.00000001입니다.

쉽게 변환하기 위해서는 윈도우에서 제공되는 계산기의 공학용이라는 옵션을 쓰시면 되고요. 사설은 그만두고... IP라는 것은 두 개의 구성 부분이 있습니다. 바로 네트워크 아이디라는 부분과 호스트 아이디라는 부분이 그것이죠. 두 부분을 나누어 주는 것이 바로 서브넷 마스크입니다.

192.168.0.1 11000000.10101000.00000000.00000001
255.255.255.0 11111111.11111111.11111111.00000000

위 두 IP를 AND연산을 시키면 결과는

11000000.10101000.00000000.00000000 이 됩니다.

여기서 서브넷 마스크의 1 즉, 비트와 연산이 되는 부분이 컴퓨터의 네트워크 아이디로 인식되고 나머지 부분이 호스트 아이디로 인식이 됩니다. 고로 192.168.0.1의 네트워크 아이디는 11000000.10101000.00000000 이고 호스트 아이디는 00000001 이 되는 것입니다. 이런 식으로 연산을 한 뒤 컴퓨터는 찾아가려고 하는 대상 컴퓨터의 아이피 역시 자신의 서브넷 마스크로 같은 연산을 거치게 됩니다. 왜 자기 걸로 하느냐고요? 대상 컴퓨터가 속한 네트워크의 서브넷 마스크를 알 리가 없으니까요...^^ 그래도 통신에는 지장이 없도록 되어 있습니다. 일단 지루한 계산을 건너뛰고 결과만 보면

172.16.0.1 10101100.00010000.00000000.00000001
255.255.255.0 11111111.11111111.11111111.00000000

결과는 10101100.00010000.00000000.00000000 이 나옵니다.

컴퓨터는 이제 나온 두개의 결과에서 네트워크 아이디 부분을 비교하게 되죠.

11000000.10101000.00000000
10101100.00010000.00000000

두 개의 결과가 다른 값을 가진 것을 확인한 컴퓨터는 이것이 자신의 네트워크가 아니라는 것을 알고 다음 과정으로 넘어갑니다.

바로 라우팅 테이블을 사용하게 되는데요. 예제는 아래와 같습니다. 도스 프롬프트에서 ROUTE PRINT 명령을 입력하시면 볼 수 있습니다.



정보를 살펴보면 목적지 주소, 네트워크 마스크, 게이트웨이, 인터페이스, 메트릭스 다섯 개의 정보 필드로 구성되어져 있고 아래에는 정보가 나열되어 있습니다. 하나 살펴보면

Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.0.254 192.168.0.1 1

주소가 0.0.0.0 이고 (전체 네트워크를 뜻합니다.) 네트워크 마스크가 0.0.0.0 이면 192.168.0.1 이라는 IP를 가진 장비를 사용해서 패킷을 192.168.0.254인 곳으로 보내라는 지시가 적혀 있는 라인입니다.

또 다른 라인을 보면

Network Destination Netmask Gateway Interface Metric
192.168.0.0 255.255.255.0 192.168.0.1 192.168.0.1 1

주소가 192.168.0.0 이고 네트워크 마스크가 255.255.255.0 이면 192.168.0.1 인 장비로 192.168.0.1 인 라인으로 패킷을 내보내라는 명령이 적혀 있습니다.

정리하면 같은 네트워크 아이디를 목적지로 가진 패킷은 자신의 네트워크 어댑터를 통해 직접 연결된 모든 컴퓨터에게 패킷을 전달하고 다른 네트워크인 경우는 지정된 장비(라우터)로 패킷을 보내는 것을 알 수 있습니다. 간단하죠? 자신이 연결되어 있는 네트워크는 자신의 장비로 해결하고 자신이 모르는 네트워크에 보낼 것은 모두 라우터로 보내 버린다... 사실 이 부분을 이해하려면 좀 더 많은 지면을 할애해야 하는데 오늘 주제가 서브넷팅이니까 담으로 미뤄 버립니다.-_-;;; ß 무책임한 표정...

자 이제 컴퓨터는 패킷을 어디로 보내야 하는지를 너무나 잘 알고 있습니다. 위와 같은 약간은(?) 복잡한 방법으로 말이죠.

왜?는 끝났고 그럼 문제는 다음 순서가 되겠네요. 두 개의 분리된 네트워크에 같은 서브넷 마스크를 (기본적으로 부여된 Default SubnetMask) 사용하면 문제가 생기겠네요. 봅시다. 192.168.0.1 ~ 192.168.0.254 까지의 주소가 유효하니까 딱 잘라서 반씩 192.168.0.1 ~ 127 과 192.168.0.128 ~ 254까지 IP 를 나누었다면 될까요? 서브넷 마스크가 같으므로 192.168.0.1과 192.168.0.200이 통신을 하려고 하면 영원히 패킷은 라우터로 가지 못하고 결국은 서로 통신이 불가능하겠죠? 네트워크 아이디가 둘 다 192.168.0으로 동일하니 분명 브로드캐스트로 끝날 것이 불 보듯 눈에 보이지 않습니까?

그러므로 두 네트워크에게 서로 고유한 네트워크 아이디를 부여하는 방법으로 라우팅을 할 것인지 브로드 캐스트를 할 것인지를 결정하도록 하는 것이 서브넷팅이라는 것 이랍니다. 그럼 예제에 나온 것을 서브넷팅을 해볼까요?

IP의 변화를 살펴보니



이렇게 진행이 되네요...^^;;;(계산기로 해도 시간 걸리기는 마찬가지네요)
127 과 128 사이에 중대한(?) 변화가 있죠. 네 그렇습니다. 자릿수가 올라갔죠. 계속 0 이던 마지막 옥텟 첫자리가 드디어 1 이 되었네요. 의미가 크죠? 그것은 서브넷 마스크는 오로지 왼쪽부터 처음 등장하는 0 이전까지의 비트로만 구성이 되기 때문이지요. 즉 11111111.11110000.00001111.11111111 이렇게 생긴 서브넷 마스크가 있을리는 없지만 만약 있다면 이것은 11111111.11110000.00000000.00000000 과 동일하다는 이야기이죠. 그러므로 네트워크 아이디를 분리(?)하기 위해서는 IP 의 이진수 표기에서 비트의 변화를 주시해야 한다는 점입니다. 먼저 쓰던 서브넷 마스크는 255.255.255.0 즉 11111111.11111111.11111111.00000000 이어서 네트워크를 하나로 인식하게 되지만 127 과 128 의 차이점인 마지막 옥텟 첫자리까지 네트워크 아이디로 편입시키기 위해 비트를 하나 늘리면 11111111.11111111.11111111.10000000 이렇게 되고 이제는 네트워크 아이디가 한자리 비트가 늘어난 255.255.255.128 로 변경이 되면서 하나의 커다란 네트워크가 두 개의 작은 네트워크로 운영될 수 있겠네요.

쉬운 것을 길게 풀어 쓰려니까 힘듭니다...-_-;;; 그래도 처음 접하시는 분은 이 글이 더 머리를 복잡하게 할 지도 모른다는 생각이 갑자기 드네요. 다음에는 먼저 번 시리즈인 215 문제 유형 분석 쏩니다.


[바로가기 링크] : http://coolx.net/cboard/computer/179



Name
Password
Comment
Copyright © 1999-2017, swindler. All rights reserved. 367,611 visitor ( 1999.1.8-2004.5.26 ), 2,405,771 ( -2017.01.31)

  2HLAB   2HLAB_Blog   RedToolBox   Omil   Omil_Blog