在本章中,我们研究在同一个局域网中,分组怎样从一个主机传送到另一个主机(不经过路由器的时候)。这是数据数据链路层(简称链路层)的范围。
最重要内容:
可以看成四段不同的链路层通信组成,这四段可能采取不同的数据链路层协议。
3.1 使用点对点通信的数据链路层
链路(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
数据链路(data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。
3.1.2 三个基本问题
1.封装成帧
首部和尾部的一个重要作用就是进行帧定界(接收端在收到物理层上交的比特流后,可以据此识别开始和结束)。 其中也包含了一些控制信息。
当数据是由可打印的AScII码组成的文本文件,可以使用特殊的帧界定符,SOH(16进制编码01)开始,EOT(十六进制编码04)结束。
2.透明传输
为了保证传输正常,所传输的数据中任何8bit的组合一定不允许和界定符的比特编码一样。
若使用SOH和EOT做界定符时,如果是传输文本文件,则不会出现相同的情况,因此这样的传输称为透明传输。
解决办法:
发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是 1B)。
字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
3.差错检测
在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。
在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC 的检错技术。
【模2运算:与四则运算不同的是模2运算不考虑进位和借位,即模2加法是不带进位的二进制加法运算,模2减法是不带借位的二进制减法运算。】
冗余码的计算举例:
假定每组k个比特,现在 k = 6, M = 101001(待传送数据)。
设 n = 3, 除数 P = 1101,
被除数是 2nM = 101001000。
模 2 运算的结果是:商 Q = 110101,余数 R = 001。
把余数 R 作为冗余码添加在数据 M 的后面发送出去。发送的数据是:2nM + R
即:101001001,共 (k + n) 位。
接收端对收到的每一帧进行 CRC 检验 (接上例,即用101001001除以1101)
若得出的余数 R = 0,则判定这个帧没有差错,就接受(accept)。
若余数 R ≠ 0,则判定这个帧有差错,就丢弃。
在数据链路层使用CRC检验,能实现无比特差错的传输,但这还不是可靠传输。要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。
对于通信质量良好的有线传输链路,数据链路层不需要提供确认和重传机制。
在无线网络中,数据链路层使用确认和重传机制,向上层提供可靠传输的服务。
3.2 点对点协议PPP
用户使用拨号电话线接入因特网时,一般都是使用 PPP 协议。 是计算机和ISP通信时使用的数据链路层协议。
十大功能要求:简单——这是首要的要求;封装成帧 ;透明性 ;多种网络层协议 ;多种类型链路 ;差错检测 ;检测连接状态 ;最大传送单元 ;网络层地址协商 ;数据压缩协商
PPP 协议不需要的功能:纠错 流量控制 序号 (TCP协议)多点线路 (只支持点对点)半双工或单工链路(只支持全双工)
在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。
在因特网环境下,PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。
帧检验序列 FCS 字段可保证无差错接受。
PPP 协议有三个组成部分
一个将 IP 数据报封装到串行链路的方法
链路控制协议 LCP (Link Control Protocol)
网络控制协议 NCP (Network Control Protocol):支持不同的网络层协议
3.2.2 PPP协议的帧格式(同之前提到的不同,但是原理相近)
标志字段 F = 0x7E 地址字段 A 只置为 0xFF。地址字段实际上并不起作用。控制字段 C 通常置为 0x03。
PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节。
最后的帧检验序列FCS有2字节。
字节填充(为实现透明传输):
这里是异步传输(按字符传输)
将信息字段中出现的每一个 0x7E 字节转变成为 2 字节序列(0x7D, 0x5E)。
若信息字段中出现一个 0x7D 的字节, 则将其转变成为 2 字节序列(0x7D, 0x5D)。
若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变。
零比特填充(另一种方法):
用在 SONET/SDH 链路时。(因为这里是同步传输,一连串的比特连续发送,所以不能用上面的填充方法!)
只要发现有 5 个连续 1(因为0x7E的二进制是01111110),则立即填入一个 0。接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除。
3.2.3 PPP协议的工作状态
3.3 使用广播信道的数据链路层
3.3.1 局域网的数据链路层
局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限。
局域网具有如下的一些主要优点:
具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
提高了系统的可靠性、可用性和残存性。
共享信道要着重考虑的一个问题就是如何使众多用户能够合理而方便地共享通信媒体资源。
(1)静态划分信道:频分复用 时分复用 波分复用 码分复用(第二章)
但这几种方法代价较高,不适合在局域网使用。
(2)动态媒体接入控制(多点接入)
随机接入(所有用户随机发送数据,但要有解决碰撞的机制)
受控接入 ,如多点线路探询(polling),或轮询。
下面重点讨论属于随机接入的以太网。
为了使数据链路层能更好地适应多种局域网标准,802 委员会就将局域网的数据链路层拆成两个子层:
逻辑链路控制 LLC (Logical Link Control)子层
媒体接入控制 MAC (Medium Access Control)子层。
很多厂商生产的适配器上就仅装有 MAC 协议而没有 LLC 协议。
适配器的重要功能:
进行串行/并行转换。
对数据进行缓存。(因为网络上的数据率和计算机总线上的数据率不同)
在计算机的操作系统安装设备驱动程序。(通过驱动程序告诉适配器该存储或发送哪些东西)
实现以太网协议。
3.3.2 CSMA/CD 协议 (Carrier Sense Multiple Access with Collision Detection)
广播通信的特点:总线上的每一个工作的计算机都能检测到 B 发送的数据信号。
实现一对一通信:使得每个适配器拥有一个和别人不同的地址,并在帧的首部写明接收站的地址。由于只有计算机 D 的地址与数据帧首部写入的地址一致,因此只有 D 才接收这个数据帧。 其他所有的计算机(A, C 和 E)都检测到不是发送给它们的数据帧,因此就丢弃这个数据帧而不能够收下来。
为了通信方便,以太网采取两大措施:
一、采用较为灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据。
以太网对发送的数据帧不进行编号,也不要求对方发回确认。(这样做的理由是局域网信道的质量很好,因信道质量产生差错的概率是很小的。)
以太网提供的服务是不可靠的交付,即尽最大努力的交付。
当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。
如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。
二、以太网发送的数据都使用曼彻斯特(Manchester)编码
CSMA/CD 协议的要点:
“多点接入”表示许多计算机以多点接入的方式连接在一根总线上。
“载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
“碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。【每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。】
(因为有时延,所以即使有在监听,还是可能发生碰撞,电磁波1km为5us)
所以将以太网的端到端往返时延 2τ称为争用期,或碰撞窗口。
碰撞后确定重传时机——采用二进制指数类型退避算法
发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据。
基本退避时间取为争用期 2τ。
从整数集合[0,1,…, (2^k-1)]中随机地取出一个数,记为 r。重传所需的时延就是 r 倍的基本退避时间。
参数 k 按下面的公式计算:
k = Min[重传次数, 10]
当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告。
以太网取 51.2 μs 为争用期的长度。对于 10 Mb/s 以太网,在争用期内可发送512 bit,即 64 字节。
以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突。
以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。 不会因为帧过短导致冲突虽然发生了但发送过程中没有检测到的情况。
根据争用期时间可以推断出以太网的最大端到端长度约为5km(来回的长度时间为51.2μs,速度为1km/5μs)
强化碰撞
当发送数据的站一旦发现发生了碰撞时:
以太网还规定了帧间最小间隔为9.6μs,相当于96bit时间(10Mb/s的以太网),这么做是为了刚接收数据帧的站可以清理接受缓存,做好接受下一帧的准备。
CSMA/CD协议的要点归纳:
①准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中,但在发送之前,必须先检测信道;
②检测信道:若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在96比特时间内信道保持空闲,就发送这个帧;
③在发送过程中仍不停地检测信道,即网络适配器要边发送边监听,这里只有两种可能性:
一是发送成功:在争用期内一直没有检测到碰撞,这个帧肯定能够发送成功;
二是发送失败:在争用期内检测到碰撞,这是立即停止发送数据,并按照规定发送人为干扰信号;适配器接着就执行指数退避算法,等待r倍512比特时间后,返回步骤2,继续检测信道;但若重传16次还不能成功,则停止重传而向上报错;
④以太网每发送完一帧,一定要把已发送的帧暂时保留一下。为后面可能发生的重传做准备。
3.4 使用广播信道的以太网
3.4.1 使用集线器的星形拓扑
使用集线器的以太网在逻辑上仍是一个总线网,各工作站使用的还是 CSMA/CD 协议,并共享逻辑上的总线。
集线器很像一个多接口的转发器,工作在物理层。
3.4.2 以太网的信道利用率
一个帧从开始发送,经可能发生的碰撞后,将再重传数次,到发送成功且信道转为空闲(即再经过时间 τ 使得信道上无信号在传播)时为止,是发送一帧所需的平均时间。
当数据率一定时,以太网的连线的长度受到限制,否则 τ 的数值会太大。
以太网的帧长不能太短,否则 T0 的值会太小,使 a 值(a=τ/T0)太大。
3.4.3 以太网的MAC层
1.MAC层的硬件地址
是一种标识系统(并不能告诉我们它位于哪里,更像是一种名字)。
IEEE 的注册管理机构 RA 负责向厂家分配地址字段的前三个字节(即高位 24 位)。地址字段中的后三个字节(即低位 24 位)由厂家自行指派,称为扩展标识符,必须保证生产出的适配器没有重复地址。
适配器检查 MAC 地址 :
适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址。确认是发往本站的帧就收下,不是就丢弃。
混杂方式:
工作在混杂方式的适配器,会把发往任何站点的帧都悄悄地接收下来。黑客常利用这种方式获取别人的口令。嗅探器也是类似的工作原理。
2.MAC的帧格式
在帧的前面插入的 8 字节中的第一个字段共 7 个字节,
是前同步码,用来迅速实现 MAC 帧的比特同步。
第二个字段是帧开始定界符,表示后面的信息就是MAC 帧。
最小长度 64 字节 - 18 字节的首部和尾部 = 数据字段的最小长度(46字节)
因为帧传输采用曼彻斯特编码,不管是0或1,码元正中间都会有一个电压变换,当传输完毕时,则信号持续为低。接收端根据这个特点得出以太网帧的结束位置,再往前数4字节(FCS),则是IP数据报中数据的结束位置。
由于以太网规定各帧之间必须要有一定的空隙,因此以太网不需要使用帧结束界定符,也因此不需要插入字节来保证透明传输。
无效的 MAC 帧 :
1. 数据字段的长度与长度字段的值不一致;
2. 帧的长度不是整数个字节;
3. 用收到的帧检验序列 FCS 查出有差错;
4. 数据字段的长度不在 46 ~ 1500 字节之间。
5. 有效的 MAC 帧长度为 64 ~ 1518 字节之间。
6. 对于检查出的无效 MAC 帧就简单地丢弃。以太网不负责重传丢弃的帧。
缺点
3.5.2 在数据链路层扩展以太网
1.网桥的内部结构
网桥从帧都提取出帧的目的地址,并用该地址查询一张应该把帧发往哪里去的表。
缺点:
网桥和集线器(或转发器)不同 :
2.透明网桥
“透明”是指局域网上的站点并不知道所发送的帧将经过哪几个网桥,因为网桥对各站来说是看不见的。
透明网桥是一种即插即用设备,目前使用最多。
步骤归纳:
网桥收到一帧后先进行自学习。查找转发表中与收到帧的源地址有无相匹配的项目。如没有,就在转发表中增加一个项目(源地址、进入的接口和时间)。如有,则把原有的项目进行更新。
转发帧。查找转发表中与收到帧的目的地址有无相匹配的项目。
A发送到B的过程中,B和网桥1都会接收到帧,虽然数据传输目的已经完成,但是为了自学习(当转发表不存在时),网桥1还是会继续转发数据
(http://blog.csdn.net/kaoa000/article/details/8991716 生成树算法)
3.源路由网桥
由源站负责路由选择。
步骤:
源路由(source route)网桥在发送帧时将详细的路由信息放在帧的首部中。
源站以广播方式向欲通信的目的站发送一个发现帧,每个发现帧都记录所经过的路由。
发现帧到达目的站时就沿各自的路由返回源站。源站在得知这些路由后,从所有可能的路由中选择出一个最佳路由。凡从该源站向该目的站发送的帧的首部,都必须携带源站所确定的这一路由信息。
4.多接口网桥——以太网交换机
(1)以太网交换机的每个接口都直接与主机(或集线器)相连,并且一般都工作在全双工方式。
(2)交换机能同时连通许多对的接口,使每一对相互通信的主机都能像独占通信媒体那样,进行无碰撞地传输数据。(在每个接口到主机的带宽还是 10 Mb/s,N 对接口的交换机的总容量为 N10 Mb/s)
(3)以太网交换机由于使用了专用的交换结构芯片,其交换速率就较高。
每一个VLAN可处在不同的局域网中。
当 B1 向 VLAN2 工作组内成员发送数据时,工作站 B2 和 B3 将会收到广播的信息。B1 发送数据时,工作站 A1, A2 和 C1都不会收到 B1 发出的广播信息。
虚拟局域网限制了接收广播信息的工作站数,使得网络不会因传播过多的广播信息(即“广播风暴”)而引起性能恶化。
3.6 高速以太网
速率达到或超过 100 Mb/s 的以太网称为高速以太网。
3.6.1 100BASE-T 以太网的特点
可在全双工方式下工作而无冲突发生。因此,不使用 CSMA/CD 协议。
MAC 帧格式仍然是 802.3 标准规定的(所以仍然是以太网的概念)。
保持最短帧长不变,但将一个网段的最大电缆长度减小到 100 m。
帧间时间间隔从原来的 9.6 μs 改为现在的 0.96 μs。(因为速度从10到100)
3.6.2 吉比特以太网
允许在 1 Gb/s 下全双工和半双工两种方式工作。
使用 802.3 协议规定的帧格式。
在半双工方式下使用 CSMA/CD 协议(全双工方式不需要使用 CSMA/CD 协议)。
与 10BASE-T 和 100BASE-T 技术向后兼容。
半双工下:
载波延伸:网段的最大长度仍为100m,争用期变512字节,最短帧长仍为64字节(保持兼容性),所以需要补足。
分组突发:多个短帧要发送时,第一个需要做载波延伸,其他的只要间隔发送就好。
3.6.3 10吉比特以太网和100 吉比特以太网
10 吉比特以太网只工作在全双工方式,因此没有争用问题,也不使用 CSMA/CD 协议。
以太网从 10 Mb/s 到 100 Gb/s 的演进证明了以太网是:
可扩展的(从 10 Mb/s 到 100 Gb/s)。
灵活的(多种传输媒体、全/半双工、共享/交换)。
易于安装。
稳健性好。
从用户家中的PC到户外的第一个以太网交换机的带宽是能保证的,这是该用户独占的。接下来以太网到上一级的交换机的带宽,是许多用户共享的。
总结补充:
单工、半工、全双工:
单工:简单的说就是一方只能发信息,另一方则只能收信息,通信是单向的。
半双工:比单工先进一点,就是双方都能发信息,但同一时间则只能一方发信息。
全双工:比半双工再先进一点,就是双方不仅都能发信息,而且能够同时发送。
交换机、集线器、路由器区别和使用
最近看到很多人在询问交换机、集线器、路由器是什么,功能如何,有何区别,笔者就这些问题简单的做些解答。
先解释下网桥和交换机之间的差别,网桥一般分有两个端口,而交换机具有高密度的端口。 两者的作用基本相同。
首先说HUB,也就是集线器。它的作用可以简单的理解为将一些机器连接起来组成一个局域网。而交换机(又名交换式集线器)作用与集线器大体相同。但是两者在性能上有区别:集线器采用的式共享带宽的工作方式,而交换机是独享带宽。集线器工作在物理层(七层模型中)
这样在机器很多或数据量很大时,两者将会有比较明显的。而路由器与以上两者有明显区别,它的作用在于连接不同的网段并且找到网络中数据传输最合适的路径 ,可以说一般情况下个人用户需求不大。路由器是产生于交换机之后,就像交换机产生于集线器之后,所以路由器与交换机也有一定联系,并不是完全独立的两种设备。路由器主要克服了交换机不能路由转发数据包的不足。
总的来说,路由器与交换机的主要区别体现在以下几个方面:
(1)工作层次不同
最初的的交换机是工作在OSI/RM开放体系结构的数据链路层,也就是第二层,而路由器一开始就设计工作在OSI模型的网络层。由于交换机工作在OSI的第二层(数据链路层),所以它的工作原理比较简单,而路由器工作在OSI的第三层(网络层),可以得到更多的协议信息,路由器可以做出更加智能的转发决策。
(2)数据转发所依据的对象不同
交换机是利用物理地址或者说MAC地址来确定转发数据的目的地址。而路由器则是利用不同网络的ID号(即IP地址)来确定数据转发的地址。IP地址是在软件中实现的,描述的是设备所在的网络,有时这些第三层的地址也称为协议地址或者网络地址。MAC地址通常是硬件自带的,由网卡生产商来分配的,而且已经固化到了网卡中去,一般来说是不可更改的。而IP地址则通常由网络管理员或系统自动分配。
(3)传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域
由交换机连接的网段仍属于同一个广播域,广播数据包会在交换机连接的所有网段上传播,在某些情况下会导致通信拥挤和安全漏洞。连接到路由器上的网段会被分配成不同的广播域,广播数据不会穿过路由器。虽然第三层以上交换机具有VLAN功能,也可以分割广播域,但是各子广播域之间是不能通信交流的,它们之间的交流仍然需要路由器。
(4)路由器提供了防火墙的服务
路由器仅仅转发特定地址的数据包,不传送不支持路由协议的数据包传送和未知目标网络数据包的传送,从而可以防止广播风暴。
交换机一般用于LAN-WAN的连接,交换机归于网桥,是数据链路层的设备,有些交换机也可实现第三层的交换。 路由器用于WAN-WAN之间的连接,可以解决异性网络之间转发分组,作用于网络层。他们只是从一条线路上接受输入分组,然后向另一条线路转发。这两条线路可能分属于不同的网络,并采用不同协议。
相比较而言,路由器的功能较交换机要强大,但速度相对也慢,价格昂贵,第三层交换机既有交换机线速转发报文能力,又有路由器良好的控制功能,因此得以广泛应用。
目前个人比较多宽带接入方式就是ADSL,因此笔者就ADSL的接入来简单的说明一下。现在购买的ADSL猫大多具有路由功能(很多的时候厂家在出厂时将路由功能屏蔽了,因为电信安装时大多是不启用路由功能的,启用DHCP,打开ADSL的路由功能),如果个人上网或少数几台通过ADSL本身就可以了,如果电脑比较多你只需要再购买一个或多个集线器或者交换机。
考虑到如今集线器与交换机的 价格相差十分小,不是特殊的原因,请购买一个交换机。不必去追求高价,因为如今产品同质化十分严重,我最便宜的交换机现在没有任何问题。
给你一个参考,建议你购买一个8口的,以满足扩充需求,一般的价格100元左右。接上交换机,所有电脑再接到交换机上就行了。余下所要做的事情就只有把各个机器的网线插入交换机的接口,将猫的网线插入uplink接口。然后设置路由功能,DHCP等, 就可以共享上网了。
看完以上的解说读者应该对交换机、集线器、路由器有了一些了解,目前的使用主要还是以交换机、路由器的组合使用为主,具体的组合方式可根据具体的网络情况和需求来确定。