计算机网络【三】:数据链路层 【转】

转自:http://blog.chinaunix.net/uid-26275986-id-4104189.html

按照TCP/IP协议由下往上的顺序,今天我们来学习一下数据链路层,数据链路层位于物理层和网络层之间,其设计的初衷就是顺利为网络层提供数据服务,不考虑可靠性,可靠性的部分由传输层的TCP协议实现。我们可以从下面的图中简单地了解一下数据链路层在网络传递中的地位,假设在通信的过程中需要通过路由器的话,那么数据的具体流动过程就像下面图中箭头的示意:

      其中路由器负责路由转发,因此需要最高到网络层进行IP协议的分析;我们也可以在逻辑上将整个通信过程看成是两端数据链路层之间点对点的通信:

     数据链路的信道主要有两种模式:
1. 点对点信道:这种信道使用一对一的点对点通信方式;
2. 广播信道:这种信道使用一对多的广播通信方式,因此过程比较复杂。


一、点对点的数据链路层
1. 区分“链路”与“数据链路”
     之前自己常常说“链路层”,其实链路的真正意思是从一个结点到相邻结点的一段物理线路,其中没有任何其他的交换结点。数据链路则是指在物理线路上添加上控制数据传输的协议的硬件和软件。因此数据链路是比链路更为深刻的内涵。
2. 数据链路层的数据传输单元我们一般称之为帧,数据链路层的任务就是将上层的数据封装成帧交给物理层传输,以及分析物理层提交的数据帧,提取出上层数据交给网络层。具体来说就是:
a. 信源的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧;
b. 信源把封装好的数据帧发送给信宿的数据链路层;
c. 若新宿的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报上交给网络层,否则丢弃这个帧;

3. 数据链路层的三个基本问题
     数据链路层的协议有很多种,但有三个基本的问题是共同的,那就是:封装成帧、透明传输和差错控制
a. 封装成帧      数据链路层的主要工作是添加一个帧头部和帧尾部,不同的数据链路层协议可能格式不同,但是基本的格式都试类似的:

     这里的数据部分,一般有一个最大程度,我们称为MTU,在MAC里一般是1500个字节,后面会详细介绍。这里要说的是,当数据是由可打印的ASC2码组成的文件时,可以使用特殊的帧定字符来标明一个帧的开始和结束。比如使用SOH(Start Of Header)--0x01和EOT(End Of Transmission)--0x04来表示,这样数据链路层就可以识别出帧的开始和结束。
b. 透明传输      如果我们提供任何数据输入,数据链路层都可以成功传递,那么我们称之为透明传输,即数据链路层的功能对于网络层和上层是透明的。比如上例的文本字符数据输入,SOH和EOT都可以很好的工作,因为二者没有交集。但是对于二进制数据输入来说,就有可能在数据中出现0x01和0x04,导致帧意外地中断和丢弃。因此,我们需要一种机制来处理这种情况,最经典、最常用的就是字节填充的方式,比如在SOH和EOT的前面分别插入一个转义字符ESC-0x1B,在接收端的数据链路层在将数据送往网络层之前删除这个插入的转义字符,这就叫做字符填充。

c. 错误检测
     现实的通信链路都不会是理想的,这就是说,传输过程中有可能1变成0,0变成1,这种情况就叫做比特差错。数据链路层提供了循环冗余检验CRC方法来检测比特差错,其主要使用了帧检验序列FCS来检测比特错误。发送数据前先计算帧的数据部分得出FCS添加在数据部分后,接收端收到数据后添加上FCS后计算验证。
     需要注意的是数据链路层并没有向网络层提供可靠传输服务,传输差错一类是比特差错,还有一类是帧丢失、帧重复或帧失序。完整的传输错误控制是在TCP中实现的。

4. 点对点协议PPP
     现在使用最为广泛的就是PPP(Point-to-Point Protocol)协议,其主要负责用户计算机到ISP进行通信时所使用的数据链路层协议:

