TCP/IP 的迷思﹖


> "戒了愛爾蘭咖啡"  撰寫於郵件
> news:3iEEjY$Wzf@bbs.ncku.edu.tw...
> > 同一區網下如果要讓 兩個C class ip 的電腦 網芳互通!
> >
> >  是否一定要用 NetBEUI通訊協定呢?
> >
> >  windows 作業系統預設並不會安裝此協定!
> >
> >  每一台都設好麻煩! 好像也會影響頻寬???
> >
> >  是否有其它解決的方式呢?
> >


> "老盡少年心"  撰寫於郵件
> news:3iEJdk$Wbf@bbs.cis.nctu.edu.tw...
> > ==> 在 "網中人"  的文章中提到:
> > > 假如實體連線是不通的話﹐不用理會這篇回復﹕
> > > 同一 LAN 裡面﹐裝 NetBEUI 是最簡單的。如果您有一千零一個理由不裝這個協
> > > 定﹐那就架設 WINS server  吧﹐最好用 NT﹐如果不想花錢﹐Linux SAMBA 也可以。
> > > 如果連 WINS 也不想架﹐那就將所有機器的 IP 和 NetBIOS Name 的對應﹐寫在
> > > 每一台機器的 \windows\LMHOSTS 檔裡面吧。
> > > 不過﹐無論是 WINS 還是 LMHOSTS﹐都是 NetBIOS over TCP/IP 而已﹐反正都
> > >是 NetBIOS﹐不見得比 NetBIOS Extended User Interface (NetBEUI) 要好。鑒於您
> > > 所說的“同一個 LAN”(假設是實體網路是相通的)的前提之下﹐我有一千個理
> > > 由建議您裝 NetBEUI﹐不過﹐倒樂意聽聽您第一千零一個理由是什麼﹖
> >
> >   一千零一個理由,兩個class c的電腦...估個兩百台
> >   broadcast會很嚴重..
> >
>

"網中人"  撰寫於郵件 news:9n4gcg$fah$1@news.seed.net.tw...
>
> 這個理由不接受  :-)
>
> 就算用 NetBIOS over TCP/IP, 難道就沒有 Broadcast? 除非您是乾脆連網路芳鄰
> (netBIOS) 都不要了。
>
> 我已經提出了討論前提﹕“假如實體連線是不通的話﹐不用理會這篇回復。”
>
> 如果兩個 C class 彼此都分開物理連線﹐用 router 來連接的話﹐那單純裝NetBEUI
> 沒什麼意義﹐因為它不能路由。既然要路由﹐那 NetBIOS 封包必須 Encapsulated
> 在IP 封包進行路由。
>
> 但如果前提條件符合的話(同一物理連線)﹐拿掉 Router﹐拿掉 TCP/IP﹐用 NetBUIE
> 不就好了﹖(如果您說要上 Internet 那我沒話說。)
>
> 不論是 NetBUIE 或 NetBIOS over IP﹐netbios 本身需要的廣播﹐例如 master
> browser election、m/b discovery、netbios registration、m/b listing、 這
>些﹐同樣都會發生。不見得在前提條件下(同一物理連線)﹐分開兩個兩個邏輯 Subnet 會
> 將 broadcast 降低。而相反﹐本來是單一的 broadcast﹐而現在卻變成了 subnet 1 ->
> router(同一物理連線也要) -> subnet 2 的雙重廣播﹐幸好現在都用 switch﹐如果
> 用400 台電腦都用 hub 的話﹐死得更難看...
>
> 所以﹐請舉其它理由...
>


