﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-剑父的技术之路-随笔分类-协议分析</title><link>http://www.cppblog.com/huangjianfu/category/10847.html</link><description>网络信息安全</description><language>zh-cn</language><lastBuildDate>Wed, 10 Jun 2009 08:41:21 GMT</lastBuildDate><pubDate>Wed, 10 Jun 2009 08:41:21 GMT</pubDate><ttl>60</ttl><item><title>什么是信息安全？</title><link>http://www.cppblog.com/huangjianfu/archive/2009/06/10/87333.html</link><dc:creator>黄剑父</dc:creator><author>黄剑父</author><pubDate>Wed, 10 Jun 2009 08:11:00 GMT</pubDate><guid>http://www.cppblog.com/huangjianfu/archive/2009/06/10/87333.html</guid><wfw:comment>http://www.cppblog.com/huangjianfu/comments/87333.html</wfw:comment><comments>http://www.cppblog.com/huangjianfu/archive/2009/06/10/87333.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/huangjianfu/comments/commentRss/87333.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/huangjianfu/services/trackbacks/87333.html</trackback:ping><description><![CDATA[信息安全涉及到信息的保密性（Confidentiality）、完整性（Integrity）、可用性（Availability）、可控性（Controllability）和不可否认性（Non-Repudiation）。综合起来说,就是要保障电子信息的有效性。保密性就是对抗对手的被动攻击,保证信息不泄漏给未经授权的人。完整性就是对抗对手主动攻击,防止信息被未经授权的人篡改。可用性就是保证信息及信息系统确实为授权使用者所用。可控性就是对信息及信息系统实施安全监控。
<img src ="http://www.cppblog.com/huangjianfu/aggbug/87333.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/huangjianfu/" target="_blank">黄剑父</a> 2009-06-10 16:11 <a href="http://www.cppblog.com/huangjianfu/archive/2009/06/10/87333.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>以太网教程：集线器(Hub)（转）</title><link>http://www.cppblog.com/huangjianfu/archive/2009/06/10/87326.html</link><dc:creator>黄剑父</dc:creator><author>黄剑父</author><pubDate>Wed, 10 Jun 2009 07:46:00 GMT</pubDate><guid>http://www.cppblog.com/huangjianfu/archive/2009/06/10/87326.html</guid><wfw:comment>http://www.cppblog.com/huangjianfu/comments/87326.html</wfw:comment><comments>http://www.cppblog.com/huangjianfu/archive/2009/06/10/87326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/huangjianfu/comments/commentRss/87326.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/huangjianfu/services/trackbacks/87326.html</trackback:ping><description><![CDATA[资料来源：<a href="http://www.cnpaf.net/Class/Ethernet/200408/402.html">http://www.cnpaf.net/Class/Ethernet/200408/402.html</a>，中国协议分析网<br><br>正如其名字所暗示的，Hub就是活动的中心。用网络术语来说，Hub或 Concentrator，是基于星形拓扑的接线点。Arcnet、10Base-T、10Base-F及许多其它专用网络都依靠集线器来连接各段电缆及把数据分发到各个网段。集线器的基本功能是信息分发，它把一个端口接收的所有信号向所有端口分发出去。一些集线器在分发之前将弱信号重新生成，一些集线器整理信号的时序以提供所有端口间的同步数据通信。具有多个10Base-F接口的集线器就象是使用镜子来把光线分到各个端口。<br><br>图1是基本的10Base-2网络，注意机器间连接的方式和数据在源设备和目的设备间的各个设备的处理及传递。<br>
<p align=center><img src="http://www.cnpaf.net/article/Files/RoUpimages/0183618605.jpg" border=0></p>
<br><br><br>图2是与图1相同的网络，不过是10Base-T，可以看到拓扑的不同和集线器是如何嵌到此网中。<br>
<p align=center><img src="http://www.cnpaf.net/article/Files/RoUpimages/0183623853.jpg" border=0></p>
<br><br><br>在 10Base-T网络中，所有设备需要用非屏蔽双绞线连接到一个或多个集线器，集线器应该有多个端口甚至多种类型的端口。有时需要把多个集线器连接起来，这时，你可能想用高速端口来建立网络的主干，各集线器与服务器应直接连到高速主干上。因为多数LAN的主要通信是在工作站和主服务器之间的，主干对网络的整体性能意义重大。<br><br>图3是个较复杂的10Base-T网络示意图，注意主干是怎样连接多个集线器和服务器的。主干应该是高速连接，如快速以太网或FDDI等。<br><br>
<p align=center><img src="http://www.cnpaf.net/article/Files/RoUpimages/0183630217.jpg" border=0></p>
<br><br>令牌环网中也有可以称作集线器的设备，MSAU(Multi-StationAccessUnit)就可以看作一种集线器，因为它的功能与以太网的集线器很类似，但是MSAU把包串行地路由到各个设备，不象以太网集线器是并行的。为了不发生混淆，令牌环网MSAU不作为集线器讨论。<br>　<br><br>二、谁需要集线器？<br><br><br>判断你的局域网是否需要集线器的方法很简单：如果你想建立星形网络且有不少于两台主机，那么就需要集线器。这个规则只有一个例外，那就是只有两台主机的 10Base-T网络，可以直接将之相连，但是需要一条特殊发送端与接收端交叉连接的线缆，这种线缆很普通，如果你实在找不到，也可以自己做一个，很容易也很便宜，所需物品为一小段双绞线、两个RJ-45接头和工具，按照下表连接就是了。<br><br>　<br><br>RJ-45接头1　RJ-45接头2<br>针号功能　针号功能<br>1发送+&lt;--&gt;3接收+<br>2发送-&lt;--&gt;6接收-<br>3接收+&lt;--&gt;1发送+<br>6接收-&lt;--&gt;2发送-<br><br><br>三、集线器的类型<br><br><br>我们知道，集线器在星形拓扑的网络中起着重要作用。集线器有多种，各个种类具有特定的功能、提供不同等级的服务。下面讲讲多数集线器的一些标准特性和被动、主动、智能集线器的区别以及一些高性能集线器的附加特性。<br><br>1、基本规范<br><br><br>所有的集线器根据可连接的线缆类型都有一些基本特性。集线器可以给网络提供除接口之外的附加服务，但也必须遵从IEEE对介质的规定。<br><br>多数集线器主要的连接是RJ-45插座，这是基于双绞线的多种以太网的标准接头类型，从10Base-T到100Base-T，局域网中的工作站、打印机等设备通常是以某种双绞线连接到集线器的，其两端为RJ-45连接头。<br><br>注：RJ-45头看起来有点象电话线的接头，不过稍微宽点。它主要用于以太网，但也可用于令牌环网。<br><br>每种线缆到集线器的长度由使用的介质决定（见下表）。<br><br>　<br><br>以太网类型距离<br>10Base-2185米<br>10Base-5500米<br>10Base-T100米<br>10Base-F2公里<br>10broad-363,600米<br><br>上述是以太网规范的最大长度，其中多数可以用中继器(repeater)来延长。当然还有其他的要求。<br><br>集线器是电子设备，因此需要电源，多数集线器还有指示多种状态的LED指示灯，常见的两种指示灯是电源和端口状态指示灯，有的集线器还有监视端口通信状态和冲突的指示灯。<br><br>2、被动集线器<br><br>顾名思义，被动集线器是相对静止的。它们没有专门的动作来提高网络性能，也不能帮你检测硬件错误或性能瓶颈，它们只是简单地从一个端口接收数据并通过所有端口分发，这是集线器可以做的最简单的事情。被动集线器是星形拓扑以太网的入门级设备。<br><br>被动集线器通常有一个10Base-2端口和一些RJ-45接头。我们知道，10Base-5是使用粗缆的以太网，这个10Base-2接头可以用于连接主干。有些集线器还有可连到收发器的AUI端口以建立主干。<br><br>3、主动集线器<br><br>主动集线器拥有被动集线器的所有性能，此外还能监视数据。它们是在以太网实现存贮转发技术的重要角色，它们在转发之前检查数据，它们并不区分优先次序，而是纠正损坏的分组并调整时序。<br><br>如果信号比较弱但仍然可读，主动集线器在转发前将其恢复到较强的状态。这使得一些性能不是特别理想的设备也可正常使用。如果某设备发出的信号不够强，使得被动集线器无法识别，那么主动集线器的信号放大器可以使该设备继续正常使用。此外，主动集线器还可以报知那些设备失效，从而提供了一定的诊断能力。<br><br>有些线缆可能有电磁干扰使分组不能按正常时序到达集线器，主动集线器可以将转发的分组重新同步。有时数据根本就到不了目的地，主动集线器通过在单个端口重发分组来弥补数据的丢失。主动集线器可以调整时序以适应较慢的、错误率较高的连接。当然，这样做会降低连接到该集线器上设备的整体网络速度，但是，有时这比丢失数据要好。此外时序调整实际上可以减少局域网中的冲突次数，数据不需要重复广播，局域网就可以传输新的数据。<br><br>主动集线器提供一定的优化性能和一些诊断能力，它们比简单的被动集线器贵，可以配以多个、多种端口。<br><br>4、智能集线器<br><br>智能集线器比前两种提供更多的好处，可以使用户更有效地共享资源。其技术近些年才出现，很多地方还没有机会享受到它的好处。除了主动集线器的特性外，智能集线器提供了集中管理功能。如果连接到智能集线器上的设备出了问题，你可以很容易的识别、诊断和修补。这是极大的提高，在一个大型网络里，如果没有集中的管理工具，那么你常常需要一个一个线盒地跑，寻找出问题的设备。<br><br>智能集线器的另一个出色的特性是可以为不同设备提供灵活的传输速率。除了上连到高速主干的端口外，智能集线器还支持到桌面的10、16和100Mbps的速率，即以太网、令牌环和FDDI。<br><br>5、高级特性<br><br>高端集线器还提供其它一些特性，如冗余交流电源、内置直流电源、冗余风扇，还有线缆连接的自动中断、模块的热插拔、自动调整10Base-T接头的极性，再如冗余配置存贮、冗余时钟，有些集线器还集成了路由和桥接功能。
<img src ="http://www.cppblog.com/huangjianfu/aggbug/87326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/huangjianfu/" target="_blank">黄剑父</a> 2009-06-10 15:46 <a href="http://www.cppblog.com/huangjianfu/archive/2009/06/10/87326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>以太网教程：网桥（转）</title><link>http://www.cppblog.com/huangjianfu/archive/2009/06/10/87325.html</link><dc:creator>黄剑父</dc:creator><author>黄剑父</author><pubDate>Wed, 10 Jun 2009 07:44:00 GMT</pubDate><guid>http://www.cppblog.com/huangjianfu/archive/2009/06/10/87325.html</guid><wfw:comment>http://www.cppblog.com/huangjianfu/comments/87325.html</wfw:comment><comments>http://www.cppblog.com/huangjianfu/archive/2009/06/10/87325.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/huangjianfu/comments/commentRss/87325.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/huangjianfu/services/trackbacks/87325.html</trackback:ping><description><![CDATA[资料来源：<a href="http://www.cnpaf.net/Class/Ethernet/200408/403.html">http://www.cnpaf.net/Class/Ethernet/200408/403.html</a>，中国协议分析网<br>一、什么是网桥？<br><br><br>网桥工作在数据链路层，将两个LAN连起来，根据MAC地址来转发帧，可以看作一个&#8220;低层的路由器&#8221;（路由器工作在网络层，根据网络地址如IP地址进行转发）。<br>
<p align=center><img height=485 src="http://www.cnpaf.net/article/Files/RoUpimages/0182210985.jpg" width=259 border=0></p>
<br>　<br><br>远程网桥通过一个通常较慢的链路（如电话线）连接两个远程LAN，对本地网桥而言，性能比较重要，而对远程网桥而言，在长距离上可正常运行是更重要的。<br><br>网桥与路由器的比较<br><br>网桥并不了解其转发帧中高层协议的信息，这使它可以同时以同种凡是处理IP、IPX等协议，它还提供了将无路由协议的网络（如NetBEUI）分段的功能。<br><br>由于路由器处理网络层的数据，因此它们更容易互连不同的数据链路层，如令牌环网段和以太网段。网桥通常比路由器难控制。象IP等协议有复杂的路由协议，使网管易于管理路由；IP等协议还提供了较多的网络如何分段的信息（即使其地址也提供了此类信息）。而网桥则只用MAC地址和物理拓扑进行工作。因此网桥一般适于小型较简单的网络。<br><br>二、使用原因<br><br><br>许多单位都有多个局域网，并且希望能够将它们连接起来。之所以一个单位有多个局域网，有以下6个原因：<br><br>首先，许多大学的系或公司的部门都有各自的局域网，主要用于连接他们自己的个人计算机、工作站以及服务器。由于各系（或部门）的工作性质不同，因此选用了不同的局域网，这些系（或部门）之间早晚需相互交往，因而需要网桥。<br><br>其次，一个单位在地理位置上较分散，并且相距较远，与其安装一个遍布所有地点的同轴电缆网，不如在各个地点建立一个局域网，并用网桥和红外链路连接起来，这样费用可能会低一些。<br><br>第3，可能有必要将一个逻辑上单一的LAN分成多个局域网，以调节载荷。例如采用由网桥连接的多个局域网，每个局域网有一组工作站，并且有自己的文件服务器，因此大部分通信限于单个局域网内，减轻了主干网的负担。<br><br>第 4，在有些情况下，从载荷上看单个局域网是毫无问题的，但是相距最远的机器之间的物理距离太远（比如超过802.3所规定的2.5km）。即使电缆铺设不成问题，但由于来回时延过长，网络仍将不能正常工作。唯一的办法是将局域网分段，在各段之间放置网桥。通过使用网桥，可以增加工作的总物理距离。<br><br>第5，可靠性问题。在一个单独的局域网中，一个有缺陷的节点不断地输出无用的信息流会严重地破坏局域网的运行。网桥可以设置在局域网中的关键部位，就像建筑物内的放火门一样，防止因单个节点失常而破坏整个系统。<br><br>第6，网桥有助于安全保密。大多数LAN接口都有一种混杂工作方式(promiscuousmode)，在这种方式下，计算机接收所有的帧，包括那些并不是编址发送给它的帧。如果网中多处设置网桥并谨慎地拦截无须转发的重要信息，那么就可以把网络分隔以防止信息被窃。<br><br>三、兼容性问题<br><br><br>有人可能会天真地认为从一个802局域网到另一个802局域网的网桥非常简单，但实际上并非如此。在802.x到802.y的九种组合中，每一种都有它自己的特殊问题要解决。在讨论这些特殊问题之前，先来看一看这些网桥共同面临的一般性问题。<br><br>首先，各种局域网采用了不同的帧格式。这种不兼容性并不是由技术上的原因造成的，而仅仅是由于支持三种标准的公司(Xerox,GM和IBM)，没有一家愿意改变自己所支持的标准。其结果是：在不同的局域网间复制帧要重排格式，这需要占用CPU时间，重新计算校验和，而且还有可能产生因网桥存储错误而造成的无法检测的错误。<br><br>第二个问题是互联的局域网并非必须按相同的数据传输速率运行。当快速的局域网向慢速的局域网发送一长串连续帧时，网桥处理帧的速度要比帧进入的速度慢。网桥必须用缓冲区存储来不及处理的帧，同时还得提防耗尽存储器。即使是10Mb/s的802.4到10Mb/s的 802.3的网桥，在某种程度上也存在这样的问题。因为802.3的部分带宽耗费于冲突。802.3实际上并不是真的10Mb/s，而802.4(几乎) 确实为10Mb/s。<br><br>与网桥瓶颈问题相关的一个细微而重要的问题是其上各层的计时器值。假如802.4局域网上的网络层想发送一段很长的报文(帧序列)。在发出最后一帧之后，它开启一个计时器，等待确认。如果此报文必须通过网桥转到慢速的802.5网络，那么在最后一帧被转发到低速局域网之前，计时器就有可能时间到。网络层可能会以为帧丢失而重新发送整个报文。几次传送失败后，网络层就会放弃传输并告诉传输层目的站点已经关机。<br><br>第三，在所有的问题中，可能最为严重的问题是三种802LAN有不同的最大帧长度。对于802.3，最大帧长度取决于配置参数，但对标准的10M/bs系统最大有效载荷为1500字节。802.4的最大帧长度固定为8191字节。802.5没有上限，只要站点的传输时间不超过令牌持有时间。如果令牌时间缺省为10ms，则最大帧长度为5000字节。一个显而易见的问题出现了：当必须把一个长帧转发给不能接收长帧的局域网时，将会怎么样？在本层中不考虑把帧分成小段。所有的协议都假定帧要么到达要么没有到达，没有条款规定把更小的单位重组成帧。这并不是说不能设计这样的协议，可以设计并已有这种协议，只是 802不提供这种功能。这个问题基本上无法解决，必须丢弃因太长而无法转发的帧。其透明程度也就这样了。<br><br>由于各种802LAN的特殊性，如：802.4帧带有优先权位、802.5帧字节中有A和C位等，九种网桥都有其特殊的问题，见下表：<br><br>　　目的LAN<br>　　802.3(CSMA/CD)802.4(令牌总线)802.5(令牌环)<br>源LAN802.3　1,41,2,4,8<br>802.41,5,8,9,1091,2,3,8,9,10<br>802.51,2,5,6,7,101,2,3,6,76,7<br><br>1、重新格式化帧，并计算新的校验和。<br>2、反转比特顺序。<br>3、复制优先权值，不管有无意义。<br>4、产生一个假想的优先权。<br>5、丢弃优先权。<br>6、流向环（某种程度上）。<br>7、设置A位和C位。<br>8、担心拥塞（快速LAN至慢速LAN）。<br>9、担心令牌因为交换ACK延迟或不可能而脱手。<br>10、如果帧对目的LAN太长，则将其丢弃。<br><br>设定的参数：<br>802.3：1500字节帧10Mb/s(减去碰撞次数)<br>802.4：8191字节帧10Mb/s<br>802.5：5000字节帧4Mb/s<br><br>当 IEEE802委员会开始制订LAN标准时，未能商定一个统一的标准，却产生了3个互不兼容的标准，这一失策已受到了严厉的抨击。后来，在制定互联这3种 LAN的网桥的标准时，该委员会决心干得好一些。这一次确实较为成功，他们提出了2种互不兼容的网桥方案。直到目前为止，还无人要求该委员会制订连接它的 2个不兼容网桥的网关标准。<br><br>四、两种网桥<br><br>1、透明网桥<br><br><br>第一种802网桥是透明网桥 (transparentbridge)或生成树网桥(spanningtreebridge)。支持这种设计的人首要关心的是完全透明。按照他们的观点，装有多个LAN的单位在买回IEEE标准网桥之后，只需把连接插头插入网桥，就万事大吉。不需要改动硬件和软件，无需设置地址开关，无需装入路由表或参数。总之什么也不干，只须插入电缆就完事，现有LAN的运行完全不受网桥的任何影响。这真是不可思议，他们最终成功了。<br><br>透明网桥以混杂方式工作，它接收与之连接的所有LAN传送的每一帧。当一帧到达时，网桥必须决定将其丢弃还是转发。如果要转发，则必须决定发往哪个LAN。这需要通过查询网桥中一张大型散列表里的目的地址而作出决定。该表可列出每个可能的目的地，以及它属于哪一条输出线路(LAN)。在插入网桥之初，所有的散列表均为空。由于网桥不知道任何目的地的位置，因而采用扩散算法(floodingalgorithm)：把每个到来的、目的地不明的帧输出到连在此网桥的所有 LAN中（除了发送该帧的LAN）。随着时间的推移，网桥将了解每个目的地的位置。一旦知道了目的地位置，发往该处的帧就只放到适当的LAN上，而不再散发。<br><br>透明网桥采用的算法是逆向学习法(backwardlearning)。网桥按混杂的方式工作，故它能看见所连接的任一LAN上传送的帧。查看源地址即可知道在哪个LAN上可访问哪台机器，于是在散列表中添上一项。<br><br>当计算机和网桥加电、断电或迁移时，网络的拓扑结构会随之改变。为了处理动态拓扑问题，每当增加散列表项时，均在该项中注明帧的到达时间。每当目的地已在表中的帧到达时，将以当前时间更新该项。这样，从表中每项的时间即可知道该机器最后帧到来的时间。网桥中有一个进程定期地扫描散列表，清除时间早于当前时间若干分钟的全部表项。于是，如果从LAN上取下一台计算机，并在别处重新连到LAN上的话，那么在几分钟内，它即可重新开始正常工作而无须人工干预。这个算法同时也意味着，如果机器在几分钟内无动作，那么发给它的帧将不得不散发，一直到它自己发送出一帧为止。<br><br>到达帧的路由选择过程取决于发送的LAN(源LAN)和目的地所在的LAN(目的LAN)，如下所示：<br><br>1、如果源LAN和目的LAN相同，则丢弃该帧。<br>2、如果源LAN和目的LAN不同，则转发该帧。<br>3、如果目的LAN未知，则进行扩散。<br><br>为了提高可靠性，有人在LAN之间设置了并行的两个或多个网桥，但是，这种配置引起了另外一些问题，因为在拓扑结构中产生了回路，可能引发无限循环。其解决方法就是下面要讲的生成树(spanningtree)算法。<br><br>生成树网桥<br><br>解决上面所说的无限循环问题的方法是让网桥相互通信，并用一棵到达每个LAN的生成树覆盖实际的拓扑结构。使用生成树，可以确保任两个LAN之间只有唯一一条路径。一旦网桥商定好生成树，LAN间的所有传送都遵从此生成树。由于从每个源到每个目的地只有唯一的路径，故不可能再有循环。<br><br>为了建造生成树，首先必须选出一个网桥作为生成树的根。实现的方法是每个网桥广播其序列号（该序列号由厂家设置并保证全球唯一），选序列号最小的网桥作为根。接着，按根到每个网桥的最短路径来构造生成树。如果某个网桥或LAN故障，则重新计算。<br><br>网桥通过BPDU(BridgeProtocolDataUnit)互相通信，在网桥做出配置自己的决定前，每个网桥和每个端口需要下列配置数据：<br><br>网桥：ID(唯一的标识)<br>端口：端口ID(唯一的标识)<br>端口相对优先权<br>各端口的花费(高带宽=低花费)<br><br><br>配置好各个网桥后，网桥将根据配置参数自动确定生成树，这一过程有三个阶段：<br><br>1、选择根网桥<br>具有最小网桥ID的网桥被选作根网桥。网桥ID应为唯一的，但若两个网桥具有相同的最小ID，则MAC地址小的网桥被选作根。<br><br>2、在其它所有网桥上选择根端口<br>除根网桥外的各个网桥需要选一个根端口，这应该是最适合与根网桥通信的端口。通过计算各个端口到根网桥的花费，取最小者作为根端口。<br><br>3、选择每个LAN的&#8220;指定(designated)网桥&#8221;和&#8220;指定端口&#8221;<br>如果只有一个网桥连到某LAN，它必然是该LAN的指定网桥，如果多于一个，则到根网桥花费最小的被选为该LAN的指定网桥。指定端口连接指定网桥和相应的LAN(如果这样的端口多于一个，则低优先权的被选)。<br><br>一个端口必须为下列之一：<br><br>1、根端口<br>2、某LAN的指定端口<br>3、阻塞端口<br><br>当一个网桥加电后，它假定自己是根网桥，发送出一个CBPDU(ConfigurationBridgeProtocolDataUnit)，告知它认为的根网桥ID。一个网桥收到一个根网桥ID小于其所知ID的CBPDU，它将更新自己的表，如果该帧从根端口(上传)到达，则向所有指定端口(下传)分发。当一个网桥收到一个根网桥ID大于其所知ID的CBPDU，该信息被丢弃，如果该帧从指定端口到达，则回送一个帧告知真实根网桥的较低ID。<br><br>当有意地或由于线路故障引起网络重新配置，上述过程将重复，产生一个新的生成树。<br><br>2、源路由选择网桥<br><br><br>透明网桥的优点是易于安装，只需插进电缆即大功告成。但是从另一方面来说，这种网桥并没有最佳地利用带宽，因为它们仅仅用到了拓扑结构的一个子集(生成树)。这两个（或其他）因素的相对重要性导致了802委员会内部的分裂。支持CSMA/CD和令牌总线的人选择了透明网桥，而令牌环的支持者则偏爱一种称为源路由选择(sourcerouting)的网桥（受到IBM的鼓励）。<br><br>源路由选择的核心思想是假定每个帧的发送者都知道接收者是否在同一LAN上。当发送一帧到另外的LAN时，源机器将目的地址的高位设置成1作为标记。另外，它还在帧头加进此帧应走的实际路径。<br><br>源路由选择网桥只关心那些目的地址高位为1的帧，当见到这样的帧时，它扫描帧头中的路由，寻找发来此帧的那个LAN的编号。如果发来此帧的那个LAN编号后跟的是本网桥的编号，则将此帧转发到路由表中自己后面的那个LAN。如果该LAN编号后跟的不是本网桥，则不转发此帧。这一算法有3种可能的具体实现：软件、硬件、混合。这三种具体实现的价格和性能各不相同。第一种没有接口硬件开销，但需要速度很快的CPU处理所有到来的帧。最后一种实现需要特殊的 VLSI芯片，该芯片分担了网桥的许多工作，因此，网桥可以采用速度较慢的CPU，或者可以连接更多的LAN。<br><br>源路由选择的前提是互联网中的每台机器都知道所有其他机器的最佳路径。如何得到这些路由是源路由选择算法的重要部分。获取路由算法的基本思想是：如果不知道目的地地址的位置，源机器就发布一广播帧，询问它在哪里。每个网桥都转发该查找帧(discoveryframe)，这样该帧就可到达互联网中的每一个LAN。当答复回来时，途经的网桥将它们自己的标识记录在答复帧中，于是，广播帧的发送者就可以得到确切的路由，并可从中选取最佳路由。<br><br>虽然此算法可以找到最佳路由（它找到了所有的路由），但同时也面临着帧爆炸的问题。透明网桥也会发生有点类似的状况，但是没有这么严重。其扩散是按生成树进行，所以传送的总帧数是网络大小的线性函数，而不象源路由选择是指数函数。一旦主机找到至某目的地的一条路由，它就将其存入到高速缓冲器之中，无需再作查找。虽然这种方法大大遏制了帧爆炸，但它给所有的主机增加了事务性负担，而且整个算法肯定是不透明的。<br><br>3、两种网桥的比较<br>
<p align=center><img height=297 src="http://www.cnpaf.net/article/Files/RoUpimages/0182218296.jpg" width=560 border=0></p>
<br><br><br><br>透明网桥一般用于连接以太网段，而源路由选择网桥则一般用于连接令牌环网段。<br><br>五、远程网桥<br><br><br>网桥有时也被用来连接两个或多个相距较远的LAN。比如，某个公司分布在多个城市中，该公司在每个城市中均有一个本地的LAN，最理想的情况就是所有的LAN均连接起来，整个系统就像一个大型的LAN一样。<br><br>该目标可通过下述方法实现：每个LAN中均设置一个网桥，并且用点到点的连接（比如租用电话公司的电话线）将它们两个两个地连接起来。点到点连线可采用各种不同的协议。办法之一就是选用某种标准的点到点数据链路协议，将完整的MAC帧加到有效载荷中。如果所有的LAN均相同，这种办法的效果最好，它的唯一问题就是必须将帧送到正确的LAN中。另一种办法是在源网桥中去掉MAC的头部和尾部，并把剩下的部分加到点到点协议的有效载荷中，然后在目的网桥中产生新的头部和尾部。它的缺点是到达目的主机的校验和并非是源主机所计算的校验和，因此网桥存储器中某位损坏所产生的错误可能不会被检测到。
<img src ="http://www.cppblog.com/huangjianfu/aggbug/87325.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/huangjianfu/" target="_blank">黄剑父</a> 2009-06-10 15:44 <a href="http://www.cppblog.com/huangjianfu/archive/2009/06/10/87325.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>浅谈Ethernet的帧格式（转）</title><link>http://www.cppblog.com/huangjianfu/archive/2009/06/10/87321.html</link><dc:creator>黄剑父</dc:creator><author>黄剑父</author><pubDate>Wed, 10 Jun 2009 07:35:00 GMT</pubDate><guid>http://www.cppblog.com/huangjianfu/archive/2009/06/10/87321.html</guid><wfw:comment>http://www.cppblog.com/huangjianfu/comments/87321.html</wfw:comment><comments>http://www.cppblog.com/huangjianfu/archive/2009/06/10/87321.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/huangjianfu/comments/commentRss/87321.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/huangjianfu/services/trackbacks/87321.html</trackback:ping><description><![CDATA[资料来源：<a href="http://www.cnpaf.net/Class/Ethernet/200512/10646.html">http://www.cnpaf.net/Class/Ethernet/200512/10646.html</a>，中国协议分析网<br><br>
<p>用过NetXray之类的抓包软件的人，可能经常会被一些&nbsp;&nbsp;不同的Frame Header搞糊涂，为何用的Frame的Header <br>&nbsp;是这样的，而另外的又不一样。这是因为在Ethernet&nbsp;&nbsp;中存在几种不同的帧格式，下面我就简单介绍一下几种 <br>&nbsp;不同的帧格式及他们的差异。 </p>
<p><strong>&nbsp;一。Ethernet帧格式的发展</strong> </p>
<p>&nbsp;1980 DEC,Intel,Xerox制订了Ethernet I的标准 <br>&nbsp;1982 DEC,Intel,Xerox又制订了Ehternet II的标准 <br>&nbsp;1982 IEEE开始研究Ethernet的国际标准802.3 <br>&nbsp;1983 迫不及待的Novell基于IEEE的802.3的原始版开发了专用的Ethernet帧格式 <br>&nbsp;1985 IEEE推出IEEE 802.3规范 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 后来为解决EthernetII与802.3帧格式的兼容问题推出折衷的Ethernet SNAP格式 </p>
<p>&nbsp;(其中早期的Ethernet I已经完全被其他帧格式取代了所以现在Ethernet只能见到后面几种Ethernet的帧格式现在大部分的网络设备都支持这几种Ethernet的帧格式如:cisco的路由器再设定Ethernet接口时可以指定不同的以太网的帧格式:arpa,sap,snap,novell-ether) </p>
<p><strong>&nbsp;二.各种不同的帧格式</strong> <br>&nbsp;下面介绍一下各个帧格式&nbsp;&nbsp;</p>
<ul>
    <li>&nbsp;<strong>Ethernet II</strong> <br>&nbsp;&nbsp; 就是DIX以太网联盟推出的，它由6个字节的目的MAC地址，6个字节的源MAC地址，2个字节的类型域（用于标示封装在这个Frame、里面数据的类型)以上为Frame Header,接下来是46--1500&nbsp;字节的数据，和4字节的帧校验）
    <li><strong>Novell Ethernet</strong> <br>&nbsp;&nbsp; 它的帧头与Ethernet有所不同其中EthernetII帧头中的类型域变成了长度域，后面接着的两个字节为0xFFFF <br>&nbsp;&nbsp; 用于标示这个帧是Novell Ether类型的Frame&nbsp;由于前面的0xFFFF站掉了两个字节所以数据域缩小为44-1498个字节,帧校验不变。
    <li><strong>IEEE 802.3/802.2 <br></strong>&nbsp;&nbsp; 802.3的Frame Header和Ethernet II的帧头有所不同EthernetII类型域变成了长度域。其中又引入802.2协议(LLC)在802.3帧头后面添加了一个LLC首部,由 DSAP(Destination Service Access Point) <br>&nbsp;&nbsp; 1 byte,SSAP(Source SAP),一个控制域--1 byte! <br>&nbsp;&nbsp; SAP用于标示帧的上层协议
    <li><strong>Ethernet SNAP</strong> <br>&nbsp;&nbsp; SNAP Frame与802.3/802.2 Frame的最大区别是增加了一个5 Bytes的SNAP ID其中前面3个byte通常与源mac地址的前三个bytes相同为厂商代码！有时也可设为0,后2 bytes&nbsp;与Ethernet II的类型域相同。。。 </li>
</ul>
<p>&nbsp;<br>&nbsp;<strong>三.如何区分不同的帧格式</strong> <br>&nbsp;&nbsp; <br>&nbsp;&nbsp; Ethernet中存在这四种Frame那些网络设备又是如何识别的呢?&nbsp;如何区分EthernetII与其他三种格式的Frame&nbsp;如果帧头跟随source mac地址的2 bytes的值大于1500&nbsp;则此Frame为EthernetII格式的。 <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; 接着比较紧接着的两bytes如果为0xFFFF则为Novell Ether&nbsp;类型的Frame <br>&nbsp;&nbsp; 如果为0xAAAA则为Ethernet SNAP格式的Frame&nbsp;，如果都不是则为Ethernet 802.3/802.2格式的帧</p>
<img src ="http://www.cppblog.com/huangjianfu/aggbug/87321.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/huangjianfu/" target="_blank">黄剑父</a> 2009-06-10 15:35 <a href="http://www.cppblog.com/huangjianfu/archive/2009/06/10/87321.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>