a. PPP协议的特点
-1. 简单:PPP的首要需求就是“简单”,不需要考虑纠错、序号,这提供了很好的互操作性;
-2. 封装成帧:PPP协议必须定义帧界定字符
-3. 透明传输
-4. 多种网络层协议:PPP协议必须能够支持多种网络层协议,如IP、IPX等;
-5. 多种类型链路:支持串行/并行、同步/异步等;
***4/5其实是说PPP要对上对下都有很好的支持兼容性***
-6. 差错控制
-7 检测连接状态:PPP协议要具有一种机制能够及时(不超过几分钟)自动检测链路是否处于正常工作状态,当出现故障的链路隔了一段时间后重新恢复正常工作时,就特别需要有这种及时检测功能。
-8 最大传送单元MTU
-9 网络层地址协商
-10 数据压缩协商
不需要考虑纠错、流量控制、序号、多点线路和半双工或单工链路,PPP只支持全双工链路。
b. PPP的帧格式
     在继续学习PPP之前,先来看看PPP协议的帧格式吧!

     其中PPP协议的帧界定字符由F-0x7E表示,A和C作为地址字段和控制字段,现在已经没有实际意义。首部的两个字节的协议字段指明数据中的协议类型,0x0021-IP数据报;0xC021-LCP数据;0x8021-NCP数据等。
     为了实现透明传输,我们依然要使用字节填充的方法,只不过对于同步和异步传输方式不同。对于异步传输来说,我们还是使用一个转义字符0x7D来进行;对于异步传输,由于是连续的比特流,我们使用零比特填充法,即每连续出现6个比特-1则添入一个比特-0,避免出现‘F‘,即

c. PPP协议的组成
     PPP协议主要分为三个部分:
-1. 将IP数据报封装到串行链路的办法,因为计算机内的I/O通信是并行的,而链路传输则是按比特流的串行,因此需要协议的封装转换,一般由网络适配器完成;
-2. 一个用来建立、配置和测试数据链路连接的链路控制协议LCP(Link Control Protocol),通信双方可以协商一些选项;
-3. 一套网络控制协议NCP(Network Control Protocol),用于支持上层的不同的网络协议;
    PPP协议的工作状态起止于链路静止状态,这时在用户PC机和ISP的路由器之间并不存在物理层的连接。整个过程如图:

     一个正常的工作过程开始于用户通过选择网络连接的选项,然后用户的PC机通过调制解调器呼叫路由器,路由器就能够检测到调制解调器发出的载波信号,在双方建立了物理层的连接之后,PPP协议就进入“链路建立”状态,其目的是建立链路层的LCP连接。
     此时LCP开始发送配置请求帧,进行协商一些配置选项,包括链路上的最大帧长、所使用的鉴别协议,以及不适用的PPP帧中的地址和控制字段等。LCP的配置请求帧依旧是一个PPP帧,其协议字段置为LCP对应的代码,而信息字段包含特定的配置请求。链路的另一端可以发送以下几种响应中的一种:
-配置确认帧:所有选项都接受;
-配置否认帧:所有选项都理解但不能接受;
-配置拒绝帧:选项有的无法识别或不能接受,需要协商;
     协商结束后双方建立了LCP链路,接着就进入鉴别阶段,在这一状态下,只允许传送LCP协议的分组、鉴别协议的分组以及监测链路质量的分组。若鉴别失败,则转到“链路终止”状态,成功则进入“网络层协议”状态。
     在“网络层协议”状态,PPP链路两端的网络控制协议NCP根据网络层的不同协议互相交换网络层特定的网络控制分组,总之也许PPP协议两端的网络层可能运行不同的网络层协议,但是都可以使用一个PPP协议进行通信。


二、使用广播信道的以太网。
     这里我们主要来看看局域网的相关技术。由于以太网已经是事实上的局域网标准,我们就主要介绍以太网。广播网络的一个重要问题时当所有结点共享通信链路时,如何避免冲突,一般有随机接入和受控接入两种。实际中我们更多的使用是随机接入,因此重点来介绍前者。这里的核心只有一个:CSMA/CD。
     CSMA/CD,即载波监听多点接入/碰撞检测的缩写,
