计算机网络——链路层知识总结

链路层提供的服务

使用链路层协议,将IP数据报通过单一通信链路 从一个节点移动到相邻节点。服务包括

1.成帧
在网络层数据报经链路传送之前,都要将其用链路层帧封装起来。一个帧由数据字段和首部字段组成,而网络层数据报就插在数据字段中

2.链路接入

MAC协议规定了帧在链路上的传输规则。当有多点共享一条链路时,MAC用于协调这些节点的帧传输。

3.可靠交付
链路层的可靠交付服务主要提供在易于产生高差错率的链路上,例如无线链路。其目的是本地纠正一个差错,而不是迫使端到端的数据重传。许多有线的链路层协议不提供该服务

4.差错检测与纠正
通过奇偶校验,循环冗余校验,检验和等方法检测或纠正比特错误

链路层在何处实现
链路层是硬件和软件的结合体,主要由硬件实现。链路层的主体部分是在网卡中实现的,位于网卡核心的是一个链路层控制器,该控制器是一个实现了许多链路层服务的芯片。链路层是协议栈中软件与硬件交接的部分。

链路层的差错检验与纠正技术

奇偶校验
在数据后补0或者1,使得数据中1的个数为奇数个或者偶数个。接收方通过查看1的个数是否符合发送方奇偶性来判断数据的准确性。
现实中通常使用二维奇偶校验,将数据分为不同行,针对每一行每一列进行奇偶校验。

检验和方法

在报文的发送端,会根据报文中的首部或数据来计算一个检验和(IP报文的检验和只对首部进行计算,ICMP报文对报文首部和数据都进行计算),然后一旦接收端接受到相应报文,接收端也会对报文的首部或数据进行一次检验和计算,如果接收端算出来的检验和和发送端发送的不一样,那么对不起,接收端认为报文在传输过程中出了错,于是就丢掉该报文。

循环冗余检测
发送端与接收端约定一个r+1比特位的生成多项式,发送方在数据末尾附加r个冗余比特,若接收方接收的数据(带上冗余比特位)用模二算数可以被生成多项式整除,则数据位正确的

多路访问协议

网络链路有两种类型 :点对点链路以及广播链路。
点对点链路由单一发送方和单一接收方组成。
广播链路能让多个发送方和接收节点都连接到相同的、单一的、共享的广播信道上。之所以称之为广播,是因为当任何一个节点传输一个帧的时候,信道会广播该帧,每个节点都会收到一个副本。
如何协调多个发送节点和接收节点对一个共享广播信道的访问,这就是多路访问问题。而解决这一问题的方式就是使用多路访问协议来规范节点在共享广播信道上的传输行为

因为所有的节点都能传输帧,所以多个节点可能会同时传输帧,使得传输的帧发生碰撞。当碰撞发生时,没有一个节点可以成功接受到该帧

多路访问协议总的来说可以分为三类
信道划分协议,随机接入协议以及轮流协议

信道划分协议

顾名思义,该种协议对信道进行划分。那么划分的方式如何呢?
时分多路复用(TDM)
时分多路复用,将时间划分为时间帧,再将每个时间帧划分为多个时隙,时隙的长度应使一个时隙能够传输单个分组。每个节点只可在它对应的时隙传输。
TDM的优点在于消除了碰撞且十分公平,假设信道总速率为R,共有N个节点共享该信道。则一个时间帧内每个节点都得到了R/N的传输速率
TDM的缺点在于,首先,它限制了每个节点的传输速率只能说平均传输速率。其次,当只有一个节点需要传输数据时,节点必须等待它在传输序列中的轮次。
频分多路复用(FDM)
信道的划分依据由时间变为频段。将Rbps的信道划分为不同频段,每个频段具有R/N的带宽,并把每个频率分配给N个节点中的一个。它的优缺点与TDM类似
码分多址(CDMA)
CDMA对每个节点分配一种不同的编码,然后每个节点用它唯一的编码来对他发送的数据进行编码。这样不同的节点能够同时传输。

随机接入协议

一个传输节点总是以信道的全部速率进行发送。当有碰撞发生时,涉及碰撞的每个节点反复的重发分组,直到该分组无碰撞的通过为止。但是当一个节点经历了一次碰撞时,它不可立即重发,而是等待一个随机时延
常见的随机接入协议有ALOHA协议和载波侦听多路访问协议

