计算机网络不看后悔系列blog(三)数据链路层/超详细!!(。◝‿◜。)
数据链路层的基本概念
简单模型
数据链路层不关心物理层解决的问题,只关心帧头帧尾和校验
信道类型
- 点到点信道:这种信道使用一对一的点对点通信方式。
- 广播信道:广播信道上的主机很多,需要专用的共享信道协议来协调主机的数据发送。
链路与数据链路
- 链路(link)——是一条点到点的物理线路段,中间没有任何其他的交换节点。一条链路只是一条通路的一个组成部分。
- 数据链路(data link)——除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。最常用的方法是使用适配器(网卡)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。
帧
在网络层,给数据包增加了接收端和发送端的IP地址。在数据链路层里,增加了帧头帧尾,MAC地址和校验值。
数据链路层解决的基本问题
封装成帧
就是在一段数据的前后分别添加帧头和帧尾,构成一个帧,确定帧的界限。
封装成帧中的MTU为最大传输单元,以太网传输最大不能超过1500个字节,如果只收到半截(即没有完整的收到帧的开始和结束)那么将会被丢弃,循环冗余检验中相除环节相同为0不同为1,最高位为1够除就上1,高位为0不够除就上0,除数越大能检验出差错的概率越大,但是也越复杂
透明传输
在封装成帧的过程中可能会出现这样的问题:
- 用字节填充法解决透明传输问题。发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(十六进制数1B)。
- 字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在数据送往网络层之前拿出插入的转义字符。
- 如果转义字符也出现在数据之中,那么应该在转义字符前插入一个转义字符。当接收端收到连续的两个转义字符时,就删除前面的那一个。
差错检验
- 误码率BER(bit error rate):传输过程中可能会产生bit差错:0变成1,1变成0.在一段时间内,传输错误的比特率占所传输比特总数的比率称为误码率
- 误码率和信噪比的关系很大。
- 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检验措施。
循环冗余检验CRC:
除数必须比后面添加的0的位数多一位,可以是任意的二进制数。每一步运算其实是不进位的加法。下图的001就是FCS帧检验序列。接收端计算101001001(也就是原数据加上FCS)除以1101,如果商为0,意味着传输过程没有差错,就接受,否则丢弃。(算数过程中高位为1就上1,高位为0就上0,过程中相同为0不同为1)
特点:
- 不能确定出错的bit的是哪一位;
- 可能会出错,但只要经过严格的挑选,并且除数位数足够大,就可以极大减少出错概率;
- CRC只能做到无差错接受(意思是传输过程没有差错,有差错的一律丢弃);
- 要做到可靠传输,必须加上确认和重传机制。
在数据后面添加的冗余码称为帧检验序列FCS(frame check seqeunce)。CRC不是获得FCS的唯一方法。
两种情况的数据链路层
广域网(使用点对点信道的数据链路层)
PPP协议(point to point protocol),是数据链路层协议,例如用户使用拨号上网。
- PPP协议应该满足:
简单;封装成帧;透明性;多种网络层协议;多种类型链路;差错检验;检测连接状态;最大传送单元;网络层地址协商;数据压缩协商; - PPP协议不需要满足:
纠错;流量控制;序号;多点链接;半双工或单工连接。 - PPP协议的组层部分:
数据链路层协议可以用于异步串行或同步串行介质;
使用LCP(链路控制协议)建立并维护数据链路连接,可以实现身份验证和欠费管理;只有满足了LCP即拨号成功才能实现NCP协议即才能获得IP地址 - 家庭上网拨号分配地址就是使用的PPP协议,但是直接插上网线就直接能上网就不用这个协议了。PPP协议具有记录功能,能记录下上网帐和时间,可以支持并标示多种网络层协议。网络层地址的协商:拨号成功后分配一个网络层的IP地址;
网络控制协议(NCP)允许在点到点连接上使用多种网络层协议:
PPP协议帧格式
- 标志字段F = 0x7E
- 地址字段A = 0xFF,它并不起作用
- 控制字段C = 0x03
- PPP协议是面向字节的,所以所有的PPP帧的长度都是整数字节。
- 7E:0111 1110
字节填充(类似于透明传输)
- 此时,信息部分是以字节为单位的。
将信息字段中出现的每个0x7E字节转变成为2字节序列(0x7D,0x5E);- 将信息字段中出现的每个0x7E字节转变成为2字节序列(0x7D,0x5D);
- 将信息字段中出现的每个ASCII码控制字符(小于0x20字符),在前面加入一个0x7E;
0比特填充(类似于透明传输)
此时,信息部分是二进制流。PPP协议在SONET/SDH链路时,是使用同步传输。在发送端,只要发现有5个连续的1,则填充一个0,接收端删掉对应的0。
PPP协议不使用序号和确认机制的原因
在数据链路层出现错误的概率不大时,使用较简单的PPP协议较为合理;在Internet环境下,PPP的信息字段放入的数据是IP数据报。数据链路层的可靠传输并不能保证网络层的传输也是可靠的;帧检验序列FCS字段可以保证无差错接受。
- PPP协议的工作状态
- 当用户拨号接入ISP(网络运营商)时,路由器的调制解调器对拨号进行确认,建立物理连接;
- PC机箱路由器发送一些列的LCP(链路控制协议)分组(封装成多个PPP帧);
- 这些分组及其响应选择一些PPP参数,和进行网络层配置,NCP(网络控制协议)给新接入的PC机分配一个临时的IP地址,使PC机成为Internet上的一个主机;
- 通信完毕后,NCP释放网络层连接,收回原来分配出去的IP地址;
- 接着,LCP释放数据链路层连接;最后释放的事物理层连接。
数据链路层的默认协议为HDLC 可以改为PPP
局域网(使用广播信道的数据链路层)
一般为总线性,广播信道的冲突检测,由于发现冲突的时延最长高达两个单程的时延,所以以太网不适合长距离传输,因为发现冲突的时延会很长
局域网的拓扑
共享通信媒体
静态划分信道(麻烦):
- 频分复用;
- 时分复用;
- 波分复用;
- 码分复用;
动态媒体接入控制(多点接入):
- 随机接入(主要是以太网);
- 受控接入,如多点线路探询(polling),轮询(不采用了)。
以太网
最初的以太网是将许多计算机都连接到一根总线上,当初认为这样连接即简单又可靠,因为总线上没有有源器件。
总线上每一个主机都能检测到B发送的数据。但是只有D的地址和数据帧首部写入的地址一致,所以只有D接收。其余计算机都能检测到这不是发送给他们的数据帧,所以就丢弃这个数据帧。这是一种具有广播特性的总线上实现了一对一通信。这种方式不安全,而且效率不高
带冲突检测的载波监听/碰撞检测
- CSMA/CD:Carrier Sense Multiple Access with Collision Detection
- 多点接入:许多计算机以多点接入的方式连接在一根总线上。
- 载波监听:每一个站在发送数据之前都先要用电子技术检测一下总线时候有其它计算机在发送数据信号,如果有则不发送数据,以免发生碰撞;
碰撞检测
碰撞检测就是计算机边发送数据边检测信道上信号电压的大小。(当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大)当一个站检测到信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站在同时发送数据,表明产生了碰撞;
碰撞就是冲突,碰撞检测也称冲突检测。
检测到碰撞后:在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息;
每一个正在发送数据的站,一旦发现总线上出现了碰撞,就立即停止发送,避免浪费网络资源,等待一个随机的时间后再次发送。
传播时延对载波监听的影响
能检查出出现碰撞的最长时延为2t。
CSMA/CD的重要特性
- 使用CSMA/CD协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工);
- 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能;
- 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。
争用期
- 最先发送数据帧的站,在发送数据帧后至多经过时间2t(2倍的端到端往返时延)就可知道发送的数据帧是否发生了碰撞。
- 经过争用期这段时间还没有检测到碰撞,就可以肯定不会发生碰撞;
- 以太网的争用期:
- 以太网的端到端往返时延2t称为争用期,或碰撞窗口,通常取51.2微秒为争用期的长度;如果网线过长,会导致争用期时间的延长,这也是为什么网线一般不超过100m;
- 对于10Mb/s的以太网,在争用期可以发送512bit,也就是64 byte;
- 以太网在发送数据的时候,若前64字节没有冲突,后续也不会发生冲突;
- 最短有效帧长:
- 如果发生冲突,一定是前64字节;
- 由于一旦发生冲突就立刻停止,所以已发送的数据一定小于64字节;
- 以太网规定了最短有效帧长为64字节,凡事小于64字节的帧一定是因为冲突而异常终止的无效帧。
二进制指数类型退避算法
- 发送碰撞的站在停止发送数据后,要推迟一个随机事件才能发送数据。
- 确定基本退避时间,一般是争用期2t;
- 定义参数k = min(重传次数,10);
- 从整数集合{0,1,…,2^k-1}中随机取出一个数,记为r,重传所需的时延就是r倍的基本退避时间;
- 当重传达16次时仍不能成功时就丢弃该帧,并向高层报告。
以太网
以太网的两个标准
- DIX Ethernet V2一般是指这个。
- IEEE 802.3 两个标准差别很小。以太网 是满足DIX Ethernet V2标准的局域网。
以太网与数据链路层的2个子层
为了使数据链路层更好的适应多种局域网标准,802委员会把局域网拆分为:
- 逻辑链路控制LLC(Logical Link Control)子层;
- 媒体接入控制MAC(Medium Access Control)子层。
与接入到传输媒体有关的内容都放在MAC子层上,而LLC子层与传输媒体无关,不管什么协议的局域网对LLC子层都是透明的;
以太网是世界上第一个局域网产品,现代的以太网只有MAC这一层了没有LLC子层了。
由于局域网标准一般是DIX Ethernet V2而不是IEEE 802.3,所以802.2标准的LLC子层作用已经不大了,很多厂商适配器没有LLC协议;
以太网提供的服务
- 以太网提供服务是不可靠的交付,即最大努力的交付;
- 当接收站收到的有差错的数据帧时就丢弃此帧,其它什么也不做,差错的纠正由高层来处理;
- 如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新帧发送。
以太网的星型拓扑结构
- 物理上是星型,逻辑上是总线型。以太网的最初形态接到一根总线上的好处是不用再复用信道了,缺点是一根线路上只能有一个发一个收,占线。
- 为了降低成本,最初由粗的同轴电缆变成细的同轴电缆最后变成无屏蔽双绞线。每个站需要用两对双绞线,分别用于发送和接收;
- 在星形的中心增加了一种可靠性高的设备,为集线器(hub)。
集线器的特点
- 集线器使用电子器件来模拟实际电缆线的工作,因此整个系统仍然是像一个传统的以太网那样运行。由于集线器使用了大规模集成电路芯片,所以可靠性更高;
- 使用集线器逻辑上仍然是一个总线网,各工作站使用的还是CSMA/CD协议,共享逻辑网络上的总线;
集线器像一个多接口的转发器,工作在物理层。
路由器
从右向左:两个以太网口 两个广域网口 两个光纤接口 代号012345
3.4.6 10Base-T 基于集线器的以太网标准
- 它的通信距离稍短,每个站到集线器的距离不超过100m。
- 这种10MB/s的无屏蔽双绞线星形网的出现,能降低成本和提高可靠性。
- 10Base-T的出现有很大的意义,类似标准有100Base-FX,10Base-T,100Base-T4.
信道利用率
- 争用期长度为2t;帧长为L bit,数据发送旅为C b/s,帧的发送时间为L/C = T0 秒。
- 一个帧从开始发送,经可能发生的碰撞后,将再次重传多次,直到发送成功且信道转为空闲(即再经过t使得信道上没有信号在传播)时为止,是发送一帧所需的平均时间。
定义a = t / T0,是单程端到端时延t与帧发送时间T0的比值。a越小,说明碰撞检测越快,信道利用率高。当数据率(网速)一定时,以太网的连线长度受到限制,否则t会太长;以太网的帧长不能太短,否则T0太小,使a太大。
信道利用率的最大值
- 假设理想状态下,以太网个展发送的数据都不会碰撞,一旦总线空闲就能有站立即发送数据,所以没有争用期;
- 发送一帧需要占用总线T0+t,而帧本身需要发送时间为T0,于是理想情况下极限信道利用率Smax = T0 / (T0 + t) = 1 / (1 + a).
MAC层
MAC层的硬件地址(MAC地址)
- 802标准所说的“地址”严格地讲应该是每一个站的“名字”或标识符,但是大家已经习惯的将这种48位的“名字”称为“地址”,这种称呼不太严格
- 硬件地址 = 物理地址 = MAC地址
- MAC地址前3个字节(24位)是厂家分配的地址字段,后3个字节(24位)是厂家自定义,称为扩展标识符;
- 一个地址块可以产生2^24个地址,这种48位地址称为MAC-48,通用名为EUI-48,这就是MAC地址;
- MAC地址实际上是每一个站的名字或标识符。
适配器检查MAC地址
适配器从网络上每收到一个MAC帧就要用硬件检查MAC帧中的MAC地址:
->如果是发往本站的帧就收下,然后进行其它处理;
->否则丢弃。
发往本站的帧包括:
->单播帧(unicast)(一对一)
->广播帧(broadcast)(一对全体)
->多播帧(multicast)(一对多)
MAC帧的格式
由于以太网使用的是曼彻斯特编码所以只有一个帧开始标志就可以了,当后面不再有信号传输的时候就认为是结束了,不需要再添加帧的结束标志了
6 + 6 + 2 + 46 + 4 =64 byte,这就是为什么IP数据报的最短长度为46字节。
前8个字节的作用是实现比特同步,第一个字段共7个字节,称为前同步码,作用是实现快速MAC帧的比特同步;第二个字段是帧开始定界符,表示后面的信息是MAC帧。
无效的MAC帧
- 帧的长度不是整数个字节;
- 用收到的帧检验序列FCS查出有错误;
- 数据字段的长度不在46-1518字节内;
- 对于检查出来的无效MAC帧简单的丢弃。
帧间最小间隔
为9.6微秒。相当于96bit的发送时间。一个站在检测到总线空闲时,还需要等待9.6微秒后才能再次发送数据,这样做是为了使刚刚收到的数据帧的站接收缓存来得及清理,做好接收下一帧的准备。
扩展以太网
在物理层考虑扩展
距离的扩展
主机使用光纤和一对光纤调制解调器连接到集线器。
数量的扩展
集线器集联:使网络中计算机增加,变成一个大的冲突域,会造成效率降低。
在数据链路层考虑扩展
网桥
- 网桥工作在数据链路层,他根据MAC帧的目的地址对收到的帧进行转发。
- 网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是现检查此帧的目的MAC地址,然后再确定将该帧转发到对应的接口。
透明网桥(transparent )
透明指局域网上的站点不知道所发送的帧将经过几个网桥,因为网桥对于各站点是看不见的。
透明网桥是一种即插即用的设备,标准是IEEE 802.1D。
透明网桥使用了生成树算法。避免产生转发的帧在网络中不停的转圈
交换机
- 随着网桥的接口的增加,后来网桥和集线器合并了,计算机可以直接和交换机连接,这就是交换机。
- 交换机就是网桥和集线器的合并升级版,能全双工,安全通信。
- 端口带宽独享;
- 安全;
- 基于MAC地址转发;
- 通过学习构建MAC地址表。
计算机可以直接和网桥连接,交换机直接在内部直接建立两个目标之间的通信,不再通过总线路类似广播一样的传输了,这样的话抓包工具也抓不到了,因为接收不到来自其他非自己接收端发送的数据了,而且交换机具有存储功能,两个同时向一个目标发送数据的时候可以进行排队,就没有冲突了,安全,效率高
数据链路层的安全:
可以规定好每个交换机所能连接的设备的MAC地址,如果地址更改了或者地址变多了将会shutdown(这就是数据链路层安全的一个应用)
虚拟局域网
LAN:一个局域网(一个交换机构成的局域网)
VLAN:虚拟局域网,一个广播域=逻辑网段(子网)位于不同局域网的交换机相连并制定哪些地址的主机可以组成一个局域网
放置在同一个转换器上的两个虚拟局域网,两个VLAN互不相通,如下:
配置在多个转换器下的主机也可也组成多个虚拟局域网,如下所示:
它们就等价于:
不同的交换机之间连接的设备有同属于一个虚拟机网的可以在交换机之间加一个干道链路,这个链路上可以跑多个VLAN的数据,它的带宽往往比单个网线连接的带宽要高很多数据包中加标记可以让干道链路识别出是哪一个VLAN的数据包,这里使用的是统计时分复用。
对于不用传输多个VLAN的链路就可以设置成普通的访问链路
ISL标记
思科公司的加标记的方法
在数据帧的地方加了几个字节
插入4个字节的VLAN标记
快速以太网(fast ethernet)
100Base-T以太网
- 速率在100Mb/s以上的以太网称为高速以太网。
- 在双绞线上传送100Mb/s基带信号的星型拓扑以太网,仍使用IEEE 802.3的CSMA/CD协议。
- 100Base-T以太网被称为快速以太网(fast ethernet)。
- 100Base-T以太网的物理层:
- 100Base-TX:使用2对UTP 5类线或屏蔽双绞线STP。
- 100Base-FX:使用2对光纤。
- 100Base-T4:使用4对UTP 3类线或5类线。
100Base-T以太网的特点
可以实现全双工通信(注意,如果交换机上某一路连接着集线器(半双工),则这一路不能实现全双工)而无冲突,此时不使用CSMA/CD协议。
MAC帧格式不变,仍是802.3 标准。
最短帧长度不变,但是一个网段的最大电缆长度减少到100m。
帧间间隔从9.6微秒缩小到0.96微秒。
吉比特Gbit以太网
- 允许在1 Gb/s下全双工或半双工工作方式。
- 使用802.3标准的帧格式。
- 在半双工下使用CSMA/CD协议。
- 与10Base-T和100Base-T技术向后兼容。
- 当吉比特以太网在全双工方式时,不用载波延伸和分组冲突。
- 1000Base-X以太网的物理层(基于光纤通道):
- 1000Base-SX:SX表示短波长,传输距离上275m或550m。
- 1000Base-LX:LX表示长波长,传输距离上550m或5000m。
- 1000Base-CX:
1000Base-T以太网的物理层(基于双绞线): - 使用 4对 5类线UTP。
10Gbit/s以太网
- MAC帧格式不变,仍是802.3 标准。
- 使用光纤而不是铜线。
- 只能工作在全双工方式,没有争用问题。
- 它的出现使工作范围从局域网扩大到城域网和广域网,实现了端到端的以太网传输,优点是:技术成熟;互操作性好;广域网中使用以太网便宜;统一的帧格式。
以太网10Mb/s到10Gb/s的演变
说明了:
- 可拓展性;
- 灵活性(多种传输媒体,全/半双工,共享/交换);
- 易于安装;
- 稳健性好。
Cisco建网的3层模型
参考:
《计算机网络》课程
https://blog.csdn.net/iwanderu/article/details/103812828