计算机网络——数据链路层

概述

下图是在五层网络体系里数据的传输过程。从数据链路层的角度上,主机H1到主机H2之间的通信,可以看成是4段不同的链路上的通信组成的。

所谓的链路是指:一个节点到相邻节点的一段物理链路,中间没有任何其他的交换节点。同时我们还需要把实现了通信协议的硬件(如网卡)和软件加到链路上,这样就构成了数据链路。

 


链路层概述

点对点信道

点对点通信是一对一通信。在此基础上,数据链路层需要解决三个问题。

封装成帧

我们将数据链路层将交付给网络层的数据单位添加帧头和帧尾的操作,称为封装成帧。添加的目的是为了链路上以帧为单元来传输数据。

差错检测

帧在传输过程中遇到干扰后,可能出现传输差错。发送方基于待发送的数据和检错算法计算出检错码,并将其放入帧尾。如下图中的FCS字段。发送方根据检错码和检测算法,可以判断出帧在传输过程中是否出现误码。

传输差错并不仅仅单指数据链路层中的误码,误码是传输差错的一种,传输差错还包括分组丢失,分组失序,分组重复。

可靠传输

如果接收方检测到有误码,如果链路层向上层提供的是不可靠服务,则仅丢弃该帧。如果提供的是可靠服务,就需要措施来确保接收方主机可以接收被丢弃的帧的正确版本。若能实现发送方发送什么,接收方就能接收什么,我们称为可靠传输。可靠传输的实现协议主要有:停止-等待协议,回退N帧协议,选择重传协议。

(1)一般情况下,有线链路的误码率较低,为减少开销,不要求链路层向上提供可靠传输服务。即便出现误码,可靠传输的问题由上层处理;

无限链路易受干扰,误码率较高,因此要求链路层向上提供可靠传输服务。

(2)其他层也可选择可靠传输

 

广播信道(共享式局域网)

广播信道是一对多信道,一个节点发送的数据能够被广播信道上所有的节点接收到。对于使用广播信道的数据链路层,除了上述3个问题,还有一些问题需要处理

(1)如图所示,主机A,B,C,D,E通过一根主线互联。主机C要给主机D发送帧,代表帧的信号会通过总线传输到其他各主机上。

帧头的目的地址和源地址字段,即为MAC地址(在网卡上)这样主机可以明白该帧是否是发送给自己的。

(2)当总线上出现多台主机同时使用总线来传输帧时,传输信号会产生碰撞。以太网通过使用CSMA/CD协议来协调。

媒体接入控制协议CSMA/CD

CSMA/CD 表示载波监听多点接入 / 碰撞检测。

  • 多点接入 :说明这是总线型网络,许多主机以多点的方式连接到总线上。
  • 载波监听 :每个主机都必须不停地监听信道。在发送前,如果监听到信道正在使用,就必须等待。
  • 碰撞检测 :在发送中,如果监听到信道已有其它主机正在发送数据,就表示发生了碰撞。虽然每个主机在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞。

定义端到端的传播时延为 τ,最先发送的站点最多经过 2τ 就可以知道是否发生了碰撞,称 2τ 为 争用期 。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。而如果发生碰撞,站点要停止发送,等待一段时间再发送。

 

点对点PPP协议

一般的因特网用户通过连接到某个因特网服务提供商ISP(如中国移动等)来接入因特网。ISP已从因特网管理机构申请到一批IP地址。用户计算机获取到ISP分配的合法IP地址后,才能成为因特网上的主机。而用户与ISP通信的数据链路层协议,就是PPP协议。

该协议的帧格式如图所示:

  • 标志字段F:PPP帧的定界符。
  • 协议字段P:指明帧的数据部分交给哪个协议处理。
  • 帧检验序列FCS字段:其值为CRC算法计算出来的校验位,用于检查PPP帧是否存在误码。

(1)透明传输问题

帧使用首部和尾部进行定界,如果帧的数据部分含义和帧首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。因此需要在首尾部相同的内容前面插入转义字符。而如果数据部分也出现转义字符,那么就在转义字符前面再加个转义字符。

(2)循环冗余检验CRC算法

  • 发送方和接收方约定好一个多项式G(x);
  • 发送方基于待发送的数据和多项式计算出冗余码,将其添加到待传输数据的后面一起传输;
  • 接收方通过多项式来计算收到的数据是否产生误码

举例说明:假设多项式G(x)= x^3 + x^2  + 1 = * x^3 + 1 * x^2 + 0 * x + 1 * x^0,多项式的比特串为1101。

假设待发送的信息为101001,我们将1101001除以1101,除后1位的规则:

 

 


交换机

交换机工作在物理链路层,也包括物理层。使用一个或多个以太网交换机连接起来的网络属于同一个广播域。

工作流程

交换机在收到帧后,在帧交换表中查找帧的目的MAC地址对应的接口号,然后通过该接口转发帧。

交换机刚上电启动时,内部的帧交换表是空的,随着网络中各主机间的同学,交换机自学习逐渐建立起交换表,不需要网络管理员手动配置表内容。

下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。

交换机和路由器的区别

  • 交换机利用MAC地址来确定转发数据的目的地址,而路由器是通过IP地址确定数据转发地址
  • 路由器有路由规划功能,如果目的ip不能直接到达,他可以查询路由表,先到达一个中间ip,这样一跳一跳往下走。但是交换机就不能,它只能知道根据配置,找到对应的物理端口(由MAC标示),把包发出去。配置要么是之前配置好的哪个IP对应哪个MAC,如果没有配置好,它就只能广播,所有端口上的主机都会收到广播信号,如果这个IP是自己,那么就给回应(其它不是这个IP的主机则会不做任何回应),这样交换机就知道这个ip是对应这个端口的。

 


虚拟局域网VLAN

随着交换式以太网规模的扩大,广播域相应扩大。而巨大的广播域会带来很多弊端:

  • 广播风暴
  • 难以管理和维护
  • 潜在的安全问题

广播风暴

假设网络中的某个主机要给另一个主机发送帧,但在自己的ARP缓存表中无法查到目的主机的MAC地址。因此要发送ARP广播请求来获取目的MAC地址。ARP广播会传遍整个网络,这就是广播风暴。广播风暴会浪费网络资源和各主机的CPU资源。

TCP/IP协议栈中的很多协议都会使用广播:

  • 地址解析协议ARP
  • 路由信息协议RIP
  • 动态主机配置协议DHCP

由广播风暴问题可以引出 分割广播域的解决方法:

  • 使用路由器可以分割广播域:默认情况下,路由器不对广播数据包进行转发,因此路由器可以分割广播域。但路由器成本较高。
  • 虚拟局域网VLAN

虚拟局域网是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求。

如图所示,1,2,3楼各有一个局域网,通过一个交换机将他们互联成一个更大的局域网。网络中的各主机属于同一个广播域。

我们可以将该局域网划分成两个VLAN,这样同一个VLAN可以广播通信,不同的VLAN不能广播通信。

我们可以使用 VLAN 干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连 VLAN 交换机。IEEE 定义了一种扩展的以太网帧格式 802.1Q,它在标准以太网帧上加进了 4 字节首部 VLAN 标签,用于表示该帧属于哪一个虚拟局域网。

 

 


参考博客

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值