数据链路层协议的分析与应用
第一章网络协议概述
协议就是指一套规则和协定。规定计算机间交换的消息格式和含义的协定就被称之为通信协议,或计算机网络协议。
为什么我们要引入通信协议这个概念呢?原因是基本的通信硬件是能够从一点到另一点传送位串的机制。但是,如果光使用纯硬件来进行通信的话,那就好象是用0和1在进行编程一样,非常的不方便。所以为了方便编程人员,联网的计算机使用了复杂的软件,为应用程序提供方便的高层接口。这种软件自动处理大部分的底层通讯细节的问题,使应用程序间的通信变的很容易。因此,大多数的应用程序都要依靠网络软件来通信,并不直接与网络硬件打交道。
协议的设计者并不是设计一个单一的,庞大的协议来为所有可能的通信规定完整的细节,而是把通信问题进一步划分为多个子问题,然后再为每个子问题设计各自的协议。为了确保通信系统的有效和高效就必须仔细地划分各个协议。并且确保这些协议之间能够协同工作。这里就提出了协议族的概念。为了能让协议之间更好的协同工作。就必须有一个总体设计规划,而不能孤立地开发每个协议,而是要将协议设计和开发成完整的,协同的集合即协议族。
网络协议一般分为不同层次进行开发,每一层负责不同的通信功能。TCP/IP不是仅仅指TCP协议或IP协议,它是一个协议族,即是一组不同层次上的多个协议的一个组合。TCP/IP通常被认为是一个四层协议系统,如下图所示。
每一层负责不同的功能:
1) 链路层,有时也称作数据链路层或网络接口层,它一般包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
2) 网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在T C P / I P协议族中,网络层协议包括I P协议(网际协议),I C M P协议(I n t e r n e t 互联网控制报文协议),以及I G M P协议(I n t e r n e t组管理协议)。
3 ) 运输层主要为两台主机上的应用程序提供端到端的通信。在T C P / I P协议族中,有两个互不相同的传输协议: T C P(传输控制协议)和U D P(用户数据报协议)。T C P 为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面,UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。这两种运输层协议分别在不同的应用程序中有不同的用途
4 ) 应用层负责处理特定的应用程序细节。
在TCP/IP协议族中有很多协议如下图:
T C P和U D P是两种最为著名的运输层协议,二者都使用I P作为网络层协议。虽然T C P 使用不可靠的I P服务,但它却提供一种可靠的运输层服务。与T C P不同的是,U D P是不可靠的,它不能保证数据报能安全无误地到达最终目的。I P是网络层上的主要协议,同时被T C P和U D P使用。T C P和U D P的每组数据都通过端系统和每个中间路由器中的I P层在互联网中进行传输。在上图中,我们给出了一个直接访问I P的应用程序。这是很少见的,但也是可能的(一些较老的选路协议就是以这种方式来实现的。当然新的运输层协议也有可能使用这种方式)I P层用它来与其他主机或路由器交换错误报文和其他重要信息。
A R P(地址解析协议)和R A R P(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换I P层和网络接口层使用的地址。
上图中的链路就是指沿着通信路径连接相邻节点的通信信道。因此为了将一个数据报从源主机传输到目的主机,数据报必须通过沿端到端路径上的每段独立的链路传输。通过特定的链路,传输节点将此数据报封装在链路层帧(帧是指链路层协议交换的数据单元)中,并将该帧传输到链路上;接受节点接收该帧并取出数据报。当应用程序用T C P传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对
收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如下图所示。
T C P传给I P的数据单元称作T C P报文段或简称为T C P段(T C Ps e g m e n t)。I P传给网络接口层的数据单元称作I P数据报(IP datagram)。通过以太网传输的比特流称作帧(Fr a m e )。
以太网数据传输是通过广播实现的,将要发送的数据包发往连接在一起的所有主机,包中包含着应该接收数据包主机的正确地址,只有与数据包中目标地址一致的那台主机才能接收。但是,当主机工作监听模式下,无论数据包中的目标地址是什么,只要经过自己网络接口,主机都将接收。
数据包接受过程
当网络中的两台主机通信的时候,源主机将写有目的的主机地址的数据包发向目的主机。TCP/IP协议中数据包从IP层交给数据链路层,而网络接口是不会识别IP地址的,因此在网络接口数据包又增加了一部分以太帧头的信息。在帧头中有两个域,分别为只有网络接口才能识别的源主机和目的主机的物理地址,这是一个与IP地址相对应的48位的MAC地址。当数据帧到达一台主机的网络接口时,正常情况下,网络接口读入数据帧,如果数据帧中携带的物理地址是自己的或者是广播地址,则将数据帧交给上层协议软件,也就是IP层,否则就将这个帧丢弃。对于每一个到达网络接口的数据帧,都要进行这个过程。然而,当主机工作在监听模式下,所有的数据帧都将被交给上层协议软件处理。
链路层协议用来在独立的链路上移动数据报。链路层协议定义了在链路两端的节点之间交互的分组格式,以及当发送和接收分组时这些节点采取的动作。每个链路层帧通常封装了一个网络层的数据报。例如在发送和接收帧时,链路层协议所采取的动作包括差错检测,重传,流量控制和随机访问。链路层协议包括以太网,802.11无线LAN(也被称为Wi-fi),令牌环和PPP:在很多场合下,ATM也能视为链路层协议。例如,一个链路上层协议可能提供,也可能不提供可靠的交付。因此,网络层必须能够在各段链路层提供异构服务的情况下,完成它的端到端的工作。
虽然网络层的任务是端到端地将传输层报文从源主机传送到目的主机,而链路层协议的任务是节点到节点地将网络层的数据报传送路径中的单段链路。链路层的一个重要特点就是数据报在路径的不同链路上可能由不同链路层协议处理。例如,数据报在第一段链路上可能由以太网处理,在最后一段链路上可能由PPP处理,在中间的所有链路上由广域链路层协议处理。需要注意的是,不同的链路层协议提供的服务可能是不同的。
数据链路层协议提供的服务主要有:
1.成帧。几乎所有的链路层协议都在网络层数据报在链路上传输之前,用链路层帧
将其封装。
2.链路访问。媒体访问控制协议定义了帧在链路上传输的规则。
3.可靠交付。当链路层协议提供可靠的传输服务时,它可以保证将每个网络层的数
据报无差错地通过链路层。
4.流量控制。链路每一个端点具有有限容量的帧缓冲。
5.差错检测。当帧中的一个比特作为1传输时,接收方节点可能错误地判断是零,
反之也是。
6.差错纠正。差错纠正和差错检测类似,区别在于接收方不仅能检测是否帧中引入
了差错,而且能够准确地判断帧中的差错出现在哪里(并因此纠正这些差错)。
7.全双工和半双工。采用全双工传输时,链路两端的节点可以同时传输分组。采用
半双工传输时,一个节点不能同时传输和接收。