-多点接入:说明这是个总线网络,许多计算机以多点接入的方式连接在一根总线上,协议的实质是“载波监听”和“碰撞监测”;
-载波监听:即“发送前先监听”,每个站在发送数据前要先检测一下总线上是否有其他站在发送数据,如果有,暂时不发送数据,等待信道空闲时再发送,总线上没有“载波”,这里只是一个习惯称呼;
-碰撞检测:即“边发送边监听”,适配器边发送数据边检测信道上的信号电压,以便判断自己在发送数据时其他站是否也在发送数据。
     如果考虑上信号在链路上的传播时延,那么过程类似这样;

     由上图我们可以看出:
-1. CSMA/CD不可能同时进行发送和接受,因此是半双工协议,即双向交替通信;
-2. 每一个端点在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性,这段时间最长为两个单程最长时间,将这个时间成为“争用期”,只有通过争用期的“考验”,才能肯定这次发送不会发生碰撞。
-3. 以太网把争用期定位51.2微秒,如果是一个标准10M/s的带宽的话,大概是512比特,也就是64字节,因此以太网规定了争用期大小的帧为最小长度,所有比这小的帧都认为是碰撞导致的丢弃帧,因此以太网的帧最小为64字节。
     CSMA/CD的要点为:
-1. 适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中,准备发送;
-2. 若适配器检测到信道空闲,即在发送间隙9.6微秒约96个比特时间内没有检测到信道上有信号,就发送这个帧;若检测到信道忙,则继续检测并等待信道转为空闲(加上96比特时间),然后发送这个帧;
-3. 在发送过程中继续检测信道,若一直未检测到碰撞,就顺利把这个帧成功发送完毕;若检测到碰撞,则中止数据发送,并发送人为干扰信号;
-4. 在中止发送后,适配器就执行指数退避算法,等待r被的512比特时间后,返回到步骤(2);

时间: 2024-10-07 06:31:49

计算机网络【三】:数据链路层 【转】的相关文章

计算机网络之数据链路层概述一->使用点对点信道的数据链路层和三个基本问题

1.数据链路和帧. (1)链路是指两相邻结点之间的一段物理线路.当需要在一条线路上传输数据时,就需要一些通信协议来对这些数据进行控制,把实现这些协议的硬件和软件与物理线路结合就构成了数据链路.实现的方法就比如说网络适配器. (2)帧就是当网络层向下传递Ip数据报后,数据链路层对Ip数据报进行封装,即加上首部和尾部,也就构成了帧. 2.三个基本问题 (1).封装成帧. 加上首部和尾部.首部和尾部的一个显著作用就是进行帧定界,以此接受端就能够知道那一部分时一个帧.首部帧定界符就是SOH,十六进制编码

计算机网络基础---数据链路层

数据链路层知识梳理 在数据链路层传输的数据单位为:帧 链路和数据链路 链路:一条点到点的物理线路. 数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传输. 若把实现这些协议的硬件和软件加到链路上,就构成了数据链路.(用网卡来实现这些协议的硬件和软件) 数据发送的模型 数据链路层主要使用的通道: 广播讯道: 一对多通信,一个节点发送的数据能够被广播信道上所有的节点接收到. 所有的节点都在同一个广播信道上发送数据,因此需要有专门的控制方法进行协调,避免发生冲突(冲突也叫碰撞). 主要有两种

计算机网络 chapter3数据链路层

第三章 数据链路层 定义了在单个链路上如何传输数据.这些协议与被讨论的各种介质有关.示例:ATM,FDDI等. 数据链路层使用的信道主要有以下两种: 点对点信道:使用一对一的点对点通信方式 广播信道:使用一对多的广播通信方式 链路:从一个结点到相邻结点的一段物理线路,中间没有任何其他的交换结点.是一条路径的组成部分. 数据链路:包括链路以及必需的通信协议. 现在最常用的是网络适配器以及通过以太网上网使用局域网适配器.一般的适配器都包括了数据链路层和物理层这两层的功能. 数据链路层的协议数据单元:

