윈도우를 포함한 많은 OS들은 네트워크에서 그들의 컴퓨터이름을 나타내기 위한 주소 값들을 가지고 있습니다.
대표적으로 IP를 들 수 있으나 Microsoft OS에서는 NetBIOS를 사용하여 네트워크에서 고유한 이름 값을 가지고 있어서 각자의 컴퓨터를 확인할 수 있습니다.('컴퓨터 이름'이 바로 NetBIOS를사용한 이름값입니다) 네트워크에서 같은 IP를 가지고 있는 컴퓨터가 있으면 충돌이 발생하여 데이터를 교신할 수 없듯이, 컴퓨터 이름도 Microsoft OS의 네트워크에 같은 값이 존재하면 충돌이 발생합니다. 사실 2000이나 XP, 2003만으로 이루어진 네트워크에서는 NetBIOS가 없이도 IP만으로 서로 교신이 가능하나 9x 컴퓨터와 NT 때문에 어쩔 수 없이 사용해야만 하죠…
상당히 골치 아픈 NetBIOS에 관해 알아보겠습니다.
▷ NetBIOS 이름풀이에 관한 옵션
ㆍ B(Broadcast) Node - NetBIOS에서 이름풀이를 할 때 브로드캐스트를 기본으로 사용합니다. 컴퓨터는 상대방PC를 검색할 때 브로드캐스트를 발생하여 찾습니다.
ㆍ P(point to point) Node - point to point 방식으로 일종의 이름서버를 만들고 이 이름서버를 활용하는 방법입니다. 상대방 컴퓨터를 찾을 때 이름서버에 지점간 메세지를 보내어 이름풀이를 요청하는 방식입니다.
ㆍ M(Mixed) Node - 위의 두 방법을 합한 방법입니다. 우선 B Node 후 실패하면 P Node를 시도합니다.
ㆍ H(Hybrid) Node - WINS(Windows Internet Name Service)에서 사용하는 방법으로
P Node 후 B Node를 시도합니다
위의 옵션들을 보시다보면 의문점이 하나 생길 것입니다. 왜 M노드는 B노드후 P노드를
시도하느냐 하는것인데…
예전의 네트워크는 비싼 WAN링크에 좀더 많은 트래픽을 발생시키면 비싼 WAN의 효용성이 크게 줄어들 수 있기 때문에 이런 방식을 사용했다고 합니다(미나시책 설명…) 그리고 그당시 네트워크에서는 브로드캐스트만으로도 충분히 커버할 수 있을정도의 규모였으므로 M노드만으로 충분했었지요… 하지만 네트워크가 확장되고 WAN 링크의 가격이 크게 낮아져서 H노드가 생겨나게 되었습니다.
▷ NetBIOS이름의 구조
NetBIOS는 컴퓨터 이름을 표현하는데 있어서 16바이트를 사용합니다. 이중 15바이트는 컴퓨터의 이름을 마지막 1바이트는 이 컴퓨터가 어떤 서비스를 제공하는지 확인 할 수 있는 접미사를 표현하는데 사용합니다.
커맨드창에서 nbtstst -n을 입력하면 아래의 그림과 비슷한 결과를 얻으실수 있을겁니다.
위의 그림을 보시면 두 가지의 타입이 있는데 UNIQUE는 컴퓨터의 이름 및 사용자 이름, GROUP은 작업그룹 및 도메인을 나타냅니다. Name에서 통신 뒤에 <00> 이라고 되어 있는 것이 실행되는 서비스입니다(16진수 표현)
이 컴퓨터에서 사용중인 서비스는 Messenger 서비스, 서버 서비스, 마스터브라우저로 작동하고있군요.
이를 알기 위한 표를 만들어 봤습니다.
고유한 이름 | 사용장소 |
<computername>[00h] | 워크스테이션 서비스. 기본적인 이름 |
<computername>[03h] | Messenger 서비스 |
<computername>[06h] | RAS Server 서비스 |
<computername>[1Fh] | NetDDE 서비스. NetDDE가 활성화 되어 있거나 NetDDE 애플리케이션을 |
<computername>[20h] | 서버 서비스. 이름은 파일과 프린터 공유가 가능한 컴퓨터 상에만 나타난다. |
<computername>[21h] | RAS Client 서비스 |
<computername>[BEh] | Network Monitor 에이전트 |
<computername>[BFh] | Network Monitor 유틸리티 |
<username>[03h] | Messenger 서비스. NET SEND 명령을 승인할 수 있다. |
<domain name>[1Bh] | 주 도메인 컨트롤러 |
<domain name>[1Dh] | 마스터 브라우저 |
그룹 이름 | 사용장소 |
<domain name>[00h]또는 | 도메인 이름. 이 도메인 이름은 컴퓨터가 해당 도메인이나(과) 워크그룹의 멤버라는 |
<domain name>[1Ch] | PDC와 BDC가 이 이름을 공유할 것이다. 컴퓨터에 이 이름이 등록되어 있으면 도메 |
<computername>[06h] | RAS Server 서비스 |
<domain name>[1Eh]또는 <workgroup name>[1Eh] | 브라우저 선출에 사용되는 이름으로, 이 컴퓨터를 브라우저로 사용하는데 동의한다 |
MSBrowse | 도메인 마스터 브라우저(Domain Master Browser) |
♠마스터 브라우저란??
- 윈도우 네트워크의 작업그룹에서 컴퓨터를 검색할 때 특정 컴퓨터에서 해당 작업그룹내의
컴퓨터에 관한 정보를 가지고 있으며 이 정보를 다른 컴퓨터에게 알려주는 역할을 하는 컴퓨터.
(영진 Network Tip & Tech 참고)
▷ LMHOSTS
이름풀이에 관여하는 파일입니다. 이 파일이 어디에 있냐면…
win9x - C:\WINDOWS\system\drivers\etc
이외 - C:\WINDOWS\system32\drivers\etc
(혹시 없다면 검색을 --;;;;)
이 파일은 처음에 활성화가 되어 있지 않습니다. lmhosts.sam으로 되어 있는 파일에 .sam을 지워주시면 활성화가 되는데 이때부터 네트워크에 있는 컴퓨터의 이름을 찾을 때 브로드캐스트를 하기 이전에 lmhosts를 우선 참조 합니다. 위의 폴더에는 여러 가지 파일이 있는데 이름 풀이에 관여하는 파일에는 hosts와 lmhosts가 있죠…
hosts는 전체 도메인 이름(FQDN)을 이용하여 이름풀이를 하는 파일입니다… 가령 14.2.12.5 라는 컴퓨터의 FQDN이 www.aa.com이라면 hosts파일에 14.2.12.5 www.aa.com 이라 적어주면 DNS를 찾지 않고 바로 연결하죠… lmhosts파일은 NetBIOS이름을 사용하여 이름풀이를 합니다.
127.0.0.1 mycom
lmhosts파일에 위와같이 적어주고 ping을 해주면 오른쪽과 같은 결과를 얻을 수 있습니다.
127.0.0.1은 local loopback address라고 하는데… 자신의 랜 카드가 정상적으로 작동하는지 확인할 때 쓰는 주소랍니다.
127뒤에 어떤 주소를 넣어도 같은 결과를 얻을 수 있습니다.(127.123.55.2등등)
NetBIOS는 기본적으로 브로드캐스트를 사용한다고 위에서 설명했습니다. 브로드캐스트의 단점은 네트워크에 많은 트래픽을 준다는 것 이외에도 라우터를 통과 할 수 없다는 단점이 존재합니다. 그러나 lmhosts 파일을 사용하면(WINS포함) 다른 네트워크에 있는 NetBIOS를 사용하는 컴퓨터에 접속 할 수 있다는 장점이 생깁니다.
그러나 각각의 컴퓨터에 lmhosts를 복사하여 가지고 있어야 한다는 단점이 있습니다. 컴퓨터 한 대의 IP변경시 모든 lmhosts를 업데이트 해주어야 한다는 상당히 번거롭고 짜증나는 작업을 해야 한다는 것이죠…
그래서 그에 대한 단점을 극복하기 위한 WINS가 탄생하게 되었습니다.
(현재는 lmhosts가 비활성화 되어 있을정도로 사용하지 않으므로 편집에 관련된 사항은 설명하지 않고 lmhosts에 관련된 것은 여기서 이만 접겠습니다 ^^;;;;)
▷ WINS(Windows Internet Name Service)
위에서 설명한 H노드를 사용하는 WINS입니다. WINS는 중앙 집중형 NetBIOS이름풀이 서버라고 생각하시면 될 듯. 수십대의 win9x 컴퓨터들로 이루어진 네트워크에서 많은양의 브로드캐스트 발생을 막기 위한 방편으로 사용합니다.(그러나 WINS를 사용하는 곳이 있다는 이야기를 거의 들어본적이 없네요 --;;)
위의 그림에서 Network 1에 있는 client1이 client2에 NetBIOS 이름풀이 요청을 하면 WINS
SERVER에서 이름풀이를 하여 client2를 찾을 수 있도록 도와 줍니다. 그러나 client1이 subnet이 다른 Network2 에 있는 client3또는 client4를 찾는다고 한다면 어떻게 될까요??만약 WINS SERVER가 Network2에 있는 client들의 주소 값을 알고 있다면 이때는 WINS SERVER가 연결을 시켜 줍니다. 하지만 주소 값을 알고있지 않다면 어떻게 해야 할까요??
이때는 Network2에 있는 client중에 하나를 WINS 프록시 에이전트로 두는 것입니다. 프록시 에이전트로 등록된 컴퓨터는 다른 컴퓨터에서 이름풀이 요청을 하는 브로드캐스트를 듣고 다른 subnet에 있는 WINS SERVER를 알려주는 역할을 합니다. (프록시 에이전트는 MCP시험에 나올 확률이 높습니다)
WINS 프록시 에이전트로 만드는 방법은 지정할 컴퓨터에서 TCP/IP 등록정보를 연다음 WINS SERVER의 주소를 입력해주는 것만으로 등록이 됩니다. 간단하죠??
단 한 개의 subnet에서 두 대의 WINS 프록시 에이전트를 둔다면 예상치 못한 결과가 나올수 있으므로 꼭 한 대만 등록해서 사용하여야 합니다.