3.1 数据链路层的基本概念
1.数据链路层的数据发送模型
- 主机H1想要给主机H2拷数据的过程如下:
(此为应用层与应用层之间的通讯)
–>在传输层分段
–>在网络层分地址
–>在链路层加MAC地址封装成帧
–>然后转化为比特流
–>传送到路由器需要解信息
–>继续发送时选择好一个路口再封装信息成比特流发送出去
(此章只关心如何封装,不考虑物理层的复用方式和传输的介质)
2.数据链路层的信道类型
- 信道类型主要有两种:
–>点对点信道:这种信道使用一对一的点对点通信方式
–>广播信道:这种信道使用一对多的广播通信方式,必须使用专用的共享信道协议来协调这些主机的数据发送
3.链路与数据链路
- 链路(link)
是一条点到点的物理线路段,中间没有任何其他的交换节点。一条链路只是一条通路的一个组成部分。
- 数据链路(data link)
除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。最常用的方法是使用适配器(网卡)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。
4.帧
数据链路层传送的是帧
(在网络层,给数据包增加了接收端和发送端的IP地址。在数据链路层里,增加了帧头帧尾,MAC地址和校验值。)
–>数据报装入的时候会增加一个帧头帧尾(帧的开始,帧的结束)
–>物理层会将帧变成比特流
–>传送结束后掐头去尾上传得到数据
3.2数据链路层的三个基本问题
问题一、封装成帧
- 封装成帧(framing)就是在一段数据的前后分别添加手首部和尾部后然后构成了一个帧。确定帧的界限。
- 首部和尾部的一个重要作用就是进行帧定界
问题二、透明传输(字节填充解决)
透明传输是指传输的过程中增加了别人不知道的标志。
- 帧的收发可能会出现的问题:
- 用字节填充解决透明传输的问题
发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(十六进制数1B)。
字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在数据送往网络层之前杀出插入的转义字符。
如果转义字符也出现在数据之中,那么应该在转义字符前插入一个转义字符。当接收端收到连续的两个转义字符时,就删除前面的那一个。
问题三、差错控制(CRC技术解决)
传输过程中可能会产生bit差错:1可能会变成0,而0也可能变成1
在一段时间内,传输错误的比特率占所传输比特总数的比率称为误码率BER(bit error rate)。
误码率和信噪比的关系很大。
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检验措施。
循环冗余检验CRC
–>分析:
除数必须比被除数后面所增加的0个数多以为。除数是任意确定的是不限制的。进行计算时相同的为0不同的为1。(11为0,01和10都为1,而00为0)。如果不够除是时候,商一个0相当于除一个0000,又相当于除数原封不动的移下来。
–>接受:
上图的001就是FCS帧检验序列。接收端计算101001001(也就是原数据加上FCS)除以1101,如果商为0,意味着传输过程没有差错,就接受,否则丢弃。
–>检测:
余数为0,结果正确。
小结
不能确定出错的bit的是哪一位;
可能会出错,但只要经过严格的挑选,并且除数位数足够大,就可以极大减少出错概率;(比如如果除数是2,极其容易出现错误)
CRC只能做到无差错接受(意思是传输过程没有差错,有差错的一律丢弃);
要做到可靠传输,必须加上确认和重传机制。
3.3PPP协议—(使用点对点信道的数据链路层)
现在全世界使用得最多的数据链路层协议是点对点协议PPP协议(Point-to-Point Protocol)
用户使用拨号电话线接入因特网时,一般都是使用PPP协议。
(可以记账,具有身份验证的功能)
(1)PPP协议(point to point protocol):
是数据链路层协议,例如用户使用拨号上网。
(2)PPP协议应该满足:
简单;封装成帧;透明性;多种网络层协议;多种类型链路;差错检验;检测连接状态;最大传送单元;网络层地址协商;数据压缩协商;
(3)PPP协议不需要满足:
纠错;流量控制;序号;多点链接;半双工或单工连接。
(4)PPP协议的组层部分:
数据链路层协议可以用于异步串行或同步串行介质;
使用LCP(链路控制协议)建立并维护数据链路连接,可以实现身份验证和欠费管理;
网络控制协议(NCP)允许在点到点连接上使用多种网络层协议,如下图;
(其中,链路控制协议复制身份验证。其通过之后,网络控制协议才可以正常通)
(5)PPP协议帧格式
标志字段F = 0x7E(PPP协议里面头尾是一样的)
地址字段A = 0xFF,它并不起作用
控制字段C = 0x03
PPP协议是面向字节的,所以所有的PPP帧的长度都是整数字节。
(6)字节填充(类似于透明传输)
此时,信息部分是以字节为单位的。
将信息字段中出现的每个0x7E字节转变成为2字节序列(0x7D,0x5E);
将信息字段中出现的每个0x7D字节转变成为2字节序列(0x7D,0x5D);
将信息字段中出现的每个ASCII码控制字符(小于0x20字符),在前面加入一个0x7D,同时将该字符的编码加以改变
(7)0比特填充(类似于透明传输)
此时,信息部分是二进制流。PPP协议在SONET/SDH链路时,是使用同步传输。(避免出现7e)
在发送端,只要发现有5个连续的1,则填充一个0,接收端删掉对应的0。
(8)PPP协议不使用序号和确认机制的原因
在数据链路层出现错误的概率不大时,使用较简单的PPP协议较为合理;
在Internet环境下,PPP的信息字段放入的数据是IP数据报。数据链路层的可靠传输并不能保证网络层的传输也是可靠的;
帧检验序列FCS字段可以保证无差错接受。
(9)PPP协议的工作状态
–>当用户拨号接入ISP(网络运营商)时,路由器的调制解调器对拨号进行确认,建立物理连接;
–>PC机箱路由器发送一些列的LCP(链路控制协议)分组(封装成多个PPP帧);
–>这些分组及其响应选择一些PPP参数,和进行网络层配置,NCP(网络控制协议)给新接入的PC机分配一个临时的IP地址,使PC机成为Internet上的一个主机;
–>通信完毕后,NCP释放网络层连接,收回原来分配出去的IP地址;接着,LCP释放数据链路层连接;最后释放的事物理层连接。
实验参考:配置路由器接口使用ppp协议封装
3.4使用广播信道的数据链路层(局域网)
1、局域网的拓扑结构
其中的总线型是最早的
2、局域网的特点与优点
- 局域网最主要的特点是:
网络为一个单位所拥有,且地理范围和站点数目均有限。
- 局域网具有以下的主要优点:
1)具有广播功能,从一个站点可以很方便地访问全网。局域网上的主机可共享连接局域网上的各种硬件和软件资源。
2)便于系统的扩展和逐渐地演变,个设备的位置可灵活调整和改变。
3)提高了系统的可靠性、可用性和生存性。
3、共享通信媒体
静态划分信道(麻烦):
频分复用;时分复用;波分复用;码分复用;
动态媒体接入控制(多点接入):
随机接入(主要是以太网);受控接入,如多点线路探询(polling),轮询(不采用了)。
4、认识以太网
最初的以太网是将许多计算机都连接到一根总线上,当初认为这样连接即简单又可靠,因为总线上没有有源器件。
总线上每一个主机都能检测到B发送的数据。但是只有D的地址和数据帧首部写入的地址一致,所以只有D接收。其余计算机都能检测到这不是发送给他们的数据帧,所以就丢弃这个数据帧。
这是一种具有广播特性的总线上实现了一对一通信。这种方式不安全。
优点:不用划分信道
缺点:一个链路上,只能一个发一个收,且安全性能不太好。
5、带冲突检测的载波监听/碰撞检测
以太网使用CSMA/CD协议
- CSMA/CD:
Carrier Sense Multiple Access with Collision Detection
- 多点接入:
许多计算机以多点接入的方式连接在一根总线上。
- 载波监听:
每一个站在发送数据之前都先要用电子技术检测一下总线时候有其它计算机在发送数据信号,如果有则不发送数据,以免发生碰撞;
- 碰撞检测
碰撞检测就是计算机边发送数据边检测信道上信号电压的大小。
–>当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大;
–>当一个站检测到信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站在同时发送数据,表明产生了碰撞;
–>碰撞就是冲突,碰撞检测也称冲突检测。
检测到碰撞后:
–>在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息;
–>每一个正在发送数据的站,一旦发现总线上出现了碰撞,就立即停止发送,避免浪费网络资源,等待一个随机的时间后再次发送。
6、传播时延对载波监听的影响
网线越长,发现冲突的时间就越长,所以以太网不超过100米。
7、CSMA/CD的重要特性
使用CSMA/CD协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工);
每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能;
这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。
8、争用期
最先发送数据帧的站,在发送数据帧后至多经过时间2t(2倍的端到端往返时延)就可知道发送的数据帧是否发生了碰撞。
经过争用期这段时间还没有检测到碰撞,就可以肯定不会发生碰撞;
- 以太网的争用期:
->以太网的端到端往返时延2t称为争用期,或碰撞窗口,通常取51.2微秒为争用期的长度;如果网线过长,会导致争用期时间的延长,这也是为什么网线一般不超过100m;
->对于10Mb/s的以太网,在争用期可以发送512bit,也就是64 byte;
->以太网在发送数据的时候,若前64字节没有冲突,后续也不会发生冲突;
- 最短有效帧长:
->如果发生冲突,一定是前64字节;
->由于一旦发生冲突就立刻停止,所以已发送的数据一定小雨64字节;
->以太网规定了最短有效帧长为64字节,凡事小雨64字节的帧一定是因为冲突而异常终止的无效帧。
9、二进制指数类型退避算法
发送碰撞的站在停止发送数据后,要推迟一个随机事件才能发送数据。
–>确定基本退避时间,一般是争用期2t;
–>定义参数k = min(重传次数,10); k最大的取值是10,超过了10就不再扩大
–>从整数集合{0,1,…,2^k-1}中随机取出一个数,记为r,重传所需的时延就是r倍的基本退避时间;
–>当重传达16次时仍不能成功时就丢弃该帧,并向高层报告。
其中:重传次数从1开始,如果每次两台机器取值都恰巧一样,则其整数集合可拿取的随机数会越来越大。
3.5以太网
1、以太网的两个标准
DIX Ethernet V2一般是指这个。
IEEE 802.3 两个标准差别很小。
以太网 是满足DIX Ethernet V2标准的局域网。
2、以太网与数据链路层的2个子层
为了使数据链路层更好的适应多种局域网标准,802委员会把局域网拆分为:
->逻辑链路控制LLC(Logical Link Control)子层;
->媒体接入控制MAC(Medium Access Control)子层。
与接入到传输媒体有关的内容都放在MAC子层上,而LLC子层与传输媒体无关,不管什么协议的局域网对LLC子层都是透明的;
由于局域网标准一般是DIX Ethernet V2而不是IEEE 802.3,所以802.2标准的LLC子层作用已经不大了,很多厂商适配器没有LLC协议;
3、以太网提供的服务
以太网提供服务是不可靠的交付,即最大努力的交付;
当接收站收到的有差错的数据帧时就丢弃此帧,其它什么也不做,差错的纠正由高层来处理;
如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新帧发送。
(差错校验由两端的计算机决定的,中间的设备不管,只会把数据丢弃。)
4、以太网的星型拓扑结构
物理上是星型,逻辑上是总线型。
为了降低成本,最初由粗的同轴电缆变成细的同轴电缆最后变成无屏蔽双绞线。每个站需要用两对双绞线,分别用于发送和接收;
在星形的中心增加了一种可靠性高的设备,为集线器(hub)。
(了解即可,现在基本用交换机,不再使用集线器)
5、集线器的特点
集线器使用电子器件来模拟实际电缆线的工作,因此整个系统仍然是像一个传统的以太网那样运行。由于集线器使用了大规模集成电路芯片,所以可靠性更高;
使用集线器逻辑上仍然是一个总线网,各工作站使用的还是CSMA/CD协议,共享逻辑网络上的总线;
集线器像一个多接口的转发器,工作在物理层。
6、10Base-T 基于集线器的以太网标准(10倍以太网)
它的通信距离稍短,每个站到集线器的距离不超过100m。
这种10MB/s的无屏蔽双绞线星形网的出现,能降低成本和提高可靠性。
10Base-T的出现有很大的意义,类似标准有100Base-FX(代表快速以太网),10Base-T,100Base-T4.
7、以太网的信道利用率
争用期长度为2t;帧长为L bit,数据发送旅为C b/s,帧的发送时间为L/C = T0 秒。
一个帧从开始发送,经可能发生的碰撞后,将再次重传多次,直到发送成功且信道转为空闲(即再经过t使得信道上没有信号在传播)时为止,是发送一帧所需的平均时间。
定义a = t / T0,是单程端到端时延t与帧发送时间T0的比值。a越小,说明碰撞检测越快,信道利用率高。
当数据率(网速)一定时,以太网的连线长度受到限制,否则t会太长;
以太网的帧长不能太短,否则T0太小,使a太大。
8、信道利用率的最大值
假设理想状态下,以太网上的各站发送的数据都不会碰撞,一旦总线空闲就能有站立即发送数据,所以没有争用期;
发送一帧需要占用总线T0+t,而帧本身需要发送时间为T0,于是理想情况下极限信道利用率Smax = T0 / (T0 + t) = 1 / (1 + a).
3.6MAC层
1、MAC层的硬件地址(MAC地址)
硬件地址 = 物理地址 = MAC地址
MAC地址前3个字节(24位)是厂家分配的地址字段,后3个字节(24位)是厂家自定义,称为扩展标识符;
一个地址块可以产生2^24个地址,这种48位地址称为MAC-48,通用名为EUI-48,这就是MAC地址;
MAC地址实际上是每一个站的名字或标识符。
- 查看MAC地址 命令ipconfig /all
2、修改MAC地址
win10为例
打开网络适配器
先点属性再点配置
填好MAC地址值就可以了,记得将-去掉
老师的win7例子
(如果MAC地址冲突是无法正常上网的。特殊情况下可以借用别人的MAC地址来达到上网的目的)
3、适配器检查MAC地址
- 适配器从网络上每收到一个MAC帧就要用硬件检查MAC帧中的MAC地址:
->如果是发往本站的帧就收下,然后进行其它处理;
->否则丢弃。
- 发往本站的帧包括:
->单播帧(unicast)(一对一)
->广播帧(broadcast)(一对全体)(全1,收到了FFFFFF就是表示给自己的)
->多播帧(multicast)(一对多)
4、MAC帧格式
–>类型指明了里面是什么协议
–>FCS是帧校验序列
–>以太网的帧最短是64字节,而现在目的地址,原地址,类型和FCS占了18字节,所以IP数据报有效数据最小是46字节。
–>后面没有信号就代表结束,所以只要头,没有尾
前8个字节的作用是实现比特同步,第一个字段共7个字节,称为前同步码,作用是实现快速MAC帧的比特同步;第二个字段是帧开始定界符,表示后面的信息是MAC帧。
5、数据帧的抓包示例
示例一:网络不通的原因,某机器中病毒疯狂发广播占用了信道,导致网络时通时不通。
解决方法一:(最原始的方法)将每个机器把电源,让其不能工作,再ping网络,直到可以ping通时,就找到了发广播包的机器了。
抓包界面:
可以看见,数据包的内容是china,可以看见里面的内容。
frame帧是指所有的内容。
以上分别对应着:
–>整个帧内容
–>以太网地址(包括目的地址,原地址,协议类型)
–>网络层地址
–>传输层地址
6、无效的MAC帧
帧的长度不是整数个字节;
用收到的帧检验序列FCS查出有错误;
数据字段的长度不在46-1518字节内;
对于检查出来的无效MAC帧简单的丢弃。以太网不负责重传丢弃的帧。
7、帧间最小间隔
为9.6微秒。相当于96bit的发送时间。
一个站在检测到总线空闲时,还需要等待9.6微秒后才能再次发送数据,这样做是为了使刚刚收到的数据帧的站接收缓存来得及清理,做好接收下一帧的准备。(也就是缓存处理做准备)
3.7扩展以太网
1、在物理层考虑扩展
物理的扩展
主机使用光纤和一对光纤调制解调器连接到集线器。
数量的扩展
集线器集联:使网络中计算机增加,变成一个大的冲突域,冲突域数量变少了,但是数量增加了,会造成效率降低。(越多效率越低,不适合使用超过30个集线器)
2、 在数据链路层考虑扩展
使用网桥
在数据链路层扩展局域网是使用网桥。网桥工作在数据链路层,他根据MAC帧的目的地址对收到的帧进行转发。网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是现检查此帧的目的MAC地址,然后再确定将该帧转发到对应的接口。
网桥的自学习算法:
好处:
–>过滤通信量
–>扩大了物理范围
–>提高了可靠性
–>可互联不同物理层,不同MAC子层和不同速率
坏处:
–>存储转发增加了时延
–>在MAC地址子层并没有流量控制功能
–>具有不同MAC子层的网段桥接在一起时时延更大
–>网桥值适合于用户数不太多和通信量不太大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞。这就是所谓的广播风暴。
透明网桥(transparent )
透明指局域网上的站点不知道所发送的帧将经过几个网桥,因为网桥对于各站点是看不见的。网桥的出现对计算机的通讯没有影响。他们不知道中间过了几个网桥。
透明网桥是一种即插即用的设备,标准是IEEE 802.1D。
透明网桥使用了生成树算法。避免产生转发的帧在网络中不停的转圈。
生产树算法:(树型结构不存在环线结构)
交换机
随着网桥的接口的增加, 后来网桥和集线器合并了,计算机可以直接和交换机连接,这就是交换机。(接口足够多的网桥)
交换机就是网桥和集线器的合并升级版,能全双工,安全通信,可以同时收发;
端口带宽独享;
安全;
基于MAC地址转发;
通过学习构建MAC地址表。
查看交换机的MAC地址表
动态学习到,检测出MAC地址(命令是 show mac)
可见集线器上面连着三个计算机。下次想要通讯交换机就会直接转到对应的接口,大大的提高了安全性,数据包不会被捕捉。
远程重启命令:shutdown -m \10.7.1.53 -r
启动远程桌面
ctrl + R ;然后输入mstsc
便会弹出远程桌面连接程序
3.8虚拟局域网(VLAN)与局域网(LAN)
交换机的使用是的VLAN的创建称为可能
虚拟局域网VLAN是有一些局域网网段构成的与物理位置无关的逻辑组。
–>这些网段具有某些共同的需求
–>每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的工作站是属于那一个VLAN
虚拟局域网其实只是局域网给用户提供的一个服务,而并不是一种新型局域网。
1、VLAN示意图
一个VLAN = 一个广播域 = 逻辑网段(子网)
2、创建和管理VLAN
对于不同的部分分层不同的VLAN,但是接入的同一个交换机。尽管如此,由于VLAN的作用,部门之间的不会造成干扰的,相当于两个交换机。部门与部门之间数据链路层就不通了。
操作:查看vlan
命令:show vlan
可见现在所有的口(Fa0/1到Fa0/24)都在同一个vlan里面,所有计算机之间是相互可以ping通的。
操作:创建了一个vlan2
命令:config t + vlan 2
可以看见已经创建了一个虚拟局域网vlan2
操作:将13-24口放在vlan2中,其余保持在vlan1中不变
命令:
config t
interface range fastEthernet 0/13 -24
switchport access vlan 2
可以看见,已经将接口分好了两个vlan
结果:
同一个虚拟局域网之间可以相互的ping通,但是vlan1不可以ping通vlan2的计算机。也就是同一个vlan可以通讯,不同的vlan不可以通讯。
3、跨交换机的VLAN
如上所示:VLAN的数据帧在通讯时会添加上标记,所以可以跨交换机进行通讯。
交换机的端口有两种类型:
- 访问端口:
访问端口只能属于某一个VLAN,它只能承载某一个VLAN的流量,连接访问端口的链路称为访问链路。
- 中继端口:
中继端口能够同时承载多个VLAN的流量,连接中继端口的链路称为干道链路。数据帧进入干道链路时需要添加标记(VLAN ID),离开干道时去掉帧标记,这个过程对计算机来说是透明的。
两个vlan相当于下图所示:
例子一:
中继端口与访问端口示意图:(不同计算机之前必须通过路由器)
例子二:
总结:交换机组建的网络,如果需要多个VLAN通过的链路就需要配置为干道链路。如果链路上只需要单一VLAN的数据通过就可以配置为访问链路。
3.9高速以太网
1、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类线。
2、100Base-T以太网的特点
可以实现全双工通信(注意,如果交换机上某一路连接着集线器(半双工),则这一路不能实现全双工)而无冲突,此时不使用CSMA/CD协议。
MAC帧格式不变,仍是802.3 标准。
最短帧长度不变,但是一个网段的最大电缆长度减少到100m。
帧间间隔从9.6微秒缩小到0.96微秒。
注意:可以人工指定网卡是全双工还是半双工,或者是10M还是100M的速度。(默认是自动协商,不过设置错了之后网络是不通的)
3、吉比特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。
4、10Gbit/s以太网
MAC帧格式不变,仍是802.3 标准。
使用光纤而不是铜线。
只能工作在全双工方式,没有争用问题。
它的出现使工作范围从局域网扩大到城域网和广域网,实现了端到端的以太网传输。
优点是:技术成熟;互操作性好;广域网中使用以太网便宜;统一的帧格式。
- 以太网从10Mb/s到10Gb/s的演变说明了
可拓展性;灵活性(多种传输媒体,全/半双工,共享/交换);易于安装;稳健性好。
5、Cisco建网3层模型
6、交换机上实现的接入安全
- 将显示的MAC地址和交换机端口进行绑定
命令操作如下:
Switch#config t (进入全局配置模式)
Switch(config)#interface range fastEthernet 0/1 - 4 (对1-4接口都进行相同的操作)
Switch(config-if-range)#switchport mode access (将交换机端口设置为access,明确端口连接的是计算机)
Switch(config-if-range)#switchport port-security (在交换机端口启用安全)
Switch(config-if-range)#switchport port-security violation shutdown (违反安全规则猴禁用)
Switch(config-if-range)#switchport port-security mac-address sticky (将上面的动态MAC地址和端口进行绑定)
- 操作:显示MAC地址表
命令:show mac-address-table
此时,MAC地址表不会再学习,而是出于STATIC固定的状态,也就是不能更换MAC地址,不能更换电脑了。
参考链接:
https://www.bilibili.com/video/av23124815
https://blog.csdn.net/iwanderu/article/details/103812828