samba 관련해서 윈도우 네트워크의 원리가 궁금합니다.

ratmhun의 이미지

samba 공부하면서 궁금한 점이 생겼습니다.
(윈도우 네트워크에서 파일 공유 원리에 대해 구체적으로 설명해 놓은 문서를 찾기도 어렵네요.)

윈도우 네트워크에서 브라우저 선출이 끝난 다음에

master browser, backup browser 등이 정해진 다음

master browser나 backup browser가 네트워크의 컴퓨터 목록을 보유하다가

클라이언트의 전송 요구가 있으면 정해진 순서에 의해 목록을

제공하는 것으로 알고 있습니다.(아래 제가 참고한 문서의 일부를 인용했습니다.)

하지만 직접 wireshark를 통해서 살펴본 결과 생각했던 것과 조금 다른 것 같습니다.

일단 브라우저 선출 과정은 시스템이 부팅되면서 이루어지니 직접 살펴보기가 어려웠지만
다른 컴퓨터가 부팅했을 때 broascast로 컴퓨터 이름, 작업 그룹 등의 정보를 registration하는 것은 확인했습니다.

name query 과정은 생각했던 것과 달랐는데 문서에는 name query를 master browser에 직접 하는 것으로 나와 있지만
실제로는 master browser나 backup browser에 대해 직접 하는 것이 아니라 항상 broadcast에 의존하고 있었습니다.

name query response도 수상했습니다. master browser나 backup browser가 전혀 관여하지 않고 해당 호스트가 직접 자기 IP 주소로 name query response했기 때문입니다. ('netbios over tcp/ip'로 netbios를 바인딩하기 때문에 IP 주소 정보를 주고받는 것이겠죠?) 이럴꺼면 브로드캐스트로 query/response 하는게 전부라면 굳이 master browser나 backup browser를 둬야할 필요가 있을까하는 생각도 해봤습니다.

제가 잘못 생각하고 있는 것인가요?

검색해서 참고한 내용은 다음과 같습니다.(이게 옳은 소린지 궁금해요.)

Quote:

WINS server 를 사용하지 않는 경우

(가) 브라우저의 종류와 기능

브라우저에는 3가지 종류가 있으며 기능은 다음과 같다.

마스터 브라우저 : 마스터 브라우저 알림 패킷을 주기적으로 사용자들에게 브로드캐스트 한다.
백업 브라우저 : 브라우징 리스트를 사용자들에게 전달한다.
도메인 마스터 브라우저 : PDC 만이 될 수 있으며 모든 마스터 브라우저의 브라우즈 리스트를 동기화한다.

(나) 브라우징 과정

브라우징 수집 및 분배 과정

- 클라이언트들은 평상시 마스터 브라우저 로부터 마스터 브라우저 알림
패킷을 주기적으로 받아 마스터 브라우저가 어떤 호스트인지 알게 된다.
- 클라이언트들은 마스터 브라우저에게 자신의 존재를 브로드캐스트 한다.
- 마스터 브라우저는 클라이언트들의 등록을 받아 리스트를 만든다.
- 마스터 브라우저는 백업 브라우저들에게 브라우즈 리스트 copy을 주기적
으로 분배한다.
- 백업 브라우저들이 마스터 브라우저 로부터 리스트가 3회 이상 안 오면
다운으로 간주하고 새 마스터 브라우저를 선출한다.

클라이언트의 브라우징 요청 서비스

- 클라이언트 "가” 가 네트워크 환경 아이콘을 클릭하면 마스터 브라우저에게
리스트를 달라고 요청한다.
- 마스터 브라우저는 3개의 백업 브라우저의 리스트를 클라이언트"가"에게
보내준다.
- 클라이언트 "가" 가 하나의 백업 브라우저에게 브라우징 리스트를 요청한다.

- 백업 브라우저가 클라이언트"가" 에게 리스트를 가르쳐 준다.
그러면 클라이언트 "가" 는 네트워크 환경의 이웃 컴퓨터 NetBIOS 이름들을
볼 수 있다.
- 그중 클라이언트"가"가 클라이언트 "나"를 클릭하게 되면 브로드캐스트를
날리게 되고 그 중 "나"는 목적지가 자신의 이름인 "나"임을 확인하고 자신의
공유되어진 폴더 정보를 응답 해 준다. 다른 컴퓨터들은 자신의 이름이
아니므로 무시해버린다.

(다) 문제점

1) 위에서 언급 했듯이 브라우저 선출 , 리스트 분배 등의 과정이 모두
브로드캐스트에 기반하므로 전체 사용자가 불필요한 브로드캐스트 패킷을
받게 되어 사용자 인터럽트는 물론, 네트워크 사용자 증가와 함께 네트워크
성능은 급격히 떨어진다.
2) TCP/IP와 더불어 NetBEUI 나 IPX/SPX 를 추가하여 Multi-protocol을
사용하여야 한다.

Undisputed의 이미지

Wins에 대해 깊이 알지는 못하지만,
답변이 없어, 남겨봅니다.

이해하신 것처럼, 같은 서브넷에 물려있는 윈도우 서버끼리는 WINS의 구성없이 해당 서버의
이름과 그룹정보를 확인할 수 있습니다.

윈도우건, 리눅스건 네트워킹이 되려면
상대서버에 대한 경로 파악이 되어야 하는데요.
같은 서브넷의 경우엔 서버들이 항상 브로드케스팅으로 서로를 바라보고 있기때문에
해당 서버들의 위치(ip,mac,netbios)를 알고 통신이 가능합니다.

Wins라는 녀석이 이에 더불어 브로드케스팅을 한번 더 날린다고 보시면 되구요.
그러니, 네트웍상에는 브로드케스팅 패킷이 넘쳐나게되고,
정상적인 패킷들의 통신에 영향을 미칠 수 있게되는거 같습니다.

kasi의 이미지

클라이언트 들이 마스터(?로컬) 브라우저를 알고 있다고 해도 로컬에 저장된 그 브라우저에 대한 정보를 항상 그대로 사용하는 것은 아닙니다.

삼바로 네트워크 연결을 시작 할때 자기가 누구로 부터 목록을 받아와야 하는지 확인하기 위해서 브로드 캐스트를 날리는 것으로 알고 있습니다.

네트워크에 있는 각 컴퓨터들은 자신이 마스터(?로컬) 브라우저 서버라면 자신이 가지고 있는 목록을 전달합니다.

와이어 샤크로 보시면 각 호스트이름과 아이피 목록이 한 아이피로 부터 날라오는 것을 확인하실 수 있으실 것 입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.