網中人"  撰寫於郵件 news:9n5bul$a1m$1@news.seed.net.tw...
> "滿足現況"  撰寫於郵件
> news:3iFH5O$W9i@bbs.cis.nctu.edu.tw...
> >
> > 我是站在TCP/IP這邊的,因為一般來說TCP/IP是一定會裝的協定
> > 即然裝了TCP/IP,那其它的協定如果沒有必要,就不需要再安裝了
>
> 怎麼老是掉入 TCP/IP 的迷思中呢﹖
>
> 我們不妨先將討論環境設定下來好不好﹖
>
> 條件﹕
> 1) 在同一物理連線的 LAN 中﹔
> 2) 需要使用 TCP/IP 連接外部網路(或同一網路)﹔
> 3) 在 TCP/IP 上切分了兩個 subnet ﹐彼此分享著同一物理連線。
> 4) 節點之間使用 switch (可以接受我在這裡限定為 layer 2 吧﹖)
>
> 目標﹕
> 建立 windows 機器上的網路芳鄰連線。
>
> 方案﹕
> 1) 單純使用 TCP/IP 協定﹐然後以 NetBIOS over TCP/IP 運用 WINS 或 LMHOSTS
> 解決路由問題。
> 2) 加裝 NetBEUI 協定﹐略過 WINS 或 LMHOSTS 直接點對點的連線。
>
> 命題﹕
> 究竟採用方案 1 還是方案 2 更加有效﹖
>
> 如何﹖如果接受這些假設﹐再繼續討論﹐否則算了。
> (我只單純想討論技術﹐任何人身攻擊或族群對立﹐均不感興趣)
>
>
> > 1.WinNT以前只提供netbios,我想是因為要拿下Netware的市場
> >   況且當時的網路架構而言,若是要一般管理員在安裝時還要設
> >   定一堆數字,那市場一定吃不下來... 我想netbios為預設值
> >   應該是方便考量,而不是速度考量
>
> 當初 IBM 之所以要發展出 netbios (其後很快又發展出 NetBEUI﹐但大家還是習慣
> 稱為 netbios )﹐就是因為想要在小型的網路中開發簡單的通訊協定。技術而言﹐它
> 只是開發 18 個網路命令讓同一物理連線的機器進行連線的建立、維護、結束而已。
> 用過LAN Manager 或是 net command 的朋友都知道如何使用。
>
> 當初 NT v4 的推出﹐其主要目標還是 LAN 為主﹐所以 TCP/IP 被列為 optional。
> 並非是因為網路管理員不會設 IP/Subnet/Routing 這些東西(我個人覺得 IPX 比
> TCP/IP還難設﹐指修改設定檔啦 :)。如果網管不會這些﹐那就不叫網管;而讓這樣的
> 網管所主導的市場﹐也不會很大。我認為以 Microsoft 的眼光而言﹐不會因為這些
> 網管而取消TCP/IP。
>
>
> > 2.就安全性而言,多開Serice會造成電腦受到入侵的威脅越大,所
> >   在目前已有TCP/IP的協定前提下,當然建議是不要再安裝netbios
> >   或是netbuit
>
> 由於 netbios 是不能路由的協定﹐如果說構成安全問題﹐那多是內鬼﹔或是 TCP/IP
> 本身的連線遭到入侵﹐再從內部建立跳板。在一個信任的 LAN 環境中﹐netbios 不
> 是罪魁禍首﹐而是教育、修養、以及公司管理規程和企業文化。
>

補充﹕事實上﹐在 TCP/IP 上面開放 port 137,138,139 就是要讓 NetBIOS 能夠在
TCP/IP 上面跑。如果您的用 TCP/IP 連接外部網路﹐最好在防火牆上將這幾個 port
攔下來。您會發現﹐在開放的環境中﹐真正構成安全威脅的﹐正是 TCP/IP 而非
Netbios 。

>
> > 3.一台電腦上裝多個協定也會造成管理上的不便
>
> 這太武斷了。為什麼要用 protocol stack ﹖ 就是因應不同的環境和工作目的採用
> 相應有效的方案。我們從事資訊的﹐不是為了協定而工作﹐而是讓協定為工作服務。
> 若是將某一協定置於 stack 當中﹐其實正是管理的考量。
>
> 您要連上 Unix/Linux 或 Internet/Intranet﹐那就要用 TCP/IP﹔要連接
> netware﹐就用 IPX﹔要連接網路芳鄰(同一網段)﹐那就用 NetBEUI ...
>

補充﹕在某些 Gateway 架構下面﹐protocol 是可以分開的。例如在 netbios 網路上
面連接 SNA (IBM mainframe) 網路﹐您可以在每一台機器上面裝 xDLC 協定﹐直接連
接 SNA﹔也可以只在 SNA Gateway 上面裝 xDLC﹐這樣﹐client 和 gateway 之間保留
netbios 就可以了。

