数据链路层标准
数据链路层术语
信道
链路定义
三个基本问题
两种重要的措施
CSMA/CD 协议
以太网提供的服务
MAC帧
扩展局域网
计算机通过适配器和局域网进行通信
集线器
网桥
网络拓扑
交换机
虚拟局域网VLAN
虚拟局域网使用的以太网帧格式
发送一帧所需的平均时间
LAN 的无线协议
LAN 的以太网协议
WAN 的点对点协议
PPPoE 的点对点协议
两种信道方式:
通信方式:
使用一对一的点对点通信方式
帧首部:
应满足的需求:
不需要的功能:
三个组成部分:
PPP 协议工作状态:
透明传输问题:
字符填充:
零比特填充:
方法:
注意:
PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送).这时PPP协议采用零比特填充方法来实现透明传输
通信方式:使用一对多的广播通信方式
注意:因此必须使用专用的共享信道协议来协调这些主机的数据发
信道划分:
链路(link) 是一条无源的点到点的物理线路段,中间没有任何其他的交换结点
数据链路(data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输.若把实现这些协议的硬件和软件加到链路上,就构成了数据链路.
封装成帧:
在一段数据的前后分别添加首部和尾部,然后就构成了一个帧.确定帧界限
透明传输:
定义:
数据在传输中为透明的
解决透明传输问题:
差错控制:
采用较为灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据
以太网对发送的数据帧不进行编号,也不要求对方发回确认
定义:
载波监听多点接入/碰撞检测CSMA/CD
冲突:
冲突受控:
冲突争用:
做法:
第一步,先听后发(每个站在发送数据前先要检测一下总线上是否有其他计算机在发送数据)
第二步,边听边发(每个站在发送数据时要检查是否发送碰撞)
第三步,冲突停止(当发生碰撞时候双方要立马停止发送数据,并发送人为干扰信号)
第四步,随机重发(然后依据退避算法重新发送数据)
传播时延对载波监听:
人为干扰信号:
特点:
退避算法:
争用期:
CSMA/CD 发送流程:
CSMA/CD 接收流程:
以太网提供的服务是不可靠的交付,即尽最大努力的交付.当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做.差错的纠正由高层来决定.如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送.
MAC帧格式:
MAC 帧类型字段值及其意思:
Mac地址
地址分配:
定义:
硬件地址又称为物理地址,或 MAC 地址
MAC帧:
两种标准:
无效的 MAC 帧:
帧间最小间隔:
在物理层扩展局域网(用集线器扩展局域网)
优点:
缺点:
在数据链路层扩展局域网(用网桥扩展局域网)
优点:
缺点:
在物理层上和在数据链路层上扩展局域网的不同:
转发表中登记以下三个信息:
透明网桥自学习算法:
处理接收到的数据帧流程:
要求:
每隔一段时间内更新下转发表
生成树算法:
源路由网桥:
星形拓扑:
由于集线器的出现和双绞线大量用于局域网,此拓扑结构非常广泛得到应用
环形拓扑:
总线拓扑:
点对点拓扑:
交换式集线器常称为以太网交换机(switch)或第二层交换机(表明此交换机工作在数据链路层)以太网交换机通常都有十几个接口.因此,以太网交换机实质上就是一个多接口的网桥,可见交换机工作在数据链路层
由一些局域网网段构成的与物理位置无关的逻辑组
每一个VLA 的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个VLAN
利用以太网交换机实现虚拟局域网
这些网段具有某些共同的需求
前言
PPPOE(PPP over Ethernet, RFC2516,值得注意的是此RFC不是Standard而是Information类型的)定义了如何在以太网上传输PPP数据包的方法,目前流行的宽带类型
ADSL就是通过PPPoE实现的.
通信过程概述
建立PPPOE通道(ADSL拨号)分两个阶段:发现阶段和PPP会话阶段.
在发现阶段,以太网上的客户机要找到一个访问集中器(AC,Access Concentrator),就是ADSL MODEM,一般家用时一般就只有一个AC;但如果是一个以太网内可能会有多条ADSL,就会有多个AC,这时客户机就从中选择一个.发现阶段完成后,客户机和AC都得到要在以太网上建立PPP通道的相关信息.
发现阶段是无状态的,也就是两边都不用保存以前的状态信息;只有PPP会话开始后,双方就要建立一个虚拟的PPP通信接口,具体在Linux下会有ppp0网卡,在windows下网络连接中增加ADSL的接口.
协议头格式
协议值
PPPOE数据是直接在以太头数据之上的,其等级和ARP、IP等是相同的,在以太头的类型字段中,用0x8863 表示是PPPOE发现阶段数据,用0x8864表示PPP会话阶段数据,如下所示.(类比:0x0800表示IP数据,0x0806表示ARP数据)
PPPOE协议头
PPPOE协议头有6个字节,正好和14字节的以太头实现了4字节对齐,包括以下字段:
发现阶段
PPPOE发现阶段数据的以太类型是0x8863.
TAG
在发现阶段用于交换客户机和AC的信息,建立PPPOE通道,负载信息都是PPPOE信息,并没有上层协议数据.
发现阶段的负载称为TAG,一个TAG信息格式如下,负载信息中可能会包含多个TAG:
TAG_TYPE:16位,TAG类型(TAG_TYPE可取以下值(注意第一字节为2表示是错误信息))
TAG_LENGTH:16位,表示TAG_VALUE部分的长度TAG_VALUE:TAG值
PPPOE主动发现初始包
PPPOE主动发现初始包(PPPoE Active Discovery Initiation, PADI)由客户机发出,以太头中的目的地址是以太广播地址FF:FF:FF:FF:FF:FF,PPPOE头中的CODE为0x09,SESSION_ID值必须为0,负载部分必须只包含一个Service-Name类型的TAG表示请求的服务类型,另外可以包含其他TAG,整个PPPOE包不能超过1484字节,这样省出的16字节可以由ADSL中继设备添加中继TAG.
一个PADI包的例子为:
PPPOE主动发现提议包
PPPOE主动发现提议包(PPPoE Active Discovery Offer, PADO)由AC发出,用来回应客户机的PADI包,以太头中的目的地址是客户机的MAC地址,PPPOE头中的CODE为0x07,SESSION_ID值必须为0,负载部分必须包含一个AC-Name类型的TAG,用来指示本AC的名称,一个在PADI包中指定的Service-Name的TAG,另外可以包含其他Service-Name的TAG.如果AC不对该客户机提供服务,AC就不回应PADO包. 一个PADO包的例子为:
PPPOE主动发现请求包
PPPOE主动发现请求包(PPPoE Active Discovery Request, PADR)由客户机发出,因为可能会有多个AC对客户机发出的PADI包回应了PADO包,客户机从回应的PADO包中选择一个AC发送PADR包,以太头中的目的地址是该AC的MAC地址,PPPOE头中的CODE为0x19,SESSION_ID值必须为0,负载部分必须只包含一个Service-Name类型的TAG表示请求的服务类型,另外可以包含其他TAG.
PPPOE主动发现会话确认包
PPPOE主动发现会话确认包(PPPoE Active Discovery Session-confirmation, PADS)由AC发出,收到客户机的PADR包后,AC将产生一个SEESSION_ID值用来标志本次PPP会话,以PADR包方式发送给客户机.以太头中的目的地址是客户机的MAC地址,PPPOE头中的CODE为0x65,SESSION_ID值必须为所生成的那个SESSION_ID,负载部分必须只包含一个Service-Name类型的TAG,表示该服务类型被AC接受,另外可以包含其他TAG.如果AC不接受PADR中的Server-Name,PADS中则包含一个Service-Name-Error类型的TAG,这时SESSION_ID设置为0.
PPPOE主动发现停止包
PPPOE主动发现停止包(PPPoE Active Discovery Terminate, PADT)表示PPPOE会话过程的结束,AC和客户机都可以主动发出.以太头中的目的地址是对方的MAC地址,PPPOE头中的CODE为0xa7,SESSION_ID值必须为PPPOE会话过程的SESSION_ID,不需要TAG.
PPP会话阶段
在PPP会话阶段,PPP包被封装在PPPOE以太帧中,以太包目的地址都是单一的,以太协议为0x8864,PPPOE头的CODE必须为0,SESSION_ID必须一直为发现阶段协商出的SEESION_ID值,PPPOE的负载是整个PPP包,PPP包前是两字节的PPP协议ID值.
一个PPPOE会话过程包的例子为:
注意:由于PPPOE头是6字节,PPP协议ID号两个字节,一共要占用8个字节,而以太网的MTU值为1500,所以上层PPP负载数据不能超过1492字节,所以PPP协商时协商的最大接收单元值不能超过1492字节,也就是相当于在PPPOE环境下的MTU是1492字节.
ADSL拨号过程简述
客户机启动拨号程序,发送PADI包,ADSL MODEM回应PADO包,客户机再发送PADR包,ADSL MODEM回应PADS包后建立PPPOE通道,随后客户机进行普通的PPP协议拨号过程,不过PPP数据包都是包装进以太帧中的,拨号成功后客户机和服务器之间建立了PPP通道,ADSL MODEM起到将以太帧转换为PPP包的作用.ADSL虽然是用电话线,但所用频率不是通话用的频率,所以ADSL拨号不影响打电话.通信结束后,会发送PADT断开PPPOE通道.
结论
由于ADSL的大面积使用,PPPOE也随之应用,了解其通信协议和数据格式对于底层驱动的开发、协议分析、访问控制等是必要的,现在不论在windows还是linux下都可以很好地支持PPPOE.