三. 数据链路层
三.1基本概念
- 点到点信道: 电脑之间连接
- 广播信道: 一对多,由共享信道协议(如集线器)协调主机间的数据发送
三个基本问题
有头(SOH)有尾(EOT)
-
如何封装成帧(framing)
-
透明传输
如果帧数据中包含和SOH/EOT一样的数据,会在数据前添加Esc转义(类似java中的"\")传入和输出时会自动添加/删除转义字符,对用户没有影响(在数据链路层添加数据,解析的时候删除数据,用户看不到,所谓透明传输)
-
差错控制
误码率(Bit Error Rate): 一段时间内,传输错误的bit所占bit总数的比率
数据链路层只负责检测是否有错误,如果错误就会把数据丢掉,不会告诉发送方重新传数据-
奇偶校验
所谓奇偶校验就是在发送的每一个字节后都加上一位,使得每个字节中1的个数为奇数个或偶数个。
比如我们要发送的字节是0x1a,二进制表示为0001 1010。采用奇校验,则在数据后补上个0,数据变为0001 1010 0,数据中1的个数为奇数个(3个)。
采用偶校验,则在数据后补上个1,数据变为0001 1010 1,数据中1的个数为偶数个(4个)。
奇偶校验的缺点也很明显,首先,它对错误的检测概率大约只有50%。也就是只有一半的错误它能够检测出来。另外,每传输一个字节都要附加一位校验位,对传输效率的影响很大。因此,在高速数据通讯中很少采用奇偶校验。奇偶校验优点也很明显,它很简单,因此可以用硬件来实现,这样可以减少软件的负担。因此,奇偶校验也被广泛的应用着。
奇偶校验其实就是CRC 校验的一种(CRC-1)。
-
循环冗余检验(CRC:Cyclic Redundancy Check,除以除数使用余数校验检查)
- 数据信息M(x)为一个n位的二进制数据,将M(x)左移k位后,用一个约定的“生成多项式”G(x)相除,G(x)是一个k+1位的二进制数,相除后得到的k位余数就是校验位。校验位拼接到M(x)后,形成一个n+k位的代码,称该代码为循环冗余校验( CRC ) 码,也称(n+k,n)码。
- 一个CRC码一定能被生成多项式整除,当数据和校验位一起送到接受端后,只要将接受到的数据和校验位用同样的生成多项式相除,如果正好除尽,表明没有发生错误;若除不尽,则表明某些数据位发生了错误。通常要求重传一次。
CRC 算法的基本思想是将传输的数据当做一个位数很长的数。将这个数除以另一个数。得到的余数作为校验数据附加到原数据后面。CRC校验核心就是实现无借位的除法运算。即异或运算。可以在硬件层实现异或运算
采用模2运算就是结果除以2后取余数。比如3 mod 2 = 1。就是我们通常所说的异或运算。相同为0,不同为1.在CRC算法中,1101 这个被除数有一个专有名称叫做“生成多项式”。生成项的最低位也必须是1,这是规定的。1101就是CRC3=X3+X2+1。X=2。
生成多项式经常会说到多项式的位宽(Width,简记为W),这个位宽不是多项式对应的二进制数的位数,而是位数减1。文献中多用16进制简写法来表示多项式,因为生成多项式的最高位肯定为1,最高位的位置由位宽可知,故在简记式中,将最高的1统一去掉了,如CRC32的生成多项式简记为04C11DB7实际上表示的是104C11DB7。
比如CRC8中用到的位宽为8的生成多项式,其实对应得二进制数有九位:100110001。如CRC1位宽为1,生成的数有11,X^1+1。11对应的就是奇偶校验。
CRC是一种无比特差错,而不是无传输差错的检测机制,路由器如果传输过程中发生数据错误,直接丢掉包,由上层程序辅助重传
#### 三.2 两种数据链路层(传输方式)
-
-
PPP协议(点到点 Point-to-Point Protocol)
电话拨号上网,有登陆账户密码,进行身份验证,网线直接接到ISP(因特网服务提供商,如电信,移动),由ISP动态分配ip地址,会记录使用ip的账号密码联网时间
ppp协议的帧格式
如果传输的是字节
7E代表开始,FF和03是固定的
协议两个字节,代表信息部分传递的是什么数据(如验证数据,登录数据或者数据包)
通过添加0x7D区分结尾转义,实现透明传输如果传输的是比特流
ppp使用SONET/SDH链路进行同步传输(连续的比特流传输,不使用字节传输)时,ppp协议采用零比特填充方法(传输时出现连续的5个1,就在1后面添加一个零,接收端接收到连续的5个1,再去掉后面的0解析数据)来实现透明传输
0111 / 1110 >>> 7E 0111 / 11010 >>> 零比特填充方法 防止解析的时候解析成7E当做帧传输结束
PPP协议不使用序号和确认机制(成功返回成功,失败重传,不纠错而采用错了就扔掉数据)出于以下考虑:
- HDLC协议
三.3 以太网
-
局域网
-
连接方式: 现在多用星形网
-
局域网特点
- 一个单位(公司)所拥有,地理范围和连接数量均有限
- 具有广播功能,局域网内计算机可以共享网上的所以软硬件资源
- 提高系统可靠性,生存性和可用性
-
共享通讯媒体
- 静态划分信道 (不适合现在通讯)
- 频分复用
- 时分复用
- 码分复用
- 波分复用
- 动态媒体接入控制(多点接入)
- 随机接入(主要被以太网采用)
- 受控接入(目前不被采用)
- 静态划分信道 (不适合现在通讯)
-
-
以太网(不超过100米)
-
以太网通讯
整个局域网广播通讯,通过mac地址指定某台计算机接受数据,其他计算机可以通过抓包接受到数据,通讯不安全- 多台计算机通讯
-
载波监听: 有其他计算机间进行通讯了,自己就不通讯,通讯冲突就都暂停,等一个随机时间在各自通讯
因为会有冲突,两点通讯时发现冲突的最大时间是两点通讯时间的2倍
如果发长度小于64字节会补零
-
多点接入/碰撞检测 : 电压升高就判断为冲突
-
CSMA/CD协议(集线器就是使用此协议): 半双工通讯
4. MAC层
硬件地址(物流地址): 网卡出厂时录入芯片,全球唯一,48位二进制组成,前24位代表厂家,后24位厂家自己制定,用12位16进制表示
MAC地址帧格式: 以太网最小传64字节,64-(6+6+2+4)=46,最小数据报为46字节
以太网帧传输采用曼彻斯特编码,只需要有帧开始定界符
可以使用 Ethereal工具抓包,使用 ping XXX.XXX.XXX.XXX -t 一直ping网络,用抓包工具查看问题
可以看到是哪台计算机一直占用网络(比如有计算机中毒一直在Broadcast广播以太网,占用网络),影响正常通行
-
-
以太网扩展
-
网桥
网桥将多个以太网连接,在同一个以太网通讯时冲突域隔离
-
-
交换机(Switch)
交换机记录小每个接口接入的mac地址,通讯时直接接入指定的计算机,没有碰撞域,如果同时通讯可以排队,不再是全局域网都能收到数据,安全,快速
-
虚拟局域网VLAN
一个交换机分成多个虚拟局域网(VLAN内是同一个广播域(逻辑网段)),同一个VLAN可以跨交换机通讯
交换机间用一根线连接,在帧中添加关于虚拟局域网的数据,这样多个交换机间的同一网段的局域网可以进行广播通讯,交换机端口的三种链路类型 以太网端口有三种链路类型:access、trunk、hybird.
Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口
Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口
Hybrid类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。
Hybrid端口和Trunk端口在接收数据时,处理方法是一样的,唯一不同之处在于发送数据时:Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。 缺省VLAN: Access端口只属于1个VLAN,所以它的缺省VLAN就是它所在的VLAN,不用设置;Hybrid端口和Trunk端口属于多个VLAN,所以需要设置缺省VLAN ID.缺省情况下,Hybrid端口和Trunk端口的缺省VLAN为VLAN1; 如果设置了端口的缺省VLAN ID,当端口接收到不带VLAN Tag的报文后,则将报文转发到属于缺省VLAN的端口;当端口发送带有VLAN Tag的报文时,如果该报文的VLAN ID与端口缺省的VLAN ID相同,则系统将去掉报文的VLAN Tag,然后再发送该报文。
交换机接口出入数据处理过程:
-
Acess端口收报文:收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则直接丢弃(缺省)
Acess端口发报文: 将报文的VLAN信息剥离,直接发送出去
-
trunk端口收报文: 收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有判断该trunk端口是否允许该VLAN的数据进入:如果可以则转发,否则丢弃
trunk端口发报文: 比较端口的PVID和将要发送报文的VLAN信息,如果两者相等则剥离VLAN信息,再发送,如果不相等则直接发送 -
hybrid端口收报文:
收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则判断该hybrid端口是否允许该VLAN的数据进入:如果可以则转发,否则丢弃(此时端口上的untag配置是不用考虑的,untag配置只对发送报文时起作用)
hybrid端口发报文: 1、判断该VLAN在本端口的属性(disp interface 即可看到该端口对哪些VLAN是untag,
哪些VLAN是tag) 2、如果是untag则剥离VLAN信息,再发送,如果是tag则直接发送
-
-
高速以太网
交换机端口有存储转发功能,不会有冲突问题,计算机可以设置交互速度和全双工还是半双工,如果设置错误就没法通讯
数据链路层可以控制连接交换机的MAC地址个数,超过几个地址可以shutdown网络