链路层和运输层、网络层一样,根本目的都是将数据从源传输到目的地,只不过它们面对的
层次不一样,运输层面对的是进程到进程之间的通信,网络层面对的是主机到主机之间的通
信,而链路层则面对各个网络结点之间的通信。这里的结点指的是运行链路层协议的任何设
备,而连接这些结点的通信信道称为链路。
层次不一样,运输层面对的是进程到进程之间的通信,网络层面对的是主机到主机之间的通
信,而链路层则面对各个网络结点之间的通信。这里的结点指的是运行链路层协议的任何设
备,而连接这些结点的通信信道称为链路。
既然都是为传输数据所设计的服务,那么它们之间显然都需要面对相似的设计问题:
1.链路层是如何实现的?它提供了哪些服务?
1.链路层是如何实现的?它提供了哪些服务?
2.相比于运输层将报文封装为报文段、网络层将报文段封装为数据报,链路层是如何将数据
报封装进链路层帧的?
3.运输层的TCP、UDP,网络层的IPv4、IPv6,它们在传输数据时,可以将源和目的地之间看
做是一个管子,而链路层确是一个个材质大小不同的管子拼接而成,这就使得在面对链路层
时不得不考虑数据在不同管子之间传输时的差异,即不同的链路采用的链路层协议相同吗?
4.在链路层中多个发送方和接收方共享同一信道时,我们如何解决传输碰撞问题?
5.与运输层的端口号、网络层的IP地址相比,我们如何标识链路中的各个结点呢?是采用编
址的方式吗?如果是,那么链路层编址如何与网络层编址一起运行?
报封装进链路层帧的?
3.运输层的TCP、UDP,网络层的IPv4、IPv6,它们在传输数据时,可以将源和目的地之间看
做是一个管子,而链路层确是一个个材质大小不同的管子拼接而成,这就使得在面对链路层
时不得不考虑数据在不同管子之间传输时的差异,即不同的链路采用的链路层协议相同吗?
4.在链路层中多个发送方和接收方共享同一信道时,我们如何解决传输碰撞问题?
5.与运输层的端口号、网络层的IP地址相比,我们如何标识链路中的各个结点呢?是采用编
址的方式吗?如果是,那么链路层编址如何与网络层编址一起运行?
下面将围绕这些问题来介绍链路层
链路层是如何实现的?
链路层是软件和硬件的结合体,链路层的主体部分是在网络适配器,又叫网络接口卡上实现的,而位于网络适配器的核心是链路层控制器,该控制器是实现了众多链路层服务的专用芯
片,因此链路层的许多功能是硬件实现的,但任有部分链路层是由运行与主机CPU 上的软件
中实现的,它们实现了高层链路层功能,如:组装链路层寻址信息和激活控制器硬件。
链路层提供哪些服务?
在前面说过,链路层最根本的目的是将数据从源传递到目的地,但每一段通信链路所提供的服务细节随着链路层协议的不同而变化。链路层协议提供的可能服务包括:
成帧:将数据报用链路层帧封装起来,每个帧由一个数据字段和若干个首部字段组成,其中
数据报就插在数据字段中。帧的结构由链路层协议决定,不同的链路层协议规定的帧格式也
可能不同。
数据报就插在数据字段中。帧的结构由链路层协议决定,不同的链路层协议规定的帧格式也
可能不同。
链路接入:媒体访问控制MAC 协议规定了帧在链路上传输的规则,调节结点间的帧传输。
可靠交付:保证无差错地经链路层移动每个数据报,链路层可靠交付服务通常用于高差错率
的链路,而对于低比特差错的链路,可靠交付被认为是一种不必要的开销。
的链路,而对于低比特差错的链路,可靠交付被认为是一种不必要的开销。
差错检测和纠正:在链路层中传输数据时,可能由于信号衰减或电磁噪声导致比特差错,而
转发一个存在比特差错的数据是没必要的,因而许多链路层协议提供了差错检测的机制。而
差错纠正则在于接收方不仅能检测出错误,还可以纠正这些错误。
转发一个存在比特差错的数据是没必要的,因而许多链路层协议提供了差错检测的机制。而
差错纠正则在于接收方不仅能检测出错误,还可以纠正这些错误。
差错检测和纠正技术是如何实现的?
由于各种原因,接收到的链路层帧可能存在比特差错。为了检测这种差错,我们在发送方将差错检测和纠正比特EDC 放入链路层帧中,使得接收方检测出是否发生比特差错。但这并不
意味着所有的比特差错都会被检测出来。一般而言,差错检测与纠正技术越复杂,检测出所
有比特差错的概率越高,但这也意味着更多的计算量,更大的开销。
传输数据中检测差错的技术:
奇偶校验(用于描述差错检测和纠正背后的思想)检验和方法(更多的运用于运输层)
循环冗余检测(更多的应用于适配器中的链路层)
如何控制链路层中使用同一信道的各个发送方与接收方行为?
我们知道有两种类型的网络链路:点对点链路和广播链路。而为这两种类型的网络链路已经设计出了许多链路层协议。它们被用来解决协调各个发送方与接收方行为,减少帧的碰撞。
为点对点链路设计的:点对点协议PPP、高级链路数据控制HDLC协议
为多个发送方与接收方链路设计的:多路访问协议
为多个发送方与接收方链路设计的:多路访问协议
这些年来,已经实现了几十种多路访问协议,对于这些协议,我们大致可以将其以下三类:
信道划分协议随机接入协议
轮流协议
多录访问协议的具体例子:
时分多路复用TDM频分多路复用FDM
码分多址CDMA
时隙ALOHA协议
载波侦听多路访问CSMA
具有碰撞检测的载波侦听多路访问CSMA/CD
载波侦听多路访问CSMA
具有碰撞检测的载波侦听多路访问CSMA/CD
轮训协议
令牌传递协议
令牌传递协议
链路层如何区分各个结点并在传输数据时正确寻址?
MAC地址:
在前面说过链路层的主体部分是在网络适配器,而事实上正是这些适配器具有链路层地址,因此具有多个网络接口的主机和路由器将拥有多个链路层地址,链路层地址有多种不同的叫
法:LAN地址、物理地址、MAC地址。其中叫做MAC地址最为流行。MAC地址一个重要的性质是
没有两块适配器具有相同的MAC地址。与IP地址不同,随着设备在不同网络中移动,MAC地址
不会发生改变。
如何将MAC地址与IP地址相互转换?
对于因特网而言,完成这个任务采用的是 地址解析协议ARP链路层交换机:
与网络层的路由器相似,链路层交换机的任务是接收入链路的帧并将其转发到出链路,交换机自身对于网络中的路由器与主机来说是透明的。
交换机在收到一个帧时需要先决定将其丢弃还是转发到某个接口(过滤),然后决定将要被
转发的帧导向哪个接口(转发)。交换机转发分组是基于MAC地址, 交换机的过滤与转发是
借助交换机表完成,转发表是自动、动态和自治地建立的,不需要网络管理员或配置协议的
干预(自学习)。因此,交换机是一个即插即用设备。
转发的帧导向哪个接口(转发)。交换机转发分组是基于MAC地址, 交换机的过滤与转发是
借助交换机表完成,转发表是自动、动态和自治地建立的,不需要网络管理员或配置协议的
干预(自学习)。因此,交换机是一个即插即用设备。