计算机网络之数据链路层

数据链路层协议有许多种,但是有三个基本问题则是共同的:封装成帧.透明传输和差错检测. (1)封装成帧 所有在因特网上传送的数据都是以IP数据报为传送单位的,网络层的IP数据报传送到数据链路层就成为帧的数据部分,在帧的数据部分的前面和后面添加上首部和尾部,构成一个完整的帧. 每一种链路层协议都规定了帧的数据部分的长度上线--最大传送单元MTU(Maximum Transfer Unit). (2)透明传输 透明传输,即无论什么样的比特流都能够通过数据链路层传输. 帧的开始和结束标记是专门指明的控制

[计算机网络基础]数据链路层(第一部分)

一:数据链路层的组帧: 组帧:网络层的IP数据报向下传送至数据链路层,成为数据链路层的数据单元,给数据单元加上首部和尾部,就组成数据链路层的一个帧.如图所示: 其中规定数据链路层帧的数据单元所能传送的最大数据长度(Max Transfer Unit),j加首部和尾部的最重要的作用就是帧定界. 特别的当帧的数据部分完全是由ASCII码编码形成的文本文件时,帧的首部和尾部可以使用特殊的帧界定符.即: 在ASCII码中规定SOH(start of headline)为标题首部,在数据链路层规定为帧的首

【计算机网络】数据链路层总结

数据链路层 目录 数据链路层概述 基本概念 数据链路层的三个基本问题 点对点信道的数据链路层 概述 PPP协议的组成 PPP帧的格式和要求 PPP协议的工作状态 广播信道的数据链路层 局域网和以太网 广播信道数据链路层的任务 适配器 CSMA/CD协议的要点 以太网应用CSMA/CD协议 信道利用率 以太网的MAC层 扩展以太网 高速以太网以及问题 1. 数据链路层概述 基本概念 数据链路层讨论的是如何把网络层的数据封装成帧,有效的进行通信传输. 链路是指:一个结点到另一个结点的具体的物理线路.

简要网络知识总结(摘自《计算机网络》)

一.概述 网络硬件 一般来说,目前使用的传输技术有两种,它们是:广播式链接和点到点链接. 按距离进行分类可以分为:局域网(LAN).城域网(MAN)和广域网(WAN). 大致上,无线网络可以分为三大类:系统互连.无线LAN.无线WAN. 网络软件 为了降低网路设计的复杂性,绝大多数网络组织成一堆相互叠加的层,每一层都建立在其下一层的基础之上.协议是指通信双方关于如何进行通信的一种约定.不同层之间有不同的通信协议. 对等体是不同机器上包含的对应层的实体称.这些对等体可能是进程或设备硬件,甚至可能是

2015秋课程

  一 二 三 四 五 一   操作系统    操作系统   二   计算机网络  软件测试方法 计算机网络   三 算法分析与设计   计算机体系结构     四 算法分析与设计   计算机体系结构    

unsigned char 类型

在蓝牙4.0的开发中,很多数据类型都用到了 unsigned char ,我觉得用这个类型的一个原因是相比较于整型,它占的空间更少. 比如: unsigned char a = 1;  // 占1个字节 int a = 1;    // 占2个字节 --------------------------------------separation-------------------------------------------- 值得注意的是,类型之间的计算要理清.对于 unsigned ch

Linux运维网络基础

一.计算机网络的定义 什么是网络? 一群具有独立功能的计算机组成的系统通过通信设备及传输媒体互连起来,在通信软件支持下,实现资源共享.信息交换的整个系统 产生计算机网络的基本条件:通信技术与计算机技术的结合 二.计算机网络的产生与发展    1954年 主机-终端的通信网络            第一代计算机网络 以单个主机为中心.面向终端设备的网络结构.系统中除主计算机具有独立的数据处理功能外,系统中所连接的终端设备均无独立处理数据的功能 1969年 主机-主机的通信网络  ARPANET网