时隙ALOHA
时间被划分为多个时隙,一个时隙应当可以传输一帧。节点只在时隙起点开始传输数据,如果一个时隙有两个或多个帧碰撞,该节点以概率P在后序的每个时隙重传它的帧,直到帧被无碰撞的传出去。时隙ALOHA要求所有节点同步它们的传输,即在每个节点开始时开始传输。而第一个ALOHA协议实际上并没有划分时隙,而是立即广播,立即重传。当有大量活跃节点时,时隙ALOHA协议的最大效率为1/e,而非时隙为1/2e

载波侦听多路访问和碰撞检测(CSMA)
ALOHA协议的弊端在于,即使有碰撞的发生,也只会在下一次概率重传而不是停止传输。CSMA则在节点传输之前会先检测信道是否有能量。如果检测到信道正在被使用,则不传输。通俗来讲,就是说话之前先听有没有其他人在说。然而,这样依旧会造成碰撞,因为即使现在检测到信道口没有使用,可是一旦开始传输数据,其他传播过来的数据可能刚好到达,这样也会造成碰撞。所有,如果检测到两个节点同时开始传输,则应立即停止传输,在下次传输之前等待一个随机时间

轮流协议

多路访问协议的两个理想特性是:当只有一个节点活跃时,该活跃节点占用全部吞吐量。当有M个节点活跃时,每个活跃节点具有均分的吞吐量。ALOHA和CSMA协议仅具备第一个特性,但并不具备第二个特性。而轮流协议具备这两种特性

轮询协议
指定一个主节点,主节点不断轮询每个节点,向每个节点发送报文,告知该节点可以传输的帧的最多数量。比如,先向节点1发送报文,告诉它可以传输的最大数量,当节点1传输了某部分帧之后,向节点2发送报文,告知它可以传输的数量。
轮询协议消除了碰撞和空时隙,但引入了轮询时延,即通知节点所需要的时间。并且如果主节点发生故障,则整个信道将会变得不可操作。

令牌传递协议
这种协议中没有主节点,而是以令牌的方式,比如节点1总是将令牌发给节点2,节点2总是给节点3,节点N总是给节点1。具有令牌的节点如果有帧需要发送,则它尽可能地将帧发送。否则立刻给下一个节点。它的缺点在于一个节点的故障容易引起整个信道的崩溃。

链路层寻址
主机和路由器的网卡具有链路层地址,具有多个网卡(即网络接口)的主机或路由器将具有与之关联的多个链路层地址,就像他也具有多个与之关联的网络地址一样。而交换机并不具有与它们接口相关联的链路层地址。链路层地址最为流行的称呼为MAC地址。MAC地址有6个字节,48个比特位,每个字节用十六进制表示。网卡的MAC地址被设置为永久的,不会随着位置的改变而发生变化。但用软件改变一块适配器的MAC地址现在是可能的。发送网卡将目的网卡的MAC地址插入到帧中,并将帧发送到局域网上。当其他网卡接收到一个帧时,会检查该帧中的目的MAC地址是否与自己的MAC地址匹配。如果匹配,就提取出数据报并沿协议栈向上传递。

为什么有了网络层IP地址后还要独立出一个MAC地址呢
首先,网络协议栈应是相互独立的,如果链路层用IP地址的话,则网卡将不能很好的支持其他的网络层协议。其次,如果使用IP地址,每次网卡位置移动的时候还需要重新加电配置。最后,如果不使用MAC地址,而是让网卡将他收到的每个帧向上传递,则主机将被局域网上发送的每个帧中断。
为什么有了MAC地址后还要IP地址呢
如果仅仅有MAC地址而没有IP地址,则网卡只能做基于交换机,集线器的低级转发操作,由于全世界存在着各式各样的网络,它们使用不同的MAC地址。要是这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此由用户或用户主机来完成这项工作几乎是不可能的事。当网络规模逐渐扩大,会让交换机的交换表变的十分复杂,这时候就需要统一的IP地址来进行子网的划分以及高级转发,即路由选择算法, 来达到在复杂规模的情况下仍能高效转发的目的——连接到因特网的主机只需拥有统一的IP地址,它们之间的通信就像连接在同一个网络(虚拟互连网络或者简称IP网)上那么简单方便

