zoukankan      html  css  js  c++  java
  • 计算机网络——链路层

    链路层和运输层网络层一样,根本目的都是将数据从源传输到目的地,只不过它们面对的
    层次不一样,运输层面对的是进程到进程之间的通信,网络层面对的是主机到主机之间的通
    信,而链路层则面对各个网络结点之间的通信。这里的结点指的是运行链路层协议的任何设
    备,而连接这些结点的通信信道称为链路
     
    既然都是为传输数据所设计的服务,那么它们之间显然都需要面对相似的设计问题:
    1.链路层是如何实现的?它提供了哪些服务?
    2.相比于运输层将报文封装为报文段、网络层将报文段封装为数据报,链路层是如何将数据
    报封装进链路层帧的?
    3.运输层的TCP、UDP,网络层的IPv4、IPv6,它们在传输数据时,可以将源和目的地之间看
    做是一个管子,而链路层确是一个个材质大小不同的管子拼接而成,这就使得在面对链路层
    时不得不考虑数据在不同管子之间传输时的差异,即不同的链路采用的链路层协议相同吗?
    4.在链路层中多个发送方和接收方共享同一信道时,我们如何解决传输碰撞问题?
    5.与运输层的端口号、网络层的IP地址相比,我们如何标识链路中的各个结点呢?是采用编
    址的方式吗?如果是,那么链路层编址如何与网络层编址一起运行?
    下面将围绕这些问题来介绍链路层
     

    链路层是如何实现的?

    链路层是软件和硬件的结合体,链路层的主体部分是在网络适配器,又叫网络接口卡上实现
    的,而位于网络适配器的核心是链路层控制器,该控制器是实现了众多链路层服务的专用芯
    片,因此链路层的许多功能是硬件实现的,但任有部分链路层是由运行与主机CPU 上的软件
    中实现的,它们实现了高层链路层功能,如:组装链路层寻址信息和激活控制器硬件。

    链路层提供哪些服务?

    在前面说过,链路层最根本的目的是将数据从源传递到目的地,但每一段通信链路所提供的
    服务细节随着链路层协议的不同而变化。链路层协议提供的可能服务包括:
    成帧:将数据报用链路层帧封装起来,每个帧由一个数据字段和若干个首部字段组成,其中
    数据报就插在数据字段中。帧的结构由链路层协议决定,不同的链路层协议规定的帧格式也
    可能不同。
    链路接入:媒体访问控制MAC 协议规定了帧在链路上传输的规则,调节结点间的帧传输。
    可靠交付:保证无差错地经链路层移动每个数据报,链路层可靠交付服务通常用于高差错率
    的链路,而对于低比特差错的链路,可靠交付被认为是一种不必要的开销。
    差错检测和纠正:在链路层中传输数据时,可能由于信号衰减或电磁噪声导致比特差错,而
    转发一个存在比特差错的数据是没必要的,因而许多链路层协议提供了差错检测的机制。而
    差错纠正则在于接收方不仅能检测出错误,还可以纠正这些错误。

    差错检测和纠正技术是如何实现的?

    由于各种原因,接收到的链路层帧可能存在比特差错。为了检测这种差错,我们在发送方将
    差错检测和纠正比特EDC 放入链路层帧中,使得接收方检测出是否发生比特差错。但这并不
    意味着所有的比特差错都会被检测出来。一般而言,差错检测与纠正技术越复杂,检测出所
    有比特差错的概率越高,但这也意味着更多的计算量,更大的开销。

    传输数据中检测差错的技术:

    奇偶校验(用于描述差错检测和纠正背后的思想)
    检验和方法(更多的运用于运输层)
    循环冗余检测(更多的应用于适配器中的链路层)

    如何控制链路层中使用同一信道的各个发送方与接收方行为?

    我们知道有两种类型的网络链路:点对点链路和广播链路。而为这两种类型的网络链路已经
    设计出了许多链路层协议。它们被用来解决协调各个发送方与接收方行为,减少帧的碰撞。
    为点对点链路设计的:点对点协议PPP、高级链路数据控制HDLC协议
    为多个发送方与接收方链路设计的:多路访问协议

    这些年来,已经实现了几十种多路访问协议,对于这些协议,我们大致可以将其以下三类:

    信道划分协议
    随机接入协议
    轮流协议

    多录访问协议的具体例子:

    时分多路复用TDM
    频分多路复用FDM
    码分多址CDMA
     
    时隙ALOHA协议
    载波侦听多路访问CSMA
    具有碰撞检测的载波侦听多路访问CSMA/CD
     
    轮训协议
    令牌传递协议

    链路层如何区分各个结点并在传输数据时正确寻址?

    MAC地址:

    在前面说过链路层的主体部分是在网络适配器,而事实上正是这些适配器具有链路层地址,
    因此具有多个网络接口的主机和路由器将拥有多个链路层地址,链路层地址有多种不同的叫
    法:LAN地址、物理地址、MAC地址。其中叫做MAC地址最为流行。MAC地址一个重要的性质是
    没有两块适配器具有相同的MAC地址。与IP地址不同,随着设备在不同网络中移动,MAC地址
    不会发生改变。

    如何将MAC地址与IP地址相互转换?

    对于因特网而言,完成这个任务采用的是 地址解析协议ARP

    链路层交换机:

    与网络层的路由器相似,链路层交换机的任务是接收入链路的帧并将其转发到出链路,交换
    机自身对于网络中的路由器与主机来说是透明的。
    交换机在收到一个帧时需要先决定将其丢弃还是转发到某个接口(过滤),然后决定将要被
    转发的帧导向哪个接口(转发)。交换机转发分组是基于MAC地址, 交换机的过滤与转发是
    借助交换机表完成,转发表是自动、动态和自治地建立的,不需要网络管理员或配置协议的
    干预(自学习)。因此,交换机是一个即插即用设备
  • 相关阅读:
    C# 打印文件
    oc语言学习之基础知识点介绍(五):OC进阶
    oc语言学习之基础知识点介绍(四):方法的重写、多态以及self、super的介绍
    oc语言学习之基础知识点介绍(三):类方法、封装以及继承的介绍
    oc语言学习之基础知识点介绍(二):类和对象的进一步介绍
    oc语言学习之基础知识点介绍(一):OC介绍
    c语言学习之基础知识点介绍(二十):预处理指令
    c语言学习之基础知识点介绍(十九):内存操作函数
    XCTF-ics-04
    Portswigger-web-security-academy:dom-base_xss
  • 原文地址:https://www.cnblogs.com/lnlin/p/9163155.html
Copyright © 2011-2022 走看看