数据链路层
数据链路层的信道:
1)点对点信道:一对一
2)广播信道:使用共享信道协议协调主机发送数据
局域网属于数据链路层的范围
补充:路由器在转发分组时使用的协议栈只有下面的三层。数据进入路由器后要先从物理层上到网络层,在转发表中找到下一跳的地址后,再下到物理层转发出去
使用点对点信道的数据链路层
数据链路和帧
- 链路 VS 数据链路
1)链路:从一个结点到相邻结点的一段物理链路(有线或者无线),中间没有任何其他结点
2)数据链路:实现必要的通信协议的软件和硬件加到链路上,构成数据链路 - 网络适配器:实现通信协议的软件或者硬件,包含数据链路层和物理层
- 帧:数据链路层的协议数据单元
- 点对点信道的数据链路层在进行通信时的主要步骤如下:
1)结点A的数据链路层将网络层交下来的IP数据报添加首部和尾部封装成帧
2)结点A把封装好的帧发送给结点B的数据链路层
3)若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给上面的网络层;否则丢弃这个帧
三个基本问题
- 封装成帧:在一段数据的前后添加首部和尾部,这样就构成了一个帧
1)接收端收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束
2)帧的数据部分:网络层的IP数据报
3)一个帧的长度等于帧的数据部分加上帧的首部和帧尾部的长度
4)首部和尾部的作用:帧定界(确定帧的界限);含有很多控制信息
5)每一种数据链路层协议都规定了所能传送帧的数据部分长度上限——最大传送单元MTU
6)当数据是可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。
ASCII码是7位编码,一共可组合成128种不同的ASCII码,其中可打印的有95个,而不可打印的控制字符有33个
控制字符SOH(Start Of Header,SOH仅仅是它的名字)表示帧的首部开始,十六进制编码是01(00000001)
控制字符EOT(End Of Transmission)表示帧的结束,十六进制编码是04(00000100)
透明传输
- 透明:表示某一个实际存在的事物看起来好像不存在一样
- 在数据链路层透明传送数据:表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层
- 字节填充法:发送端二点数据链路层在数据中出现控制字符“SOH”或者“EOT”的前面插入一个转义字符“ESC”(十六进制编码是1B,00011011)。而接收端的数据链路层在把数据传送到网络层之前删除这个插入的转义字符。如果转义字符也出现在数据当中,则解决方法仍然是在转义字符的前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个
差错检测
- 数据链路层广泛使用了循环冗余检验CRC的检错技术
- 如果在数据链路层进行差错检验,就必须把数据划分成帧,每一帧都加上冗余码,一帧接一帧地传送,然后在接收方逐帧进行差错检验
- 在数据链路层若仅仅使用循环冗余检验CRC差错检测技术,则只能做到对帧的无差错接受,即:“凡是接收端数据链路层接受的帧,我们都能以非常接近于1 的概率认为这些帧在传输过程中没有产生差错。”
- 数据链路层的可靠传输”:数据链路层的发送端发送什么,在接收端就收到什么
- 传输差错分为2大类:
1)比特差错
2)帧丢失,帧重复,帧失序 - 数据链路层使用CRC检测,能够实现无比特差错的传输,但这不是可靠传输
点对点协议PPP
PPP协议的特点
- PPP协议是用户计算机和ISP进行通信时所使用的最广泛的数据链路层协议
- PPP协议应满足的要求
1)简单:对数据链路层的帧,不需要纠错,不需要序号,不需要流量控制;接收方每收到一个帧,就进行CRC检验,如果正确,就接受下这个帧;反之,就丢弃这个帧,其他什么都不做
2)封装成帧
3)透明性
4)多种网络层协议:PPP协议必须能够在同一条物理链路上同时支持多种网络层协议(IP和IPX)
5)多种类型链路:PPP能够在多种类型的链路上运行(串行或者并行)
6)差错检测
7)检测连接状态:PPP协议必须具有一种机制能够及时(不超过几分钟)自动检测出链路是否处于正常工作状态
8)最大传送单元:PPP协议必须对每一种类型的点对点链路设置最大传送单元MTU的标准默认值
9)网络层地址协商
10)数据压缩协商 - 在TCP/IP协议族中,可靠传输由运输层的TCP协议负责,因此数据链路层的PPP协议不需要纠错,不需要设置序号,不需要进行流量控制
- PPP协议不支持多点线路,而只支持点对点的链路通信
- PPP协议只支持全双工链路
- PPP协议的组成
1)一个将IP数据报封装到串行链路的方法
2)一个用来建立、配置和测试数据链路连接的链路控制协议LCP
3)一套网络控制协议NCP
PPP协议的帧格式
- 各字段的意义
1)PPP帧的首部和尾部分别是四个字段和两个字段
2)首部的第一个字段:标准字段F,0x7E(0x:后面的字符用十六进制表示);表示一个帧的开始
3)尾部的第二个字段:标准字段F,0x7E(0x:后面的字符用十六进制表示);表示一个帧的结束
4)首部中的地址字段A:0xFF(不携带PPP帧的信息)
5)控制字段C:0x03(不携带PPP帧的信息)
6)协议字段:首部的第二个字段,2个字节;当协议字段是0x0021时,PPP帧的信息字段时IP数据报;当协议字段是0xC021时,信息字段是PPP链路控制协议LCP的数据;当协议字段是0x8021时,信息字段是网络层的控制数据
7)信息字段:长度可变,不超过1500字节
8)FCS:CRC的帧检验序列,2个字节,尾部的第一个字节 - 字节填充
1)异步传输时,使用字节填充(逐个字符传送)
2)转义字符:0x7D - 零比特填充
1)同步传输(一连串的比特连续传送)
PPP协议的工作状态
使用广播信道的数据链路层
局域网使用的是广播信道
局域网的数据链路层
- 局域网的特点:网络为一个单位所拥有,且地理范围和站点数目均有限
- 局域网按照拓扑结构分类
1)星形网
2)环形网
3)总线网:传统以太网 - 现在以太网几乎成为了局域网的同义词
- 局域网的优点:
1)具有广播能力
2)便于系统的扩展和逐渐演化
3)提高了系统的可靠性、可用性、生存性 - 用户如何更加合理方便地共享通信媒体资源?
1)静态划分信道:时分复用,频分复用,码分复用
2)动态媒体接入控制(信道并非在用户通信时固定分配给用户):随机接入、受控接入 - 为了使数据链路层更好地适应多种局域网标准,IEEE802委员会把局域网的数据链路层拆分成了2个子层,即逻辑链路控制LLC子层和媒体接入控制MAC子层
- 由于互联网发展很快而TCP/IP体系使用的局域网只剩下DIX Ethernet V2而不是IEEE802.3标准中的局域网,因此,现在IEEE802委员会制定的逻辑链路控制子层LLC的作用已经消失了,很多厂商生产的适配器仅仅装有MAC协议,而没有LLC协议
- 适配器的作用
1)计算机和局域网的连接是通过通信适配器(adapter)进行的
2)在这种通信适配器上装有处理器和存储器(包括ROM,RAM)
3)适配器的重要功能:进行数据的串行传输和并行传输;适配器和局域网之间的通信是通过电缆或者双绞线以串行方式传输的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行方式传输的
4)适配器:数据链路层和物理层
5)适配器在接收和发送各种帧时,不使用计算机的CPU
6)计算机的硬件地址——适配器的ROM中
7)计算机的软件地址(IP地址)——计算机的存储器中
CSMA/CD协议
- 为了通信方便,以太网采取的2种措施:
1)采用较为灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据
(以太网提供的服务是尽最大努力的交付,即不可靠的交付;
对差错帧是否需要重传则由高层来决定;
以太网并不会知道这个帧是不是重传帧;
使用的是CSMA/CD协议,载波监听多点接入/碰撞检测,在同一时间只能允许一台计算机发送数据)
2)以太网发送的数据都使用曼切斯特编码的信号 - CSMA/CD协议的要点
1)协议的实质:载波监听和碰撞检测
2)在使用CSMA/CD协议时,一个站不可能同时进行发送和接收(但是必须边发送边监听信道)因此使用CSMA/CD协议的以太网不可能进行全双工通信而只能进行双向交替通信(半双工通信)
3)以太网发送数据时,如果在争用期(共发送了64字节)没有发生碰撞,那么后续发送的数据就一定不会发生冲突。也就是说,如果发生了冲突,就一定是在发送的前64字节之内。由于一检测到冲突就立刻中止发送,这时已经发送出去的数据一定小于64字节,因此,凡长度小于64字节的帧都是由于冲突而异常中止的无效帧