| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 计算机网络学习(三)数据链路层 -> 正文阅读 |
|
[网络协议]计算机网络学习(三)数据链路层 |
第三章 数据链路层 数据链路层属于计算机网络的最底低层。数据链路层使用的信道主要有以下两种类型: 点对点信道;广播信道。 数据链路层的几个共同问题 数据链路和帧 链路是从一个节点到相邻节点的一段物理线路,即链路是一条路径的组成部分。 数据链路则是在链路的基础上传送了数据,与之同时必然带有协议以及其硬件和软件上的支持。现在实现协议最简单的方法是使用网络适配器(既有硬件,也包括软件)。一般的网络适配器都包括数据链路层和物理层这两部分的内容。 点对点信道的数据链路层的协议数据单元——帧。 数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并交给网络层。在互联网中,网络层协议的数据单元就是IP数据包(或简称为数据报、分组或包)。 点对点信道的数据链路层在进行通信时的主要步骤如下: (1)节点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧; (2)节点A把封装好的帧发送给节点B的数据链路层; (3)若节点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给上面的网络层,狗则丢弃这个帧。 数据链路层不必考虑物理层如何实现比特传输的细节。 三个基本问题 数据链路封装协议有很多种,但有三个基本的共同问题。即封装成帧、透明传输和差错检测。 封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。首部和尾部的一个重要作用就是进行帧定界。各种数据链路层的协议都规定了所能传送的真的数据部分长度上限——最大传送单元MTU。(当数据是可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。 透明传输,由于帧的开始和结束的标记使用专门指明的控制字符,所传输的数据中一定不允许出现和用作帧定界的字符一样的编码。”透明“是一个很重要的术语,表示某一个实际存在的事物看起来却好像不存在一样。通过字节填充或字符传输的方式解决问题。 差错检测,比特在传输过程中可能会出现差错,即比特差错。传输错误的比特占所传输的比特总数的比率叫做误码率BER。目前在数据链路层中广泛使用循环冗余检验CRC的技术。n位冗余码一般是通过模二运算得出的。这种为了帧检验而添加的冗余码称为真检验序列FCS。即CRC是一种检错方法,而FCS是加在后面的冗余码。 在数据链路层若仅仅使用循环冗余检验CRC差错检测技术,则只能做到对帧的无差错接受,即”凡是接受端数据链路层接收的帧,我们都能以非常接近1的概率认为这些帧在传输过程中没有产生差错。即“凡是接收端数据链路层接受的帧均无差错。” 另外一点就是可出现传输差错:帧丢失、帧重复、帧失序。 CRC的基础上,还可加入帧编号、确认和重传机制。 点对点协议PPP PPP协议就是用户计算机和ISP进行通信时所使用的数据层协议。 PPP协议应满足的需求:IETF认为,在设计PPP协议必须考虑以下多方面的需求, 简单:首要的需求,提高了互操作性; 封装成帧:PPP协议必须使用规定特殊的字符为帧定界符; 透明性:PPP协议必须保证数据传输的 透明性; 多种网络层协议:PPP协议必须能够在同一条物理链路上同时支持多种网络层协议; 多种类型链路 差错检测:丢弃有差错的帧; 检测连接状态:自动检测出链路是否在连接之中; 最大传送单元:表明数据部分的最大长度; 网络层地址协商:PPP协议必须提供一种机制使通信的两个网络层的实体能够通过协商知道或能够配置彼此的网络层地址; 数据压缩协商:PPP协议必须提供一种方法来协商使用数据压缩算法。但是PPP协议并不要求将数据压缩算法进行标准化。 PPP协议的组成 PPP协议有三个部分:一个将IP数据包封装到串行链路的方法;一个用来建立、配置和测试数据链路连接的链路控制协议LCP;一套网络控制协议NCP,其中每一个协议支持不同的网咯层协议。 PPP协议的帧格式 各字段的意义:PPP帧的首部和尾部分别为四个字段和两个字段。 字节填充; 零比特填充; PPP协议的工作状态 PPP链路的起始和终止状态永远是“链路静止”状态,这时在用户个人电脑和ISP的路由器之间并不存在物理层的连接。 当用户个人电脑通过调制解调器呼叫路由器时,路由器就能够检测到调制解调器发出的载波信号。在双方建立了物理层连接后,PPP就进入了”链路建立“状态,其目的是建立链路层的LCP连接。 这时LCP就开始了一些配置选项,即发送LCP的配置请求帧。这是一个PPP帧,其协议字段置为LCP对应的代码,而信息字段包含特定的配置请求。链路的另一端就可以发送以下几种响应中的一种: 配置确认帧:所有选项都接受; 配置否认帧:所有选项都理解但不接受; 配置拒绝帧;选项中有的无法识别或不能接受,需要协商。 LCP配置选项包括链路上的最大帧长‘所使用的是鉴别协议的规约,以及不适用PPP帧中的地址和控制字段。 协商结束后双方就建立了LCP链路,接着就进入鉴别状态。在这一状态,只允许传送LCP协议的分组、鉴别协议的分组以及检测链路质量的分组。若使用口令鉴别协议APA,则需要发起通信一方发送身份标识符和口令,系统可以允许用户重试若干次。如果需要有更好的安全性,则可使用更加复杂的口令握手鉴别协议。若鉴别身份失败,则转到链路终止状态。若鉴别成功,则进入网络层协议。 在网络层协议状态,PPP链路两端的网络控制协议NCP根据网络层的不同协议互相交换网络层特定的网络控制分组。这个步骤是很重要的,因为现在的路由器都能够同时支持多种网络层协议。总之,PPP协议两端的网络层可以运行不同的网络层协议,但仍然可使用同一个PPP协议进行通信。 如果在PPP链路上运行的是IP协议,则对PPP链路的每一端配置IP协议模块(入分配IP地址)时就要使用NCP中支持IP的协议——IP控制协议IPCP。IPCP分组也组装成PPP帧在PPP链路上传送。在低速链路上运行时,双方还可以协商使用压缩的TCP和IP首部,以减少链路上发送的比特数。 当网络层配置完成后,链路就进入可进行数据通信的”链路打开“状态。来南路的两个PPP端点可以彼此向对方发送分组。两个PPP端点还可发送回送请求LCP分组和回送回答LCP分组,以检查链路的状态。 数据传输结束后,可以由链路的一段发出终止请求LCP分组请求终止链路连接,在收到对方发来的终止确认LCP分组后,转到”链路终止“状态。如果链路出现故障,也会从”链路打开“状态转到”链路终止“状态。当调制解调器的载波停止后,则回到”链路静止”状态。 使用广播信道的数据链路层 广播信道是一对多的通信。局域网使用的就是广播信道。 局域网的主要特点为:局域网中的数据链路层网络为一个单位所拥有,且地理范围和站点数目均有限。 局域网有如下一些优点:具有广播性能、便于系统的扩展和逐渐的演变、提高了系统的可靠性可用性和生存性。 局域网可以按照网络拓扑进行分类,有星形网、环形网和总线网。 共享信道要着重考虑的一个问题就是如何使众多用户能够合理而方便地共享通信媒体资源,这在技术上有两种方法: (1)静态划分通道:用户只要分配到了信道就不会和其他用户发生冲突,按这种划分信道的方法代价较高,不适于局域网的使用。 (2)动态媒体接入控制:它又称为多点接入,其特点是信道并非在用户通信时固定分配给用户,这里又分为以下两类: ? ? ? ? 随机接入:随机接入的特点是所有的用户可随机地发送信息。但是如果恰巧有两个或更多的用户在同一时刻发送消息,那么在共享媒体上就要产生碰撞(即发生了冲突),使得这些用户的发送都失败,因此,必须有解决碰撞的各种网络协议。 ? ? ? ? 受控接入:受控接入的特点是用户不能随机地发送信息而必须服从一定的控制,这类的典型代表有分散控制的令牌环局域网和集中控制的多点线路探询,或称为轮询。 以太网的两个主要标准 适配器的作用:计算机与外界局域网的作用是连接是通过适配器。适配器本来是在主机箱内插入的一块网络接口板,这种接口板又称为网络接口卡NIC或简称为‘网卡”。由于现在的计算机主板已经嵌入这种网卡了,因而在这里使用适配器这个更加标准的术语。在这种通信适配器上装有处理器和存储器(包括RAM和ROM) CMSA/CD协议 最早的以太网是将许多计算机都连接到一根总线上。当初认为这种连接的方法既简单又可靠,,因此在那个时代普遍认为:“有源器件并不可靠,而无源的电缆线才是最可靠的。“ 总线的特点就是:当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据。这种就是广播通讯方式。但是我们不总是要在局域网中进行一对多的广播通信,为了在总线上实现一对一的通信,可以使每一台计算机的适配器都拥有一个与其他的适配器不同的地址。在发送数据帧时,在帧的首部写明接收站的地址。到了接收方,仅当数据帧中的目的地址与适配器ROM中存放的硬件地址一致时,该适配器才能接收这个数据帧。适配器对于不是发送给自己的数据帧就丢弃。这样,具有广播特性的总线上就实现了一对一的通信。 为了通信的简便,以太网采用了以下两种措施: 第一,采用较为灵活的无连接的工作方式,就不必先建立连接就可以直接发送数据,适配器对发送的数据帧不进行编号,也不要求对方发回确认。因此,以太网提供最大努力的交付,即不可靠的交付。对有差错的帧是否重传则由高层来决定。但以太网并不知道这是重传帧,而是当作新的帧来发送。另外,在同一时间内只能允许一台计算机发送数据。即采用CSMA/CD,意思是载波监听多点接入/碰撞检测。 第二,以太网发送的数据都采用曼彻斯特编码方式。 载波监听就是不管在发送数据之前,还是在发送数据之中,都必须不停地检测信道。 碰撞检测是适配器边发送边检测信道上的信号电压的变化情况。 显然,在使用CSMA/CD协议时,一个站不可能同时进行发送和接收(但必须边发送边监听信道)。因此使用此协议的以太网不可能做到全双工通信而只能做到双向交替通信。(半双工通信) 每一个站点在自己发送数据后的一小段时间内,存在着碰撞的可能性。即这一小段时间是不确定的,它取决于另一个发送数据的站到本站的距离。因此,以太网不能保证在检测到信道空闲的某一段时间内,一定能把数据帧成功地发送出去。以太网的这一特点称为发送的不确定性。 数据碰撞之后有一个争用期,即碰撞窗口。经过这个碰撞窗口之后仍然没有新的数据帧出现,则表示这次发送不会出现碰撞。 以太网使用截断二进制指数退避算法来确定碰撞后重传的时机。这种算法让发生碰撞的站停止发送数据后生成一个随机的数字,取得最小随机数的站在随后第一个传送数据,从而避免再次发生碰撞。 使用集线器的星型拓扑 使用集线器的以太网在逻辑上仍旧是一个总线网,各站点共享逻辑上的总线,使用的还是RMSA/CD协议。并且在同一时刻只允许发送一个数据。 一个集线器有很多端口,而一个集线器很像一个多端口的转发器。 集线器工作在物理层,它的每个端口仅仅简单的转发比特,不进行碰撞检测。 以太网的信道利用率 以太网的MAC层 MAC层的硬件地址 在局域网中,硬件地址又称为物理地址或MAC地址 在计算机系统的设计中,标识系统是一个核心的问题。在讨论地址问题时,很多人常常引用如下定义:”名字指出我们所要寻找的那个资源,地址指出那个资源在何处,路由告诉我们如何到达该处。“ 严格地讲,局域网的”地址“应当是每一个站的”名字”或标识符。 实际上现在的局域网适配器使用的都是6字节的MAC地址。 IEEE的注册管理机构RA是局域网全球地址的法定管理机构。世界上凡要生产局域网适配器的厂家必须向IEEE购买这6个字节中的前3个字节,即组织唯一标识符(OUI),通常也叫做公司标识符。地址字段中的后3个字节由厂家自行指派,称为扩展标识符,只要保证生产 出的适配器没有重复地址即可。 在生产适配器时,这种6字节的MAC地址已被固化在适配器的ROM中。因此,MAC地址也叫做硬件地址或者物理地址。可见”MAC地址“实际上就是适配器地址或者是适配器标识符EUI-48,当这种适配器嵌入计算机中后,适配器上的地址就变成设备的MAC地址了。 IEEE规定地址字段的第一字节的最低有效位为I/G位,表示Individual/Group。当其为0时,地址字段表示一个单个站地址。当为1时,表示组地址,用来进行多播。 IEEE还考虑到有人可能并不愿意向IEEE的RA购买OUI。因此,将最低的第二位记为G/I位,为0是全球管理,为1是本地管理。 当路由器通过适配器连接到局域网时,适配器上的硬件地址就用来标志路由器的某个端口。里尤其如果同时连接到两个网络上,那么它就需要两个适配器和两个硬件地址。 适配器有过滤功能。当适配器每从网络上接受到一个MAC帧就先用硬件检查MAC帧中的目的地址。如果是发往本站的帧则收下,然后再进行其他的处理。否则就将此帧丢弃,不再进行其他的处理。这样做就不会浪费主机的处理机和内存资源。 这里”发往本站的帧“包括以下三种帧: 单播帧:一对一,即收到的帧与本站的MAC地址相同; 广播帧:一对全体,即发送给局域网上所有站点的帧(全1地址); 多播帧:一对多,即发送给本局域网上一部分站点的帧。 所有的适配器都至少应当能够识别两种帧,即能够识别单播和广播地址。有的适配器可用编程方法识别多播地址。显然,只有目的地址才能使用广播地址和多播地址。 以太网适配器还可设置为一种特殊的工作方式,即混杂方式。工作在混杂方式的适配器只要”听到“有帧在以太网上传输就悄悄地接受下来,而不管这些帧发往哪个站。实际上是”窃听“其他站点的通信而不中断其他站点的通信。网络上的黑客就常使用这种方法非法获取网上用户的口令。 MAC帧的格式 常用的以太网MAC格式有两种标准,一种是DIX Ethernet V2标准。另一种是IEEE的8022.3标准。这里介绍使用较多的V2标准。以太网的V2的MAC帧比较简单,由五个字段组成。前两个字段为6个字节长的目的地址和源地址的字段。第三个字段是2字节的类型字段,用来标志上一层使用的是什么协议。第四个字段是数据字段。最后一个字段是4个字节的帧检测序列FCS。 扩展的以太网 在很多情况下,我们希望将以太网的覆盖范围扩展。这种扩展的以太网在网络层看来仍旧是一个网络。 在物理层扩展以太网 扩展主机和集线器之间的 距离的一种简单方法是使用光纤。 光纤调制解调器的作用就是进行光信号和电信号的转换。 在数据链路层扩展以太网 交换式集线器——以太网交换机 以太网交换机的自学习功能 从总线以太网到星形以太网 虚拟局域网 虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。 高速以太网 100BASE-T以太网 吉比特以太网 10吉比特以太网和更快的以太网 使用以太网进行宽带接入 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 10:45:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |