基于计算机网络(第7版)谢希仁编著。
第三章 数据链路层
-
数据链路层的三个基本问题:封装成帧、透明传输、差错检测
-
封装成帧:在一段数据的前后分别添加首部和尾部
-
透明传输:
字节填充(字符填充):发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”。
如果转义字符也出现在数据当中,在转义字符前插入一个转义字符。
零比特填充:只要发现五个连续的1,则立即填入一个0 -
差错检测:循环冗余检验CRC
-1.在发送端把数据划分为组,每组k比特。在数据M后添加供差错检测的n位冗余码,构成一个帧(k+n)位发送出去。
-2.用二进制的模2运算(异或,相同为0,不同为1。加法时不进位)。事先商定好长度为(n+1)位的除数P,在M后添加n个0后除以P得到余数R(n位)。余数R作为冗余码接在M后发送出去。
这种冗余码常称为帧检验序列FCS
-3.接收端把收到的帧除以同样的除数P,得到余数R。
若余数R=0,判定此帧没有差错,接受。
若余数R≠0,判定此帧有差错(无法确定哪一位或哪几位出差错),丢弃。
仅采用CRC校验不能使数据链路层变成可靠传输。
因为CRC校验只能做到对帧的无错接受,但不能保证帧没有丢失、重复或失序。
- 局域网按拓扑分类:星形网、环形网、总线网。
- 适配器的作用:
①进行数据串行传输和并行传输的转换
②对数据进行缓存
③在计算机操作系统安装设备驱动程序
④实现以太网协议
CSMA/CD协议
- 以太网提供的服务是尽最大努力的交付,即不可靠的交付
- CSMA/CD的意思是载波监听多点接入/碰撞检测
- 单程端到端时延记为τ。端到端往返时间2τ称为争用期。
- 使用CSMA/CD协议时,一个站不可能同时进行发送和接收(但必须边发送边监听信道)。使用此协议的以太网不能进行全双工通信只能进行半双工通信。
- 以太网使用截断二进制指数退避算法来确定碰撞后重传的时机。降低了二次冲突的可能性。
- 重传达16次仍不成功,则丢弃该帧,并向高层报告。
- 动态退避:重传需推迟的平均时间随重传次数而增大。
- 以太网最短帧长64字节(512bit)。凡长度小于64字节的帧均为无效帧,应当立即丢弃。
- 最大传输单元MTU1500字节
- 强化碰撞:一旦发生碰撞,除立即停止发送数据外还要再立即发送人为干扰信号,以便所有用户都知道发生了碰撞。
-
以太网定义参数a为以太网单程端到端时延τ与帧的发送时间 T 0 T_0 T0之比:
a = τ T 0 a=\frac{τ}{T_0} a=T0τ
当a→0时,表示只要一发生碰撞,就立即可以检测出来。a值越小越好。 -
硬件地址,又称物理地址、MAC地址。48位
-
MAC帧数据字段长度在46-1500字节之间。首部和尾部18字节。有效MAC帧长度为64~1518字节
扩展以太网
集线器:
-
工作在物理层,不进行碰撞检测。
-
不具备过滤流量等智能功能。增大了冲突域,降低了网络的性能。
-
使用集线器的以太网在逻辑上仍是一个总线网。
-
优点:
-使原来属于不同碰撞域的局域网上的计算机能够进行跨碰撞域的通信。
-扩大了以太网覆盖的地理范围。 -
缺点:
-碰撞域增大了,但总的吞吐量并未提高。
-如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。
网桥:
-
在数据链路层使用。对收到的帧根据其MAC帧的目的地址进行转发和过滤。
-
网桥在转发帧之前必须执行CSMA/CD算法:若在发送过程中出现碰撞,必须停止发送并进行退避。
-
优点:过滤通信量,扩大物理范围,提高可靠性,可互连不同物理层、不同MAC子层和不同速率的局域网。
-
缺点:
-存储转发增加了时延。在MAC子层没有流量控制的功能。
-具有不同MAC子层的网段桥接在一起时时延更大。
-网桥只适合于用户数不太多(不超过几百个)和通信量不太大的局域网,否则有时还会因传播过多广播信息而产生网络拥塞。 -
网桥/交换机将不同LAN段连在一起
-
MAC地址表是网桥通过逆向地址学习自动建立、更新和维护的。
-
自学习:
-查找转发表中与收到帧的源地址有无区配的项目
-若没有,就在转发表中增加一个项目
-若有,查看登记时间,如果超市,刷新 -
生成树协议STP:避免产生转发的帧在网络中不断地兜圈子
-
转发帧:
-查找转发表中与收到帧的目的地址有无相匹配的项目
-若没有,则通过所有其他接口进行转发
-若有,则按转发表接口进行转发
-若转发表中给出的接口是该帧进入网桥的接口,则丢弃该帧 -
透明网桥:“透明”是指局域网上的站点并不知道所发送的帧将经过哪几个网桥,因为网桥对各站来说是看不见的。
- 虚拟局域网VLAN,实现:交换机(或网桥)
例题
一个网络中无论其中有多少台主机或者服务器,如果全部接在一个集线器上,那么该网络的最大总吞吐量就是这个集线器的最大值。
如果各接口全部与交换机相连,那么总的最大吞吐量就是每个链路最大值的总和。