>
> > 4.在LAN中如果用switch hub,我想在邏輯上switch都會為兩種
> >   協定建立單獨的連線,但因協定本身處理的方式不同而在效能
> >   上會有影響
>
> 如果我們這裡談的 layer 2 switch 居然可以根據不同的協定建立單獨連線﹖我還是
> 頭一次聽到﹐抱歉﹐恕我孤陋寡聞﹐可以告訴到哪裡找這個論據嗎﹖如果是 layer 3
> 或以上的 switch﹐也願意聽閣下解釋一下 switch 如何以‘協定’為依據來建立邏
> 輯連線﹖我只單純的知道 layer 2 只以 MAC 位址為依據而已﹐而它採用的連線和檢
> 測也是datalink 這層所定義的﹐而非上層協定所定義的。
>
> 假如我們這裡使用 NetBEUI﹐那當 netbios_name_1 要送一個封包給
> netbios_name_2 的話(這裡﹐讓我們集中在 switch 上面好了)﹕
> 1) netbios_name_1 透過廣播查詢這個 netbios_name2 的 MAC﹔
> 2) netbios_name_2 回應這個 netbios 查詢﹔
> 3) netbios_name_1 就可以直接交由 switch 遞送了。
>
> 如果採用 NetBIOS over IP﹐那傳送過程將變為﹕
> 1) 沒有 WINS 的情形﹕
> netbios_name_1 先會採用預設的 b-node 方式送出廣播﹐查詢 netbios_name_2 所
> 對應的 IP 位址(注意﹕不是 MAC 位址)﹐但如果物理連線不一樣的話﹐廣播則無法
> 到達。假如得不到回應﹐轉而查詢 LMHOSTS﹐如果 LMHOSTS 也沒有﹐那就查詢失敗。
> 2) 有 WINS 的情形﹕
> netbios_name_1 以 h-node 方式向 WINS 查詢 netbios_name_2 的 IP 位址﹔若失
> 敗則改用 b-node 的廣播﹔若還是失敗﹐則查詢 LMHOSTS﹔若失敗就結束。
>
> 我們不難發現﹐無論是 NetBEUI 或 NetBIOS over TCP/IP﹐都會產生廣播﹐但如果
> 用Wins 的話﹐則在一定程度上將廣播減少(這要視乎 TTL 和連線週期而定)﹐無論如
> 何﹐用 NetBIOS 協定就要面臨大量的廣播。
>
> 但在我們這樣環境中﹐如果有 WINS 的話﹐您會發現單一的傳送過程需要的步驟﹕
> 1) netbios_name_1 以 ARP 廣播查詢 WINS 的 MAC﹐這會讓 switch 對所有連接主
> 機送出封包﹔
> 2) WINS 回應 arp_reply 告知其 MAC 位址﹔
> 3) netbios_name_1 根據 MAC 將帶 netbios 註冊的 TCP/IP 封包送給 WINS﹐完成
> 註冊﹔
> 4) netbios_name_2 也必須重複上述 3 個步驟﹔
> 5) netbios_name_1 向 wins 查詢 netbios_name_2 的 TCP/IP 封包(如果 ARP
> cache 關於 WINS 的 MAC 記錄已經逾期﹐則重複 1 和 2 步驟)﹔
> 6) wins 回應這個查詢﹐送回 TCP/IP 封包﹔
> 7) netbios_name_1 根據回應結果進行路由判斷﹔發現在不同的 subnet 之內﹔ 將
> netbios 封包封裝進 TCP/IP 裡面﹐傳送給 router ﹔
> 8) router 檢查目的端 IP 位址﹐進行 ip forwarding 動作﹐將封包送給
> netbios_name_2;
> 9) netbios_name_2 對 TCP/IP 封包進行 decapsulate 動作﹔最後讀取到
> netbios_name_1 送來到 netbios 封包。

補充﹕如果 router 的 MAC 位址已經在 arp cache 中逾期﹐那也必須重複第 1 和第
2 步驟。

