TCP/IP 的迷思﹖
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 ======= > 飞雪迎春到﹐风雨送春归 > 已是寒崖百丈冰﹐尤有花枝俏 > 俏也不争春﹐只把春来报 > 待得山花烂漫时﹐他在丛中笑﹗