在链路层中,有两种截然不同类型的链路层信道。
1. 由广播信道组成,常用在局域网(Local Area Network, LAN)、无线LAN、卫星网和混合光纤电缆接入网中。
2. 点对点通信链路,例如两台路由器之间的通信链路或一个住宅的拨号调制解调器与一台ISP路由器之间的通信链路。
以太网:目前最流行的有线LAN技术。
把沿着通信路径连接相邻节点的通信信道称为链路(link)。为了将一个数据报从源主机传输到目的主机,数据报必须通过沿端到端路径上的每段链路传输。
链路层协议用来在独立的链路上移动数据报。
链路层协议定义了在链路两端的节点之间交互的分组格式,以及当发送和接收分组时这些节点采取的动作。
链路层协议交换的数据单元称为帧,每个链路层帧通常封装了一个网络层的数据报。
链路层协议能够提供的可能服务包括:
- 成帧。几乎所有的链路层协议都在经链路传送之前,将每个网络层数据报用链路层帧封装起来。
- 链路接入。
- 可靠交付。
- 流量控制。
- 差错检测。
- 差错纠正。
- 半双工和全双工。
链路层主体部分是在网络适配器中实现的,网络适配器也称为网络接口卡。
网络适配器的内核是链路层控制器,该控制器通常是实现了许多链路层服务的单个特定目的的芯片。链路层控制器的许多功能是用硬件实现的。 链路层是一种硬件和软件的结合体。
在发送方,控制器取得了由协议栈较高层生成并存储在主机内存中的数据报,在链路层帧中封装该数据报,然后遵循链路接入协议将该帧传进通信链路中。
在接收端,控制器接收整个帧,提取出整个网络层数据报。
对从一个节点发送到另一个物理上连接的邻近节点的链路层帧,检测和纠正其中的比特差错。
在发送节点,为避免比特差错,使用差错检测和纠错比特来增强数据 D 。
在传输数据中检测差错的 3 中技术:
用来描述差错检测和纠错隐含的基本思想。
发送方只需包含一个附加的比特,选择它的值,使得这 d+1 个比特(初始信息加上一个校验比特)中的 1 的总数是偶数。
通常更多的应用于运输层。
d比特数据被认为是一个k比特整数序列。一个简单的检验和方法就是将这k比特整数加起来,并且用得到的和作为差错检测比特。
互联网检验和就基于这种方法,即数据中的两个字节作为16比特整数对待并求和。这个和的反码形成了携带在报文段首部的互联网校验和。接收方通过对接收的数据(包括检验和)的和取反码,并且检测其结果是否为全1比特来检测检验和。
检验和方法需要相对小的分组开销。
为什么运输层使用检验和而链路层使用CRC?
运输层通常在主机中作为用户操作系统的一部分并用软件实现。链路层的差错检测在适配器中用专用的硬件实现,它能够快速地执行更复杂的CRC操作。
通常更多的应用在适配器中的链路层。
循环冗余检测(Cyclic Redundancy Check, CRC)编码,也称为多项式编码,因为该编码能够将要发送的比特串看作是系数为 0 和 1 的一个多项式,对比特串的操作被解释为多项式算术。
发送方和接收方首先必须协商一个 r+1 比特模式,称为生成多项式,表示为G 。
对于一个给定的数据段D,发送方要选择 r 个附加比特 R ,并将它们附加到 D 上,使得得到的 d+r 比特模式(被解释为一个二进制数)用模 2 算术恰好能被 G 整除。
用 CRC 进行差错检测的过程很简单:接收方用 G 去除接收到的 d+r 比特。如果余数为非零,接收方知道出现差错,否则认为数据正确而被接受。
点对点链路:由链路一端的单个发送方和链路另一端的单个接收方组成。
广播链路:它能够让多个发送和接收节点都连接到相同的、单一的、共享的广播信道上。
这里使用术语“广播”,是因为当任何一个节点传输一个帧时,该信道广播该帧,每个其他节点都收到一个拷贝。
多路访问协议:节点通过这些协议来规范它们在共享的广播信道上的传输行为。
所有的节点够能够传输帧,两个以上的节点可能会同时传输帧。当发生这种情况时,所有节点同时接到多个帧,也就是说,传输的帧在所有的接收方处碰撞了。
多路访问协议3种类型:信道划分协议;随机接入协议;轮流协议。
时分多路复用(TDM)和频分多路复用(FDM),是能够在所有共享节点之间用于划分广播信道带宽的技术。
时分多路复用(TDM)
TDM 将时间划分为时间帧,并进一步划分每个时间帧为 N 个时隙(slot)。
通常,时隙长度的选择通常使得在一个时隙内能够传输单个分组。
频分多路复用(FDM)
将 R bps 信道划分为不同的频段(每个频段具有 R/N 带宽),并把每个频率分配给 N 个节点中的一个。
码分多址(Code Division Multiple Access, CDMA)
CDMA对每个节点分配一种不同的编码,然后每个节点用它唯一的编码来对它发送的数据进行编码。如果精心选择这些编码,CDMA网络具有一种奇妙的特性,即不同的节点能够同时传输。
第二类多路访问协议是随机接入协议。
当有碰撞时,涉及碰撞的每个节点反复地重发它的帧(也就是分组),直到该帧无碰撞地通过为止。但是当一个节点经受一次碰撞时,它不必立刻重发该帧。相反,它在重发该帧之前等待一个随机时延。
1. 时隙ALOHA
最简单的随机接入协议之一 – 时隙ALOHA协议。
2. ALOHA
3. 载波侦听多路访问(CSMA)
载波侦听:即一个节点在传输前先听信道。如果来自另一个节点的帧正向信道上发送,节点则等待一段随机时间,然后再侦听信道。如果侦听到该信道是空闲的,该节点则开始传输。
碰撞检测:即一个传输节点在传输时一直在侦听信道。如果它检测到另一个节点正在传输干扰帧,它就停止传输,用某个协议来确定它应该什么时候再尝试下一次传输。
两种轮流协议:
轮询协议:要求这些节点之一要被指定为主节点,主节点以循环的方式轮询每个节点。
主节点首先向节点 1 发送一个报文,告诉它能够传输的最大帧数。在节点 1 传输了某些帧后,主节点告诉节点 2 能够传输的最大帧数。
令牌传递协议:在这种协议中没有主节点,一个小的称为令牌的特殊目的帧在节点之间以某种固定的次序进行交换。
例如,节点 1 可能总是把令牌发送给节点 2 ,节点 2 可能总是把令牌发送给节点 3 ,而节点 N 可能总是把令牌发给节点 1 。当一个节点收到令牌时,仅当它有一些帧要发送时,它才持有这个令牌;否则,它立即向下一个节点转发该令牌。
第一类以太网 LAN,基于随机接入。
第二类LAN技术由令牌传递技术组成,包括令牌环以及光纤式分布数据接口。
节点(即主机和路由器)具有链路层地址。
地址解析协议(ARP):将 IP 地址转换为链路层地址。
并不是节点具有MAC地址,而是节点的适配器具有链路层地址。
LAN地址有各种不同的称呼:LAN地址、物理地址、MAC地址。
MAC地址长度为 6 个字节。MAC地址被设计为永久的,但用软件改变一块适配器的MAC地址是可能的。
带有以太网网卡的便携机总具有同样的 MAC 地址;IP 地址具有层次结构(即一个网络部分和一个主机部分),而且当主机移动时,节点的 IP 地址需要改变。
MAC广播地址是 48 个连续的 1 组成的字符串(FF-FF-FF-FF-FF-FF)。
Address Resolution Protocol, ARP
ARP 只为在同一个子网上的节点解析 IP 地址。
每个节点(主机或路由器)的ARP模块都在它的RAM中有一个ARP表,这张表包含 IP 地址到 MAC 地址的映射关系。
例子:
假设节点 222.222.222.220 要向节点 222.222.222.222 发送数据报,但如果 ARP 表中现在没有该目的节点的表项。这种情况下,发送节点用 ARP 协议来解析这个地址。首先,发送节点构造一个称为 ARP 分组的特殊分组。ARP 查询分组的目的是询问子网上的所有其他节点,以确定对应于要解析的 IP 地址的那个 MAC 地址。节点222.222.222.220向它的适配器传递一个ARP查询分组,并且要求适配器用MAC广播地址来发送这个分组。至多一个匹配的节点给查询节点发送回一个带有所希望映射的响应 ARP 分组。
查询 ARP 报文是在广播帧中发送的,而响应ARP报文是在一个标准帧中发送。ARP是即插即用的。
以太网是到目前为止最流行的有线局域网技术。
是不可靠的无连接的服务。
CSMA/CD:以太网的多路访问协议。
转发器能够得到更长的运行距离,而转发器是一种物理层设备,它能在输入端接收信号,并在输出端再生该信号。
交换机转发和过滤
过滤:交换机决定一个帧是应该转发到某个接口还是应当将其丢弃的功能。
转发:决定一个帧应该被导向哪个接口,并把该帧接口移动到这些接口的交换机功能。
借助于交换机表完成。
交换机转发分组时基于 MAC 地址而不是基于 IP 地址。
自学习
交换机的表是自动地、动态地、自治地建立的,即没有来自网络管理员或配置协议的任何干预。
交换机是即插即用设备,因为它们不需要网络管理员或用户的干预。
路由器使用网络层地址转发分组的存储转发分组交换机;交换机使用MAC地址转发分组。
通常,由几百台主机组成的小网络通常有几个LAN网段。对于这些小网络,交换机就足够了,因为它们不要求 IP 地址的任何配置就能使流量局部化并增加总计吞吐量。
但是,在由几千台主机组成的更大网络中通常还包括路由器。