1 数据链路层概述
封装成帧
差错检测:发送方在帧尾添加检错码,接收方通过检错码和检错算法就可以判断出是否误码。
可靠传输: 误码不能完全避免,但若能实现发送方发送什么,接收方就能收到什么,就可称为是可靠传输。
2 封装成帧
封装成帧是指数据链路层把上层交付的协议数据单元添加帧头和帧尾使之成为帧
- 帧头和帧尾包含重要的控制信息
- 帧头和帧尾的作用之一就是帧定界,这样接收方的数据链路层可以通过帧定界标志从物理层交付的比特流中提取出一个一个的帧
透明传输是指数据链路层对上层交付的传输数据没有任何限制 ,哪怕数据中包含帧定界也没关系。可通过以下两种方法实现透明传输 - 面向字节的物理链路是使用字符填充的方法实现透明传输,即扫描上层交付的协议数据单元遇到帧定界标志就加上转义字符
- 面向比特的物理链路是使用比特填充的方法实现透明传输,例如零比特填充,即发送方在发送前扫描上层交付的协议数据单元,每五个1后面添加比特0,接收方在接收后将帧的数据部分每五个1后面的0剔除即可
3 差错检测
比特传输过程中产生差错:1变成0,0变成1的现象称为比特差错或误码
在一段时间内,传输错误的比特数占总比特数的比率称为误码率BER
常见差错检测方法:
- 奇偶校验
- 循环冗余校验CRC,收发双方约定一个生成多项式(生成多项式必须包含常数项1),生成多项式的系数作为除数,待发送的数据后面添加生成多项式最高次个0,进行相除,得到的余数即冗余码,余数的位数需要与生成多项式最高次数相同,位数不足则在前面补0,把冗余码添加到发送的数据后面进行发送,接收方接收到数据后再次与除数进行相除,若余数为0则表明无误码,否则有误码。
注意这里做的是异或运算,而且每次计算的位数与除数相同则商1否则商0
4 可靠传输
4.1 可靠传输的基本概念
各层向上层提供的服务类型包括不可靠传输服务和可靠传输服务
- 不可靠传输服务:当出现误码时,仅仅丢弃有误码的帧,其他什么也不做
- 可靠传输服务:想办法实现发送端发送什么,接收端就收到什么
一般情况下,有线链路误码率较低,为减小开销,不要求数据链路层向上提供可靠传输服务,即使出现了误码,可靠传输问题由上层处理,而无线链路易受干扰,误码率较高,因此要求数据链路层必须向上层提供可靠传输服务。
传输差错包括比特差错、分组丢失、分组失序、分组重复,比特差错出现在数据链路层,分组丢失、分组失序、分组重复出现在数据链路层的上层。
可靠传输的实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求。
4.2 可靠传输的实现机制
停止-等待协议SW、回退N帧协议GBN、选择重传协议SR
这三种可靠传输实现机制的基本原理可以应用于计算机网络体系结构的各层协议
4.2.1 停止-等待协议SW
发送方发送一个数据,等待接收方的返回,如果接收方接收的数据没有误码则接收该数据并返回确认分组简称ACK,发送方继续发送下一个数据;如果接收方接收到的数据存在误码则丢弃该数据并返回否认分组简称NAK,发送方从缓存中读取数据进行重传。
但是当发送方发送的数据存在丢失时,接收方就收不到数据分组,也就不会返回ACK或NAK,如果不采取措施发送方就会一直处于等待接收ACK或NAK的过程,为解决这个问题,可以在发送方发送完一个数据分组后启动一个超时计数器,若到了超市计数器设置的重传时间而发送方仍收不到ACK或NAK,则重传数据分组,这就叫做超时重传,一般可将超时重传时间设为略大于从发送方到接收方的平均往返时间。——发送丢失
此外当接收方返回的数据存在丢失时,发送方就会不断重传,接收方就无法判断新来的分组是不是重复分组,为解决该问题,必须给每个分组带上序号,对于停止-等待协议,由于每发送一个数据分组就停止等待,只要保证每发送一个新的数据分组的序号与上次发送的数据分组序号不同即可,因此用一个比特来编号就够了。——确认丢失
另外当接收方的确认迟到,发送方就无法判断新来的确认分组是不是重复分组,通过给确认编号解决重复确认问题。——确认迟到
停止-等待协议SW信道利用率很低
4.2.2 回退N帧协议GBN
4.2.3 选择重传协议SR
5 点对点协议ppp
点对点协议ppp是目前使用最广泛的点对点数据链路层协议
6 媒体接入控制
媒体接入控制MAC:如何协调多个发送和接收站点对一个共享传输媒体的占用
静态划分信道:预先固定分配好信道,对于突发性数据信道利用率很低,通常在无线网络的物理层中使用
6.1 媒体介入控制——静态划分信道
6.2 媒体接入控制——动态接入控制——随机接入
6.2.1 CSMA/CD协议(载波监听多址接入/碰撞检测)(Carrier Sense Multiple Access/Collision Detection)
多址接入MA:多个站连接在一条总线上,竞争使用总线
载波监听CS:信道上有A、B、C三个节点,B在传输比特,只要B传播的比特没有到达C则C就会认为信道空闲。每个节点在发送前要看看信道是否空闲,空闲了才发送帧。“先听后说”
碰撞检测CD: 每一个正在发送帧的站边发送边检测碰撞,一旦发现总线上有碰撞,则立即停止发送,退避一段随机时间后再次发送。“边说边听”
使用CSMA/CD协议的以太网的帧长不能太短,太短则发送帧的站A已经发送完毕就不会对该帧进行碰撞检测,而该帧在传输过程中还有可能发送碰撞,这时发送帧的站A不会重发该帧。
以太网的最小帧长确保了可在帧发送完成之前就检测到该帧的发送过程是否遭遇了碰撞。
6.2.2 CSMA/CA协议(载波监听多址接入/碰撞避免)(Carrier Sense Multiple Access/Collision Avoidance)
无线局域网可以使用载波监听多址接入CSMA,即在发送帧之前先对传输媒体进行载波监听,若发现有其他站在发送帧,就推迟发送以免发生碰撞。
无线局域网不能使用碰撞检测CD,原因如下:无线网卡上接收到的信号强度往往会远小于发送信号的强度,要在无线网卡上实现碰撞检测CD,对硬件要求很高;由于无线电波传播存在隐蔽站问题,即使实现碰撞检测意义也不大。
7 MAC地址、IP地址、ARP协议
7.1 MAC地址
当多个主机连接在同一个广播信道上,要想实现两个主机间的通信,则每个主机必须有一个唯一标识即一个数据链路层地址。每个主机发送的帧中必须携带标识发送主机和接收主机的地址,由于这类地址是用于媒体接入控制MAC,因此这类地址被称为MAC地址
7.2 IP地址
IP地址是因特网上主机和路由器所使用的地址,用于标识两部分信息:网络编号——标识因特网上数以百万计的网络、主机编号——标识同一网络上不同主机(或路由器各接口)
MAC地址 VS IP地址
MAC地址不具备区分不同网络的功能,同一台主机不同时间联网的IP地址不同,但是同一主机MAC地址一定相同。
7.3 ARP协议
ARP协议只能在一段链路或一个网络中使用,不能跨网络使用
每台主机都会有ARP高速缓存表,表中记录了MAC地址和IP地址的对应关系
8 集线器与交换机的区别
集线器:一个站点A向站点C发送单播数据,连接集线器的所有站点都能收到
交换机:一个站点A向站点C发送单播数据,只有站点C能收到
对于广播数据二者效果一样
9 以太网交换机自学习和转发帧的流程
10 以太网交换机的生成树协议STP
11 虚拟局域网VLAN
11.1 虚拟局域网VLAN概述
网络中会频繁出现广播信息:
-
TCP/IP协议栈中很多协议都会使用广播:
- 地址解析协议ARP(已知IP地址,找到对应的MAC地址)
- 路由信息协议RIP(一种小型的内部路由协议)
- 动态主机配置协议DHCP(用于自动配置IP地址)
为避免广播风暴需要分割广播域,常有的分割广播域的方法有
-
使用路由器隔离广播域,路由器工作在网络层,默认情况下不对广播数据包进行转发,但是路由器成本高
-
虚拟局域网VLAN技术,是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求
11.2 虚拟局域网VLAN的实现机制
通过路由器上的Access、Trunk、Hybrid三个端口实现