>
> 您覺得這樣的情況之下 NetBIOS over TCP/IP 會比單純的 NetBEUI 要更快﹖
>
> 我絕對不認同啦﹗
>
> 而且﹐稍有常識的 TCP/IP 網管﹐都會避免在同一個物理連線上切割不同的 subnet
> 或使用不同的子網聚集。因為如果在同一個 subnet 內﹐host_1 到 host_2 的封包
> 送一次就好了﹐如果切在不同的 subnet 內﹐封包最少要變雙倍﹕host_1 -->
> router -->host_2 ﹐越繁忙的網路越慘﹗
>
>
> > 5.NetBios與NetBuit都是採用Datagram的傳輸方式,相較
> >   於TCP/IP是建立Trust Connection而言,不論是傳輸的
> >   品質或速度上,當然是TCP/IP好。根據實際測試結果
> >   TCP/IP比DataGram好太多了,所以可能和另一位的說法不合
> >   主要還是在傳輸有問題時兩者協定的做法上有很大的不同吧.
>
> 什麼 datagram 或 stream 傳送啊﹖都是 TCP 裡面定義的﹐NetBIOS 是使用
> message block 進行傳送的好不好﹖您真的在同一 LAN 中測試過 NetBEUI 和
> TCP/IP 實際傳送的數據(程式用資料)的比較嗎(記得將 NetBEUI 設定為‘預設協
> 定’哦)﹖光是TCP/IP那一大串 header、不固定的封包長度、還有那極度不信任感
> 驅使的 error checking(不要忘記 TCP/IP 的研發是冷戰的產物哦)﹐在穩定高效
> 的 LAN 中跑這樣的笨重協定實在不是明智之舉。(聲明在先﹕我指在 LAN 中而已﹐
> 如果您工作使用的程式﹐如Email 系統﹐一定要用 TCP/IP﹐那是沒辦法。或許﹐
> 您沒見過許多倉庫或碼頭的鐵皮屋裡面還在跑 LAN Manager 吧﹖)
>
> 您不妨比較一下 NetBEUI 和 TCP/IP 的封包格式﹐以及它們的傳送確認再回來說
> “TCP/IP 比 DataGram 好多”的話吧(笑話啦﹕TCP 家族的 UDP 就是 datagram 格
> 式)。如果 TCP/IP 夠好﹐幹嘛還用 UDP﹖幹嘛還開發 Muticasting? 連 NFS 這個悠
> 久的 UNIX 網路檔案系統﹐到了 version 3 才提供 TCP 支援。
>
> >
> > 目前只想到4點,所以...我的結論是..
> > 1.如果您是自己的lan,不論您要用啥都可以,就安全考量而言,只要裝
> >   一種就好了...不過,回過頭來說,一家公司也會有自己的網站或FTP
> >   Directory Service等,都要用TCP/IP協定..呵呵...
>
> 安全考慮不是不對﹐但要對症下藥。我認為﹐對安全性損害最大的是‘人為’因素﹐
> 而非您用什麼協定﹐也不是您用什麼系統。
>
> > 2.如果您已有TCP/IP,那其它的就不要裝了...
>
> 採用不同的協定﹐是因應不同的環境﹐而不是改變環境遷就單一的協定。將公司的營
> 運和利益放在第一位置來設計就沒錯了。
>
> ---- p.s. ---
>
> 另外﹐想了想前面 Allen 所說的﹐反而有點道理﹕如果數目超過 400 台電腦﹐恐怕
> 也難以將所有主機建構於同一物理連線上吧﹖今天的單一 switch 有多少個 port (
> 包括stack﹐先不管 tucking 和 vlan)? 儘管 netbios 沒有單一 c class subnet
> 的254台電腦的限制﹐但物理的連線上恐怕也是一個難題﹐而且沒有 WINS 的參與﹐
> 的確會造成極大的廣播數量。不過﹐既然超出了我所設定的前提框架﹐所以﹐抱歉﹐
> 還是不接受這個一千零一的理由 :-)
>
> --
>
> ======= http://www.study-area.org =======
> 飛雪迎春到﹐風雨送春歸
> 已是寒崖百丈冰﹐尤有花枝俏
> 俏也不爭春﹐只把春來報
> 待得山花爛漫時﹐他在叢中笑﹗