地址解析协议(ARP)
当发送主机确定了目的主机的IP地址后,他还要向他的网卡提供目的主机的MAC地址。那么,发送主机如何得知目的主机的MAC地址呢?它使用ARP。在发送主机中的ARP模块将取在相同局域网的任何IP地址作为输入,然后返回其对应的MAC地址。他与DNS协议类似,不同之处在于DNS可以解析任何地方的主机名,而ARP只为同一局域网的IP地址提供解析服务。

ARP表存在于每台主机或路由器的内存中。并且ARP是即插即用的,即无需手工配置。APR的表项存在一个过期时间,并且有可能并不完全覆盖子网的所有IP地址。当想要查询一个目的IP地址对应的MAC地址,但这一表项并不存在或者已经过期了,这时该怎么办呢?
首先,发送主机会向ARP模块传递一个查询分组,并且指示网卡使用广播MAC地址(FF-FF-FF-FF-FF-FF)来发送这一分组。在这一局域网的每一块网卡都会收到该帧,并将其向上传递给ARP模块,ARP模块检查该帧的目的IP地址是否与自己的IP地址相同,相同的话就会发回一个带有所希望映射的响应ARP分组,然后发送主机会更新ARP表,并发送IP数据报。查询ARP报文是在广播帧,而响应ARP报文是在标准帧。
ARP协议是一个位于链路层之上,网络层之下的边界协议。因为它既使用到了IP地址,也使用到了MAC地址。

上面我们介绍了,ARP协议只用于局域网之内。那么,如何将数据发送到子网之外呢?其实很简单,只需将数据先发送到这一子网的边界路由器,边界路由器同时具有两边子网的接口,再由边界路由器发送到其他子网即可。

以太网帧结构

1.数据字段
承载了网络层数据报,以太网最大传输单元(MTU)为1500字节
2.目的地址
目的适配器(网卡)的MAC地址
3.源地址
发送适配器(网卡 )的MAC地址
4.类型字段
用于区分网络层的不同协议(包括ARP协议)
5.CRC
用于循环冗余校验
6.前同步码
用于警告适配器重要内容的到来

注意,以太网技术向网络层提供的都是无连接服务。一旦某个帧经CRC校验发生错误,网卡会直接丢弃该帧。如果上层应用使用的是UDP,则会发现空隙。如果使用的是TCP,则会要求数据进行重传。

链路层交换机

首先需要明确的是,交换机对于主机和路由器是完全透明的。也就是说,当路由器或主机寻址一个帧或者将帧发送到局域网的时候,它并不知道这个帧经过了或将传给哪个交换机。

交换机转发和过滤
过滤指决定一个帧应该转发到某个接口还是应当丢弃。
转发是决定一个帧应该被导向哪个接口。
交换机的转发和过滤功能是借助交换机表实现的。交换机表的表项包括:一个MAC地址,通向该MAC地址的交换机接口以及表项放置在表中的时间。
假设一个目的地址为DD-DD-DD-DD-DD-DD的帧从交换机接口x到达,交换机用MAC地址DD-DD-DD-DD-DD-DD索引它的表,有三种可能情况
1.表中没有DD-DD-DD-DD-DD-DD,此时,交换机向除x外的所有接口广播该帧
2.表中有DD-DD-DD-DD-DD-DD,但该表项对应的接口为x。此时,交换机丢弃该帧
3.表中有DD-DD-DD-DD-DD-DD,且该表项对应的接口为y!=x。此时,交换机向接口y转发该帧。
交换机的自学习

交换机表初始为空。对于每个接口接收到的每个入帧,该交换机在其表中存储。如果一段时间后没有接收到以该地址为源地址的帧,则会删除该地址。

交换机和路由器的比较

1.交换机使用MAC地址转发分组,而路由器使用IP地址。
2.交换机即插即用,而路由器需要配置
3.交换机对于分组的转发和过滤效率更高。因为交换机只处理至协议栈的第二层,而路由器处理至第三层。
4.为了防止广播帧的循环,交换机的拓扑结构被限制为一颗生成树,而网络寻址是分层次的,且IP有特殊字段来限制寿命,因此路由器的拓扑结构没有限制。

你可能感兴趣的:(网络协议,网络)