GPRS工作原理以及其通信协议

更新时间:2024-01-18 08:55:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

关于GPRS通信协议

简介:首先介绍了GPRS的工作原理和工作特点,然后介绍GPRS的协议模型和应用范围,接着介绍了GPRS在传输中所需要用的3种协议,最后介绍了一种基于单片机的GPRS的无线数据传送系统 GPRS的工作原理简介

GPRS工作时,是通过路由管理来进行寻址和建立数据连接的,而GPRS的路由管理表现在以下3个方面:移动终端发送数据的路由建立;移动终端接收数据的路由建立;以及移动终端处于漫游时数据路由的建立。

对于第一种情况,当移动终端产生了一个PDU(分组数据单元),这个PDU经过SNDC层处理,称为SNDC数据单元。然后经过LLC层处理为LLC帧,通过空中接口(空中接口(Air Interface)是指用户终端(UT)和无线接入网络(RAN)之间的接口)送到GSM网络中移动终端所处的SGSN。SGSN把数据送到GGSN。GGSN把收到的消息进行解装处理,转换为可在公用数据网中传送的格式(如PSPDN的PDU),最终送给公用数据网的用户。为了提高传输效率,并保证数据传输的安全,可以对空中接口上的数据做压缩和加密处理。 在第二种情况中,一个公用数据网用户传送数据到移动终端时,首先通过数据网的标准协议建立数据网和GGSN之间的路由。数据网用户发出的数据单元(如PSPDN中的PDU),通过建立好的路由把数据单元PDU送给GGSN。而GGSN再把PDU送给移动终端所在的SGSN上,GSN把PDU封装成SNDC数据单元,再经过LLC层处理为LLC帧单元,最终通过空中接口送给移动终端。

第三种情况是一个数据网用户传送数据给一个正在漫游的移动用户。这种情况下的数据传送必须要经过归属地的GGSN,然后送到移动用户A。

GPRS的英文全称是:“General Packet Radio Service”(译作“通用分组无线服务”),它是利用“包交换”(Packet-Switched)的概念发展起来的一套无线传输方式。所谓“包交换 ”就是将Data封装成许多独立的封包,再将这些封包一一传送出去,形式上有点类似邮局中的寄包裹。其作用在于只有当有资料需要传送时才会占用频宽,而且可以以传输的资料量计价,这对广大用户来说是较合理的计费方式,因为像Internet这类的数据传输大多数的时间频宽是闲置的。 GPRS网络是基于现有的GSM网络来实现的。在现有的GSM网络中需增加一些节点,如GGSN(Gateway GPRS Supporting Node,GPRS网关支持节点)和SGSN( Serving GSN,GPRS服务支持节点),GSN是GPRS网络中最重要的网络节点。GSN具有移动路由管理功能,它可以连接各种类型的数据网络,并可以连到 GPRS寄存器。GSN可以完成移动终端(即手机)和各种数据网络之间的数据传送和格式转换。GSN可以是一种类似于路由器的独立设备,也可以与GSM中的MSC(Mobile Switching Center,移动交换中心,将本网和其它网络连接起来)集成在一起。GSN有两种类型:一种为SGSN( Serving GSN,服务GSN),另一种为GGSN(Gateway GSN,网关GSN),SGSN的主要作用是记录移动终端的当前位置信息,并且在移动终端和GGSN之间完成移动分组数据的发送和接收。GGSN主要是起网关作用,它可以和多种不同的数据网络连接,如ISDN(综合业务数字网)、PSPDN(分组交换公用数据网)和LAN(局域网)等。国外有些资料甚至将GGSN称为GPRS路由器。GGSN可以把GSM网中的GPRS 分组数据包进行协议转换,从而可以把这些分组数据包传送到远端的TCP/IP或X.25网络。

GPRS网不但具有覆盖范围广、数据传输速度快、通信质量高、永远在线和按流量计费等优点,而且其本身就是一个分组型数据网,支持TCP/IP协议,可以直接与Internet互通。因此,GPRS在无线上网、环境监测便携型、交通监控、移动办公等行业中具有无可比拟的性价比优势。

GPRS的主要特点

相对原来GSM的电路交换数据传送方式,GPRS采用分组交换技术。由于使用“分组”技术,用户上网可以免受掉线的麻烦。此外,使用GPRS上网的方法与 WAP不同, 用WAP上网就如在家中上网,先“拨号连接”,而上网后便不能同时使用该电话线,但GPRS则较优越,下载资料和通话可以同时进行。 从技术上来说,声音的传送(即通话)继续使用GSM,而数据的传送则使用GPRS,就把移动电话的应用提升到一个更高层次,而且不需重新组网,十分经济。 GPRS的用途十分广泛,包括通过手机发送及接收电子邮件、在Internet上浏览等。使用GPRS,数据可实现分组发送和接受,这意味着用户总是在线且按流量计费,降低了服务成本。 GPRS的最大优势在于数据传输速度不是WAP所能比拟的。目前的GSM移动通信网的传输速度为每秒9.6K字节,GPRS手机在今年初推出时已达到 56Kbps的传输速度,到现在更是达到了115Kbps(此速度是常用56k modem理想速率的两倍)。除了速度上的优势,GPRS还有“永远在线”的特点,即用户随时与网络保持联系。举个例子,用户访问Internet时,点击一个超级链接,手机就在无线信道上发送和接受数据,主页下载到本地后,没有数据传送,手机就进入一种“准休眠”状态,手机释放所用的无线频道给其它用户使用,这时网络与用户之间还保持一种逻辑上的连接,当用户再次点击,手机立即向网络请求无线频道用来传送数据,而不像普通拨号上网那样断线后还得重新拨号才能上网。 GPRS的协议模型 Um接口是GSM的空中接口。Um接口上的通信协议有5层,自下而上依次为物理层、MAC(Media Access Control)层、LLG(Logical Link Control)层、SNDC层和网络层。Um接口的物理层为射频接口部分,而物理链路层则负责提供空中接口的各种逻辑信道。GSM空中接口的载频带宽为 200KHZ,一个载频分为8个物理信道。如果8个物理信道都分配为传送GPRS数据,则原始数据速率可达200Kbps。考虑前向纠错码的开销,则最终的数据速率可达164kbps左右;MAC为媒质访问控制层。MAC的主要作用是定义和分配空中接口的GPRS逻辑信道,使得这些信道能被不同的移动终端共享;LLG层为逻辑链路控制层。它是一种基于高速数据链路规程HDLG的无线链路协议;SNDC被称为子网依赖结合层。它的主要作用是完成传送数据的分组、打包,确定TCP/IP地址和加密方式;网络层的协议目前主要是Phasel阶段提供的 TCP/IP和L25协议。TCP/IP和X.25协议对于传统的GSM网络设备(如:BSS、NSS等设备)是透明的。 GPRS的应用范围

GPRS是在现有GSM网络上开通的一种新型的分组数据传输业务,在有GPRS承载业务支持的标准化网络协议的基础上,GPRS可以提供系列交互式业务服务:

1、点对点面向连接的数据业务。为两个用户或者多个用户之间发送多分组的业务,该业务要求有建立连接、数据传送以及连接释放等工作程序。

2、单点对多点业务。根据某个业务请求者的要求,把单一信息传送给多个用户。该业务又可以分为点对多点多信道广播业务、点对多点群呼业务和IP多点传播业务。

3、点对点无连接型网络业务。各个数据分组彼此互相独立,用户之间的信息传输不需要端到端的呼叫建立程序,分组的传送没有逻辑连接,分组的交付没有确认保护,是由IP协议支持的业务。

GPRS除了提供点对点、点对多点的数据业务外,还能支持用户终端业务、补充业务、 GSM短消息业务和各种GPRS电信业务。

GPRS DTU(数据传输终端)的INERNET接入技术

GPRS DTU(数据传输终端)的INERNET接入技术,通过点对点协议建立通信链路,将集成有GPPS模块的DTU采集处理后的数据经UDP/IP封包,采用TCP/IP协议进行远程无线数据传输。所以我们必须了解ppp协议 和UDP/IP、TCP/IP协议,下面介绍了3种协议 (一)ppp协议

1.1PPP协议简介

PPP 提供了一种在点对点的链路上封装多协议数据报( IP 、IPX和AppleTalk)的标准方法。它不仅能支持IP地址的动态分配和管理;同步(面向位的同步数据块的传送)或异步(起始位+数据位+奇偶校验位+停止位)物理层的传输;网络层协议的复用;链路的配置、质量检测和纠错;而且还支持多种配置参数选项的协商。

PPP协议主要包括三部分:LCP(Link Control Protocol)链路控制协议、NCP(Network Control Protocol)和PPP的扩展协议(如Multilink Protocol,)。随着网络技术的不断发展,网络带宽已不在是瓶颈,所以PPP扩展协议的应用也就越来越少,因此往往人们在叙述PPP协议时经常会忘记它的存在。而且大部分网络教材上会将PPP的认证也作为PPP协议的一个主要部分,实际上这是一个错误概念的引导。PPP协议默认是不进行认证配置参数选项的协商,它只作为一个可选的参数,当点对点线路的两端需要进行认证时才需配置。当然在实际应用中这个过程是不可忽略的,例如我们使用计算机上网时,需要通过PPP协议与NAS设备互连,在整个协议的协商过程中,我们需要输入用户名和密码。因此当别人说PPP协议主要包括LCP、认证和NCP协议三个部分时,你不要认为他的说法有误,而只是不够准确罢了。 1.2 总结 ", PPP协议由于自身诸多的优点取代了SLIP协议,从而成为目前被广泛使用的数据链路层协议 ", SLIP协议归咎其其简单数据包的封装方式,使其仅能在点对点的链路上封装单一的网络层协议(IP协议) ", PPP协议包括LCP协议、NCP协议和PPP扩展协议 ", RFC1661文档中说明了PPP协议缺省是不进行PAP和CHAP认证 第二章 PPP协议的三组件 2.1 PPP协议的组件

首先简单介绍一下PPP协议的三组件:PPP协议的封装方式、LCP协议的协商过程和NCP协议的协商过程,然后再结合具体的LCP和NCP数据报的封装格式和两个阶段实际数据报文的交换过程,进一步理解PPP的LCP和NCP协商阶段的具体内容。 2.1.1 PPP协议的封装

我们知道ISO参考模型共分七层,自下而上分别是物理层、数据链路层、网 络层、传输层、会话层、表示层和应用层。通常我们会依据协议所完成的 功能将它与这七层进行对照,PPP协议就属于数据链路层协议。

4

我们在提及PPP协议的报文封装格式时,不可不先提一下HDLC协议。HDLC也是最常用的数据链路层协议,它是从SDLC协议衍进过来的,许多常用的数据链路层协议的封装方式都是基于HDLC的封装格式的,同样PPP协议也不例外,它也采用了HDLC的定界帧格式。下图为PPP数据帧的 封装格式:

以下为对PPP数据帧封装格式的一点说明: ", 每一个PPP数据帧均是以一个标志字节起始和结束的,该字节为0x7E。 ", 紧接在起始标志字节后的一个字节是地址域,该字节为0xFF。我们熟知网络是分层的,且对等层之间进行相互通信,而下层为上层提供服务。当对等层进行通信时首先需获知对方的地址,而对不同的网络,在数据链路层则表现为需要知道对方的MAC地址、X.121地址、ATM地址等;在网络层则表现为需要知道对方的IP地址、IPX地址等;而在传输层则需要道对方的协议端口号。例如如果两个以太网上的主机希望能够通信的话,首先发送端需获知对端的MAC地址。但由于PPP协议是被运用在点对点的链路上的特殊性,它不像广播或多点访问的网络一样,因为点对点的链路就可以唯一标示对方,因此使用PPP协议互连的通信设备 的两端无须知道对方的数据链路层地址,所以该字节已无任何意义,按照协议的规定将该字节填充为全1的广播地址。 ", 同地址域一样,PPP数据帧的控制域也没有实际意义,按照协议的规定通信双方将该字节的内容填充为0x03。 ", 就PPP协议本身而言,我们最关心的内容应该是它的协议域和信息域。

协议域可用来区分PPP数据帧中信息域所承载的数据报文的内容。协议域的内容必须依据ISO 3309的地址扩展机制所给出的规定。该机制规定协议域所填充的内容必须为奇数,也即是要求低字节的最低位为”1”,高字节的最低位为”0”。如果当发送端发送的PPP数据帧的协议域字段不符合上述规定,则接收端会认为此数据帧是不可识别的,那么接收端会向发送端

发送一个Protocol-Reject报文,在该报文尾部将完整地填充被拒绝的报文。协议域的具体取值如下表所示:

",",说明

协议域类型中的*号表示可从(0-F)中任意取值 ", 信息域缺省时最大长度不能超过1500字节,其中包括填充域的内容(在图2-1中并未表示,因为它属于信息域的一部分),1500字节大小等于PPP协议中配置参数选项MRU(Maximum Receive Unit)的缺省值,在实际应用当中可根据实际需要进行信息域最大封装长度选项的协商。信息域如果不足1500字节时可被填充,但不是必须的,如果填充则需通信

双方的两端能辨认出有用与无用的信息方可正常通信。我们通常在通信设备的配置过程中,遇到最多的也是MTU(MaximumTransmit Unit)。对于一个设备而言,它网络的层次均使用MTU和MRU两个值,一般情况下设备的MRU会比MTU稍大几个字节,但这需根据各厂商的设备而定。 ", CRC校验域主要是对PPP数据帧传输的正确性进行检测的,当然在数据帧中引入了一些传输的保证机制是好的,但可以反过来说,同样我们会引入更多的开销,这样可能会增加应用层交互的延迟,对于这个字节的使用我们可以参考一下X.25协议和FR协议就知道

2.1.2 LCP协议

为了能适应复杂多变的网络环境,PPP协议提供了一种链路控制协议来配置和测试数据通信链路,它能用来协商PPP协议的一些配置参数选项;处理不同大小的数据帧;检测链路环路、一些链路的错误;终止一条链路。 ",",说明

详细内容请见3.1.2节LCP协议 2.1.3 NCP协议

PPP的网络控制协议根据不同的网络层协议可提供一族网络控制协议,常用的有提供给TCP/IP网络使用的IPCP网络控制协议和提供给SPX/IPX网络使用的IPXCP网络控制协议等,但最为常用的是IPCP协议,当点对点的两端进行NCP参数配置协商时,主要是用来通信双方的网络层地址。 ",",说明

详细内容请见3.1.3节NCP协议 2.2 总结 ", PPP协议的三组件包括PPP协议的封装方式、LCP协议和NCP协议 ", PPP协议是数据链路层协议,它的数据帧封装格式非常类似于HDLC ", PPP协议可通过协议域来区分数据域中净载荷的数据类型 ", PPP协议通过LCP协议完成数据链路的配置和测试 ", PPP协议通过NCP协议完成点对点通信设备之间网络层通信所需参数的配置

第三章 PPP链路的建立 3.1 PPP链路的建立过程 3.1.1 PPP的状态转移图

数据通信设备(在本文中指路由器)的两端如果希望通过PPP协议建立点对点的通信,无论哪一端的设备都需发送LCP数据报文来配置链路(测试链路)。一旦LCP的配置参数选项协商完后,通信的双方就会根据LCP配置请求报文中所协商的认证配置参数选项来决定链路两端设备所采用的认证方式。协议缺省情况下双方是不进行认证的,而直接进入到NCP配置参数选项的协商,直至所经历的几个配置过程全部完成后,点对点的双方就可以开始通过已建 立好的链路进行网络层数据报文的传送了,整个链路就处于可用状态。只有当任何一端收到LCP或NCP的链路关闭报文时(一般而言协议是不要求NCP有关闭链路的能力的,因此通过情况下关闭链路的数据报文是在LCP协商阶段或应用程序会话阶段发出的);物理层无法检测到载波或管理人员对该链路进行关闭操作,都会将该条链路断开,从而终止PPP会话。以下为PPP协议整个链路过程需经历阶段的状态转移图:

在点对点链路的配置、维护和终止过程中,PPP需经历以下几个阶段: ", 链路不可用阶段,有时也称为物理层不可用阶段,PPP链路都需从这个阶段开始和结束。当通信双方的两端检测到物理线路激活(通常时检测到链路上有载波信号)时,就会从当前

这个阶段跃迁至下一个阶段(即链路建立阶段)。先简单提一下链路建立阶段,在这个阶段主要是通过LCP协议进行链路参数的配置,LCP在此阶段的状态机也会根据不同的

事件发生变化。当处于在链路不可用阶段时,LCP的状态机是处于initial(初始化状态)或starting(准备启动状态),一旦检测到物理线路可用,则LCP的状态机就要发生改变。当然链路被断开后也同样会返回到这个阶段,往往在实际过程中这个阶段所停留的时间是很短的,仅仅是检测到对方设备的存在。 ", 链路建立阶段,也是PPP协议最关键和最复杂的阶段。该阶段主要是发送一些配置报文来配置数据链路,这些配置的参数不包括网络层协议所需的参数。当完成数据报文的交换后,则会继续向下一个阶段跃迁,该下一个阶段既可是验证阶段,也可是网络层协议阶段,下一阶段的选择是依据链路两端的设备配置的(通常是由用户来配置,但对NAS或BAS设备的PPP模块缺省就需要支持PAP或CHAP中的一种认证方式)。在此阶段LCP的状态机会发生两次改变,前面我们说了当链路处于不可用阶段时,此时LCP的状态机处于initial或starting,当检测到链路可用时,则物理层会向链路层发送一个UP事件,链路层收到该事件后,会将 LCP的状态机从当前状态改变为Request-Sent(请求发送状态),根据此时的状态机LCP会进行相应的动作,也即是开始发送Config-Request报文

来配置数据链路,无论哪一端接收到了Config-Ack报文时,LCP的状态机又要发生改变,从当前状态改变为opened状态,进入Opened状态后收到Config-Ack报文的一方则完成了当前阶段,应该向下一个阶段跃迁。同理可知,另一端也是一样的,但须注意的一点是在链路配置阶段双方是链路配置操作过程是相互独立的。如果在该阶段收到了非LCP数据报文,则会的将这些报文丢弃。在实际配置当中在该阶段可能会遇到很多情况,在LCP协议章节中会详细介绍可能遇到的情况,但最好结合一些troubleshooting案例能更好的帮助理解。 ", 验证阶段,多数情况下的链路两端设备是需要经过认证后才进入到网络层协议阶段,缺省情况下链路两端的设备是不进行认证的。在该阶段支持PAP和CHAP两种认证方式,验证方式的选择是依据在链路建立阶段双方进行协商的结果。然而,链路质量的检测也会在这个阶段同时发生,但协议规定不会让链路质量的检测无限制的延迟验证过程。在这个阶段仅支持链路控制协议、验证协议和质量检测数据报文,其它的数据报文都会被丢弃。如果在这个阶段再次收到了Config-Request报文,则又会返回到链路建立阶段。 ", 网络层协议阶段,一旦PPP完成了前面几个阶段,每种网络层协议(IP、IPX和AppleTalk)会通过各自相应的网络控制协议进行配置,每个NCP协议可在任何时间打开和关闭。当一个NCP的状态机变成Opened状态时,则PPP就可以开始在链路上承载网络层的数据包报文了。如果在个阶段收到了Config-Request报文,则又会返回到链路建立阶段。", 网络终止阶段,PPP能在任何时候终止链路。当载波丢失、授权失败、链路质量检测失败和管理员人为关闭链路等情况均会导致链路终止。链路建立阶段可能通过交换LCP的链路终止报文来关闭链路,当链路关闭时,链路层会通知网络层做相应的操作,而且也会通过物理层强制关断链路。对于NCP协议,它是没有也没有必要去关闭PPP链路的。 3.1.2 LCP协议

3.1.2.1 LCP数据报文的封装方式

LCP数据报文是在链路建立阶段被交换的,它作为PPP的净载荷被封装在PPP数据帧的信息域中,此时PPP数据帧的协议域固定填充0xC021,但在链路建立阶段的整个过程中信息域的内容是在变化的,它包括很多种类型的报文,所以这些报文也要通过相应的字段来区分。LCP数据报文的一般封装方式如下图所示:

", 代码域的长度为一个字节,主要是用来标识LCP数据报文的类型的。在链路建立阶段时,接收方收到LCP数据报文的代码域无法识别时,就会向对端发送一个LCP的代码拒绝报文(Code-Reject报文)。根据RFC的规定,到目前为止LCP共包括以下几种类型的数据报文:

", 标识域也是一个字节,其目的是用来匹配请求和响应报文。一般而言在进入链路建立阶段时,通信双方无论哪一端都会连续发送几个配置请求报文(Config-Request报文),而这几个请求报文的数据域可能是完全一样的,而仅仅是它们的标志域不同罢了。通常一个配置请求报文的ID是从0x01开始逐步加1的,当对端接收到该配置请求报文后,无论使用何种 报文(回应报文可能是Config-Ack、Config-Nak和Config-Reject三种报文中的一种)来回应对方,但必须要求回应报文中的ID要与接收报文中的ID一致,当通信设备收到回应后就可以将该回应与发送时的进行比较来决定下一步的操作。 ",",说明

后面教材中的所有例子,均可参考以下色标的含义

范例中报文色标含义如下图所示:

例1:假设点对点通信的一端发送了一个Config-Request报文,报文内容如下:

7E FF 03 C0 21 01 01 00 17 02 06 00 0A 00 00 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 7E 从报文中可以看出这个配置请求报文包括5个配置参数选项。

当对端正确接收到了该报文后,应该回应一个Config-Ack报文,报文内容如下:

7E FF 03 C0 21 02 01 00 17 02 06 00 0A 00 00 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 7E 该报文中唯一修改的内容就是代码域(02表示是Config-Ack报文),标识域与原报文中的一样。 ", 长度域的内容 = 总字节数据(代码域+标志域+长度域+数据域)。长度

域所指示字节数之外的字节将被当作填充字节而忽略掉,而且该域的内容不能超过MRU的值。 ", 数据域的内容依据不同LCP数据报文的内容也是不一样的。 ",",说明

数据域的详细内容请见3.1.2.3节 3.1.2.2 LCP数据报文的分类

在前一小节我们可以看到,一共包括12种LCP数据报文,我们依据各报文的 的功能又将其具体细化为以下三类: ", 链路配置报文,主要用来建立和配置一条链路的。 ", 链路终止报文,主要用来终止一条链路的。 ", 链路维护报文,主要用来维护和调试链路的。 3.1.2.3 LCP的链路配置报文

链路配置报文与其它两类报文有着明显的区别,它主要是用来协商链路的配置参数选项的,因此这种报文的数据域还要携带许多配置参数选项的,而另外两类报文中部分报文的格式会稍有不同(请参见RFC1661),图3-4表明了数据配置选项的报文格式:

链路配置报文主要包括Config-Request 、Config-Ack 、Config-Nak 和Config-Reject四种报文。当通信双方需要建立链路时,无论哪一方都需要发送Config-Request报文并携带每一端自已所希望协商的配置参数选项,下表为一些可选的配置参数选项:

这个表格内的内容并非完全,可能还有一新定议的配置选项未列在其中,如有兴趣可参照相关的文档说明。当接收方收到Config-Request报文时,会在剩下的三种类型的报文中选择一 种来响应对方的请求报文,到底选择哪种报文来响应对方需依据以下两个条件: ", 不能完全识别配置参数选项的类型域,我们知道一个Config-Request报文中会同时携带多个配置参数选项,而对于一个支持PPP协议的通信设备也不一定会支持上表中所有列出的配置选项,即使支持,也可能在实际应用中关闭掉某些选项功能。(例如:当使用PPP协议通信的一端可能将一些无用的配置选项都关闭了,而仅支持0x01和0x03两个配置参数选

项,因此当对方发送的Config-Request报文中含有0x04配置选项时,对于本端而言这个配置参数选项就无法识别,也即是不支持这个配置参数选项的协商)。 ", 如果能支持完全识别配置参数选项, 但接收端也可能不认可

Config-Request报文中配置参数选项数据域中的内容(例如:当一端发送魔术字配置参数选项中的魔术字为全0,而对端认为应该为其它值,这种情况就属于不支持配置参数选项中的内容)。所以依据上面的两个条件,我们就可以明确在回应对方配置请求报文时,采用何种报文回应。 ", 当接收Config-Request报文的一端能识别发送过来的所有配置参数选项且 认可所有配置参数选项数据域的内容时,接收端将会给对端回一个Config-Ack报文并将配置请求报文中的配置参数选项原封不动的放置在Config-Ack报文的数据域内(根据协议的规定是不可改变配置参数选项的顺序)。当配置请求报文的发送端收到Config-Ack报后,则会从当前阶段进入到下一个阶段。

例2:假设点对点通信的一端发送了一个Config-Request报文,报文内容如下:

7E FF 03 C0 21 01 01 00 17 02 06 00 0A 00 00 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 7E 当对端正确接收到了该报文后,应该发送一个Config-Ack报文,报文内容如下:

7E FF 03 C0 21 02 01 00 17 02 06 00 0A 00 00 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 7E 唯一改变的内容就是代码域(02表示是Config-Ack报文),此例与例1完全一样,但两都说明的问题有则重点。 ", 当接收Config-Request报文的一端能识别发送端所发送过来的所有配置参数选项,但对部分配置参数选项数据域中的内容不认可时,接收端将会给对端回应一个Config-Nak报文,该报文中只携带不认可的配置参数选项,而这些配置参数选项的数据内容为本端希望的值。然而当接收端收到Config-Nak 报文后, 会重新发送Config-Request 报文, 而这个Config-Request报文与上一次所发送的Config-Request报文区别在于那些被对端不认可的配置参数选项的内容被填写到刚刚协商完后再次发送的Config-Request报文中(Config-Nak报文发送回来的那些配置参数选项)。

例3:假设点对点通信的一端发送了一个Config-Request报文,报文内容如下:

7E FF 03 C0 21 01 01 00 17 02 06 00 0A 00 00 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 7E 该数据报文中有下划线的配置参数选项的内容为对端不认可的。 当对端正确接收到了该报文后,发现类型域为0x02的配置参数选项可识别,但该配置参数选项数据域的内容不认可,应发送一个Config-Nak报文且该报文中将携带希望的配置参数选项内容,报文内容如下:

7E FF 03 C0 21 03 01 00 0A 02 06 00 0E 00 00 7E 该报文中返回的值已经被更改,且当发端收到该报文后会重新发送一个Config-Request报文,报文内容如下:

7E FF 03 C0 21 01 04 00 17 02 06 00 0E 00 00 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 7E 仔细观察是不是新的配置请求报文与老的配置请求的报文ID不一样。 ", 当接收Config-Request报文的一端不能识别所有的发送端发送过来的配置参数选项时,此时接收端将会向对端回一个Config-Reject报文,该报文中的数据域只携带那些不能识别的配置参数选项(当配置参数选项的类型域不识别时)。当对端接收到Config-Reject报文后,同样会再次发送一个Config-Request报文,这个配置请求报文与上一次发送的区别在于将 不可识别的那些配置参数选项给删除了。

例4:假设点对点通信的一端发送了一个Config-Request报文,报文内容如下:

7E FF 03 C0 21 01 01 00 17 02 06 00 0A 00 00 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 7E 下划线所表示的配置参数选项为对端不可识别的。

当对端正确接收到了该报文后,发现类型域为0x02的配置参数选项不识别,应该回应一个Config-Reject报文,报文内容如下:

7E FF 03 C0 21 04 01 00 0A 02 06 00 0A 00 00 7E

该报文如果被原发送端接收后,又会重新发送一个Config-Request报文,报文内容如下:

7E FF 03 C0 21 01 04 00 11 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 7E 这时我们能看到,类型域为02的配置选项在下一次的请求报文中被删除了。所以我们能够看出,链路配置阶段也可能要经过几次协商后才能完成,但这与点对点两端的设备有着密切的联系。对于PPP的两个端点而言,两者是独立完成各自的配置参数选项的协商过程的。具体的配置参数选项待后续的章节中讲解。 3.1.2.4 LCP的链路终止报文

链路终止报文分为Terminate-Request和Terminate-Reply两种报文。LCP报文中提供了一种机

制来关闭一个点对点的连接,想要关断链路的一端会持续发送Terminate-Request报文,直到收到一个Terminate-Reply为止。接收端一旦收到了一个Terminate-Request报文后,必须回应一个Terminate-Reply报文,同时等待对端先将链路断开后,再完成本端的所有断开的操作。 LCP的链路终止报文的数据域与链路配置报文的数据域不一样,链路终止报文中无需携带各配置参数选项。对于链路终止报文也同样需要ID一致,当接收到Terminate-Reply报文才会做链路终止操作。

3.1.2.5 LCP的链路维护报文

除上述两种报文类型以外,剩余的所有报文类型均归属链路维护报文。 ", 当接收端发现LCP报文的代码域是一个不合法的值时,将会向发送端回应一个Code-Reject报文,在回应报文中会将所拒绝报文的内容附加上。

例5:假设点对点通信的一端发送了一个Config-Request报文,报文内容如下:

7E FF 03 C0 21 0E 01 00 19 02 06 00 0A 00 00 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 1F02 7E 有下划线的部分表示这个代码域在标准中未定义,从而无法识别。

当对端正确接收到了该报文后,发现LCP数据报文的代码域为0x0E时,应该发送一个 Code-Reject报文,报文内容如下:

7E FF 03 C0 21 07 01 00 1D 0E 01 00 19 02 06 00 0A 00 00 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 1F 02 7E ", 当接收端发现所接收到的数据帧的协议域是一个不合法的值时,将会向发送端回应一个Protocol-Reject报文,发送端收到该拒绝报文后将停止发送该种协议类型的数据报文了。Protocol-Reject报文只能在LCP的状态机处于Opened状态时才可被处理,而在其它状态接收到该报文将被丢弃。在Protocol-Reject报文的数据域内将携带所拒绝报文的协议类型和报文内容。

例6:假设点对点通信的一端发送了一个协议域未定义(无法识别)的报文,报文内容如 下:

7E FF 03 77 77 01 01 00 19 02 06 00 0D 00 00 05 07 03 09 02 0D 04 06 2F 02 7E 其中下划线部分为PPP数据帧的协议域,0x7777表示一个未定义的类型(也即对端无法识别)。当对端正确接收到了该报文后,发现该报文的协议域为0x7777,该值未在RFC中未有明确定义,应该发送一个Protocol-Reject报文,报文内容如下:

7E FF 03 C0 21 08 01 00 18 77 77 01 00 00 19 02 06 00 0D 00 00 05 07 03 09 02 0D 04 06 2F 02 7E ", Echo-Request报文和Echo-Reply报文主要用来检测双向链路上自环的问题, 除此之外还可附带做一些链路质量的测试和其它功能。当LCP状态机处于Opened状态时,如果接收到了Echo-Request,就需向对端回送一个Echo-Reply报文。否则在其它LCP状态下,该类型的报文会被丢弃。这种类型数据报文的长度域后不是直接跟数据域,而是要插入4个字节的Magic-Number(魔术字),该魔术字是在LCP的Config-Request的配置参 数选项协商时获得的。

例7:假设点对点通信的一端接收到了一个Echo-Request报文,报文内容如下: 7E FF 03 C0 21 09 01 00 08 02 06 00 0D 7E 有下划线的部分表示魔术字。

当对端正确接收到了该报文后,应该发送一个Echo-Reply报文,报文内容如下: 7E FF 03 C0 21 0A 01 00 08 02 06 00 0D 7E 3.1.3 NCP协议

NCP协议的数据报文是在网络层协议阶段被交换的,在这个阶段所需的一些配置参数选项协商完后,就可以进行网络层的通信,也即是在点对点的链路上可以开始传送网络层的数据报文了。NCP协议主要包括IPCP、IPXCP等,但我们在实际当中最常遇见的也只有IPCP协议了,

如果对IPXCP或其它的一些网络控制协议有兴趣,则可参见RFC1552。 3.1.3.1 IPCP

IPCP控制协议主要是负责完成IP网络层协议通信所需配置参数的选项协商的。IPCP在运行的过程当中,主要是完成点对点通信设备的两端动态的协商IP地址。我们依据两端设备的配置选项可将IPCP的协商过程分为”静态”和”动态”。何为静态,何为动态,这是一个相对的概念,也是自已总结出来的,可能不太准确,只作为参考使用。我们在下面会具体描述这两个过程。IPCP的数据的文同LCP的数据报文非常类似,只不过一个是在网络层协议阶段协商 配置参数选项,而LCP协议则是在链路建立阶段协商配置参数选项的。除此之外是两者在所使用报文上的相似之处,我们知道LCP共包括十几种报文,而IPCP也包括多种报文,但它的报文类型只是LCP数据报文的一个子集(只 有LCP代码域从1到7这七种报文),而且实际的数据报文交换过程中也仅涉及以下几种:Config-Request、Config-Ack、Config-Nak和Config-Reject(代码域从1到4,而链路终止报文一般而言是不在网络协议阶段使用的,而且也是不需要的)。以下就具体介绍一下IPCP控制协议的静态和动态的两个过程,

实际上两者的区分是在于互连设备IP地址的获取过程。 ", 静态协商,也即是不协商。点对点的通信设备两端在PPP协商之前已配

置好了IP地址,所以就无须在网络层协议阶段协商IP地址,而双方唯一要做的就是告诉对方自身的IP地址。在IPCP控制协议完成整个配置的过程时,最理想的情况将会看到如图所示的四种报文,而无其它报文再被发送。如果当配置请求中所携带的网络层配置参数选项类似于LCP配置参数选项协商过程一样,可能会有对方不识别的配置参数选项或不被对 方所认可的配置参数选项的内容。这样在这个阶段的协商过程中可能还会看到其它的一些报文。

在静态协商时,如果IPCP的Config-Request报文中只含有地址配置参数选项时(实际中可能还会附带其它配置参数选项,这些配置参数选项的协商与LCP阶段的一样,而我这里只提到了IP地址配置参数选项),无论是发送方还是接收方都同时发送Config-Request报文,其中配置选项中只含有各自的IP地址。当对端收到该报文后,会发送一个Config-Ack报文, 这个目的是告诉对端我已经知道了你的IP地址,对路由器而言会增加一条到对端接口的主机路由。刚进入网络层协议阶段时,IPCP的状态机是initial的,但当完成了上述的整个过程后,IPCP的状态机改变为Opened,双方也就可以开始网络层数据网的传送了。IPCP协议中并未规定,当一端接收到Config-Request报文后,它从报文的配置参数选项中可获知对端的IP地址,但并不与本端的IP地址进行比较.我们也知道,一般而言点对点的两端应该是在一个网段。但如果双方的地址不在一个网段,就不给对方回应Config-Ack报文,而是无条件的回送

一个回应报文。因此说点对点通信的两端如果是手动设置每一端的IP地址时,无须双方地址在同一网段。

例8:假设IPCP在网络层协议阶段开始协商配置参数选项(这里只举协商IP地址的配置参 数选项地的过程),发送方设置IP地址为192.168.0.1,接收方设置IP地址为192.168.0.2, 发送方发送给Config-Request报文内容如下: 7E FF 03 80 21 01 01 00 0A 03 06 C0 A8 00 01 7E 在这个例子中我们能看见明显的改变之处再于PPP协议域字段由原先的0xC021改变为0x8021,下划线的部分表示本端的IP地址。

当对端正确接收到了该报文后,应该回应一个Config-Ack报文,报文内容如下: 7E FF 03 80 21 02 01 00 0A 03 06 C0 A8 00 01 7E 同样的接收方给发送方也发送一个Config-Request报文内容如下,但此时报文中IP地址配置参数选项的值为本端的IP地址(192.168.0.2): 7E FF 03 80 21 01 01 00 0A 03 06 C0 A8 00 02 7E 发送方回应一个Config-Ack报文给接收方,报文内容如下: 7E FF 03 80 21 02 01 00 0A 03 06 C0 A8 00 02 7E ", 动态协商,也即是一端配置为动态获取IP地址,另一端通过手动方式配置IP地址,且允许给对端分配IP地址,这个过程实际上可与窄带拨号上网的过程相一致,如果我们想用计算机上网,均会安装一个拨号适配器,而

且计算机中的拨号网络适配器是采用动态获取IP地址的方式。这个例子与一个例子相似,也就是在IPCP的Config-Request报文中只携带IP地址的配置参数选项。如果是配置参数选项中含有其它配置参数选项,则可能会遇到其它的一些情况(如不识别配置参数选项的代码域或不认可配置参数选项的内容,但对于这些情况的处理方法和LCP配置参数选项的处理方法一致)。图3-6中我们可以看出发送方连续发送了两次Config-Request报文,才能完成发送方的协商过程。而接收方仍然只需要发送一次Config-Request即可完成本端的协商过程。 由于发送方没有配置IP地址(而是动态获取IP地址),所以在IPCP的Config-Request报文的IP地址配置参数配置选项中的IP地址填充全0(也即是0.0.0.0),这样当对端收到这个Config-Request报文时,当接收方收到该配置请求报文后会迅检测IP地址的内容,如果发送为全0,则认为对端的这个IP地址不是我所希望的值,这样就回应一个Config-Nak报文,并将希望分配给对方的IP地址填充到Config-Nak报文内。这时当接收方收到Config-Nak报文后,就会重新发送一个Config-Request报文,这个报文中的IP地址配置选项为对方在Nak报文中所提供的。接收方IP 地址的配置过程与静态时的一样, 只需发送一个Config-Request报文即

可,当收到发送方的Config-Ack报文,就表示接收方的IP地址配置完成。 例9: 假设IPCP在网络层协议阶段开始协商配置参数选项(这里只举协商IP地址的配置参数选项地的过程),发送方没有配置IP地址,而接收方配置了IP地址为192.168.0.2,接收方可给发送方分配IP地址(192.168.0.1),发送方发送给接收方的Config-Request报文内 容如下:

7E FF 03 80 21 01 01 00 0A 03 06 00 00 00 00 7E 有下划线的部分表示本端的IP地址。

当对端正确接收到了该报文后,应该回应一个Config-Nak报文,报文内容如下: 7E FF 03 80 21 03 01 00 0A 03 06 C0 A8 00 01 7E 当接收方收到该报文后,重新发送一个Config-Request报文,报文内容如下: 7E FF 03 80 21 01 02 00 0A 03 06 C0 A8 00 01 7E 接收方再次收到发送方的一个Config-Request报文,此时将回应一个Config-Ack报文,报文内容如下:

7E FF 03 80 21 02 02 00 0A 03 06 C0 A8 00 01 7E 请仔细观察一下这些报文在交互过程中,PPP数据帧净载荷内的数据报文的类型域和报文 ID。同样的接收方给发送方也发送一个Config-Request报文,报文内容如下: 7E FF 03 80 21 01 01 00 0A 03 06 C0 A8 00 02 7E 发送方应回送一个Config-Ack给接收方,报文内容如下: 7E FF 03 80 21 02 01 00 0A 03 06 C0 A8 00 02 7E 本章节的一些内容可能没有明确写出,只是将IPCP配置参数选项配置过程中最关键的部分做了一些说明,如果想深入了解决IPCP或IPXCP,可参见相关的RFC文档。 3.2 总结 ", PPP协议的状态转移图包括链路不可用阶段、链路建立阶段、认证阶段、 网络层协议阶段和链路终止阶段 ", LCP协议依据报文的功能可分为链路配置报文、链路终止报文和链路维 ", LCP协议的链路配置报文主要是用来协商一些可选的配置参数选项 ", LCP协议的链路终止报文主要是用来终止一条PPP链路 ", LCP协议的链路维护报文主要是用来测试和调试PPP链路 ", NCP协议主要负责网络层配置参数选项的协商,它包括”静态协商”和”动态协商 第四章 LCP的可选配置参数 4.1 LCP的参数配置选项

LCP协议在对链路配置过程中需要进行一些可选配置参数选项的协商,我们在前面讲述的过程中已列举了许多配置参数选项,但我们只挑选其中较为重要的几个参数做相应的扩展说明(魔术字和认证协议选项)。关于一些更具体的细节和未涉及到的配置参数选项,请参数PPP的RFC文档(RFC1661)。

4.1.1 魔术字(Magic-Number)

魔术字是在LCP的Config-Request报文中被协商的,并且可被其它一些其它类型的LCP数据报文所使用,如前面已经说过的Echo-Request、Echo-Reply报文和Quality-Protocol报文等。对于PPP协议本身它是不要求协商魔术字的,如果在双方不协商魔术字的情况下,某些LCP的数据报文需要使用魔术字时,那么只能是将魔术字的内容填充为全0;反之,则填充为配置参数选项协商后的结果。魔术字在目前所有的设备当中都是需要进行协商的, 它被放在Config-Request的配置选项参数中进行发送,而且需要由自身的通信设备独立产生,协议为了避免双方可能产生同样的魔术字,从而导致通信出现不必要的麻烦,因此要求由设备采用一些随机方法产生一个独一无二的魔术字。一般来说魔术字的选择会采用设备的系列号、网

络硬件地址或时钟。双方产生相同魔术字的可能性不能说是没有的,但应尽量避免,通常这种情况是发产在相同厂商的设备进行互连时,因为一个厂商所生产的设备产生魔术字的 方法是一样的。

我们知道魔术字产生的作用是用来帮助检测链路是否存在环路,当接收端收到一个Config-Request 报文时, 会将此报文与上一次所接收到的Config-Request进行比较,如果两个报文中所含的魔术字不一致的话,表明链路不存在环路。但如果一致的话,接收端认为链路可能存在环路,但不一定存在环路,还需进一步确认。此时接收端将发送一个Config-Nak报文,并在该报文中携带一个重新产生的魔术字, 而且此时在未接收到任何

Config-Request 或Config-Nak 报文之前, 接收端也不会发送任何的Config-Request报文。这时我们假设可能会有以下两种情况发生: ", 链路实际不存在环路,而是由于对方在产生魔术字时与接收端产生的一致,但实际这种情况出现的概率是很小的。当Config-Nak被对端接收到后,应该发送一个Config-Request报文(此报文中的魔术字为Nak报文中的),当对端接收到后,与上次比较,由于接收端已经在Nak报文中产生了一个不同的魔术字,此时接收端收到的Config-Request报文中的魔术字与上次配置请求报文中不一样,所以接收端可断定链路不存在环路。 ", 链路实际上确实存在环路,一段时间后Config-Nak报文会返回到发送该报文的同一端。这时接收端比较这个Config-Nak报文与上一次发出去的一样,因此链路存在环路的可能性又增大了。我们知道当一端收到了一个Config-Nak报文时,又会发送一个Config-Request报文(该报文中的魔术字与Config-Nak中的一致),这样又回到了最初的状态,在这条链路

上就会不断的出现Config-Request、Config-Nak报文,因此这样周而复始下去,接收端就会认为PPP链路存在环路的可能性在不断增加,当达到一定数量级时,就可认为此链路存在环路。但在实际应用中根据不同设备实现PPP协议的方法,我们在链路环路检测时可采用两种方法。第一种机制就是如上面所述的,这个过程不断地重复,最终可能会给LCP状态机发一个Down事件,这时可能会使LCP的状态机又回到初始化阶段,又开始新一轮的协商。当然对于某些设备还会采用第二种机制,就是不产生任何事件去影响当前LCP的状态机,而 是停留在请求发送状态。但这时认为链路有环路的一端设备需要不断的向链路上发送Echo-Request报文来检测链路环路是否被解除,当接收端收到Echo-Reply报文时,就认为链路环路被解除,从而就可能进行后续的PPP的过程。 4.1.2 认证协议

PPP协议也提供了可选的认证配置参数选项,缺省情况下点对点通信的两端是不进行认证的。在LCP的Config-Request报文中不可一次携带多种认证配置选项,必须二者择其一(PAP/CHAP),选择最希望的那一种,一般是在PPP设备互连的设备上进行配置的,但一般设备会默认支持一个缺省的认证方式(PAP是大部分设备所默认的认证方式)。当对端收到该配置请求报文后,如果支持配置参数选项中的认证方式,则回应一个Config-Ack报文;否 则回应一个Config-Nak报文,并附带上自希望双方采用的认证方式。当对方接收到Config-Ack 报文后就可以开始进行认证了, 而如果收到得是Config-Nak报文,则根据自身是否支持Config-Nak报文中的认证方式来回应对方,如果支持则回应一个新的Config-Request(并携带上Config-Nak报文中所希望使用的认证协议),否则将回应一个Config-Reject报文,那么双方就无法通过认证,从而不可能建立起PPP链路。

PPP支持两种授权协议:PAP(Password Authentication Protocol)和CHAP(Challenge Hand Authentication Protocol)。

4.1.2.1 PAP认证

我们所知两个设备在使用PAP进行认证之前,应该确认那一方是验证方,那一方是被验证方。实际上对于使用PPP协议互连的两端来说,既可作为认证方,也可作为被认证方。但通常情况下,PAP只使用一个方向上的认证。一般在两端设备使用PAP协议之前,均会设备上进行一些相应的配置,对于宽带工程师而言MA5200可谓是大家最熟悉的产品了,它默认就作为验证方,但可通过使用命令PAP Authentication PAP/CHAP来更改认证方式,而对于被验证方而言只需设置用户名和密码即可。

PAP认证是两次握手,在链路建立阶段,依据设备上的配置情况,如果是使用PAP认证,则验证方在发送Config-Request报文时会携带认证配置参数选项,而对于被验证方而言则是不需要,它只需要收到该配置请求报文后根据自身的情况给对端返回相应的报文。如果点对点的两端设备采用的是PAP双向认证时,也即是它同时也作为验证方,则此时需要在配置请求报文中携带认证配置参数选项。因此,我们可以总结一下,如果对于点对点的两个设备在 PPP 链路建立的过程中使用的认证方式为PAP的话,那么验证方在其Config-Request报文中必须含有认证配置参数选项,且该认证配置参数选项的数据域为0xC023,下图为PAP认证的过程:

当通信设备的两端在收到对方返回的Config-Ack报文时,就从各自的链路建立阶段进入到认证阶段,那么作为被验证方此时需要向验证方发送PAP认证的请求报文,该请求报文携带了用户名和密码,当验证方收到该认证请求报文后,则会根据报文中的实际内容查找本地的数据库,如果该数据库中有与用户名和密码一致的选项时,则回向对方返回一个认证请求响应,告诉对方认证已通过。反之,如果用户名与密码不符,则向对方返回验证不通过的响应报文。如果双方都配置为验证方,则需要双方的两个单向验证过程都完成后,方可进入到网络层协议阶段,否则在一定次的认证失败后,则会从当前状态返回链路不可用状态。

例10: 如图4-1所示,当路由器A(被验证方)收到了路由器B 的Config-Ack报文后,因为是使用PAP认证,所以作为被验证方的路由器A应主动向验证方(路由器B)发送认证请 求报文(PAP Authenticate),用户名和密码均为163,报文的内容如下: 7E FF 03 C0 23 01 01 00 0C 03 31 36 33 03 31 36 33 7E 下划线的前四个字节是用户名,后四个字节是密码。

当路由器B收到了该报文后,会向路由器A回应一个PAP Authenticate Ack报文,报文内容 如下:

7E FF 03 80 21 02 01 00 05 00 7E 此时所回应的报文中,并未携带任何数据,如果是认证不通过,则会在返回的报文中指是 因何原因无法认证通过,可能是无此用户名或密码不匹配。

4.1.2.2 CHAP认证

与PAP认证比起来,CHAP认证更具有安全性,从前面认证过程的数据包交换过程中不然发现,采用PAP认证时,被验证是采用明文的方式直接将用户

名和密码发送给验证方的,而对于PAP认证则不一样。CHAP为三次握手协议,它只在网络上传送用户名而不传送口令,因此安全性比PAP高。在验证一开始,不像PAP一样是由被验证方发送认证请求报文了,而是由验证方向被验证方发送一段随机的报文,并加上自己的主机名,我们通称这个过程叫做挑战。当被验证方收到验证方的验证请求,从中提取出验证方所发送过来的主机名,然后根据该主机名在被验证方设备的后台数据库中去查找相同的用户名的记录,当查找到后就使用该用户名所对应的密钥,然后根据这个密钥、报文ID和验证方发送的随机报文用Md5加密算法生成应答,随后将应答和自己的主机名送回,同样验证方收到被验证方发送回应后,提取被验证方的用户名,然后去查找本地的数据库,当找到与被验证方一致用户名后,根据该用户名所对应的密钥、保留报文ID和随机报文用Md5加密算法生成结果,和刚刚被验证方所返回的应答进行比较,相同则返回Ack,否则返回Nak,下图为CHAP的认证过程:

例11: 如图4-2所示,当路由器A(被验证方)收到了路由器B 的Challenge报文后,报文 内容如下:

7E FF 03 C2 23 01 01 00 1C 10 FF 41 CF 22 AA 8E F1 B9 99 9A 79 A7 56 78 C4 A7 4d 41 35 32 30 30 41 7E 下划线的前16个字节是验证方随机产生的一段报文,后7个字节是验证方的主机名 (MA5200A),而且单个字节10表示随机报文的长度。

而此时路由器A会根据用户名所对应的密钥使用报文的ID和该报文的内容生成一个回应报 文,报文内容如下:

7E FF 03 C2 23 02 01 00 1F 10 18 86 22 FF CE 81 D0 68 FF 80 85 00 A7 E3 85 35 70 70 6B 69 73 73 40 68 75 61 7E 我们将这个回应报文与验证方发送的挑战报文进行比较,报文的代码域已由原01改为02 , 总报文的长度有变化, 主要后而一个下划线的内容是被验证方的主机名(ppkiss@hua),而且此时回应的16个字节的报文已经是经过MD5算法加密过的。当验证方收到了这个回应报文后,会根据报文中被验证方的主机名(ppkiss@hua)在本地的数据库中去查找密钥,然后再对原发先发送的那段挑战报文进行MD5的算法加密,如果所得的结果与对方刚发过来的16个字节的加密值一样的话,则就会发送一个报文通知被验证方,你的认证已经通过,我们可以进入到下一个阶段了。在实际应用当中,我们很多都是使用PC机来进行拨号这个过程,

实际中当验证方发送挑战后,PC机只接收而并不去查本地数据库,而直接使用在拨号对话框中所输入的密码和报文的ID及报报文的内容进行MD5算法加密(这个在PC机采用PPPOE软件拨入到MA5200时就是这样的)。

下面来看一下验证通过时,验证方给被验证方所发送的一段报文内容:

7E FF 03 C2 23 03 01 00 17 57 65 6C 63 6F 6D 65 20 74 6F20 4D 41 35 32 30 30 41 2E 7E 此时所回应的报文的代码域为03,且报文的实际内容是,Welcom to MA5200A。 4.1.3 MRU(Maxium Receive Unit)

这个配置参数选项主要是Config-Request报文的发送端告诉接收端,本端接收到的PPP数据帧的数据域的最大值。通常情况下这个参数选项使用默认值(1500字节),因此在Config-Request报文中双方都不会携带这个配置参数选项。当在某些特殊应用中,可能会使用到小于1500字节或大于1500字节的情况,这时在Config-Request报文就会携带要协商的MRU配置参数选项值。 4.2 总结 ", 魔术字可以在链路配置阶段被协商,数据报文可借助魔术字来检PPP链 路是否存在环路 ", PAP(密码认证协议)认证是二次握手,它是直接在网络上传送明文的 用户名和密码,因此这种协议安全性不高 ", CHAP(挑战性握手认证协议)认证是三次握手,它只在网络上传送验 证方和被验证方的主机名,而并不传送密码,因此相比之处CHAP比 PAP更安全 ", PPP协议缺省的MRU是1500,而对于通信的双方可根据实际需要对MRU进行协商 第五章 PPP扩展协议 5.1 PPP扩展协议概述 5.1.1 MP出现的背景

我们知道ISDN可以在两个系统之间提供2B+D和30B+D多通道捆绑能务,从而为用户能够提供更多可用的带宽。诸如上述的许多链路捆绑功能需要软件和硬件的协同工作,而且更多的基于硬件来实现的。然而我们是否考虑过仅仅通过软件的实现来完成链路捆绑的功能,同时还考虑到很多实际链路的情况,对于软件在实现过程中还要能对不同速率的链路进行捆绑。我们可以通过在发送数据之前增加一定数据的字节头,其中含有为重组数据而所需的一 些字段。随着PPP的广泛应用,MP作为PPP功能扩展协议应运而生。它可为用户提供更大的带宽,实现数据的快速转发。同时,还可实现对链路资源进行动态分配,有效的利用宝贵的资源。但随着网络技术的发展,网络的带宽已不再是瓶颈,所以对于使用PPP扩展协议已没有实际意义,只在本章中简单做一下介绍,如果想进一步了解该协议,可参考相应的RFC1717或提供的参考书目。

5.1.2 MP(Multilink Protocol)协议

MP的协商较为特殊。MP配置参数选项的协商是在LCP协商过程中完成的, 协商MP配置参数选项的目的完成以下几个过程: ", 表明系统是否支持将多个物理链路捆绑成一个逻辑链路 ", 系统在多链路上接收到了对端发送的数据单元后,能够通过附加在这些数据之前的重组字段对这些分段的数据单元进行重组 ", 逻辑链路为了能够提高传输的效率,可以不使用单一PPP物理链路上的最大接收单元,可以重新协商新的逻辑链路上使用的最大接收单元进行数据报文的发送和接收。

MP协议可以用来灵活的调整点对点系统之间的多条独立物理链路,它可为整个系统提供一个虚拟链路,虚拟链路的带宽是N个链路的捆绑之和(N≥1)。而对于被捆绑的链路并未做出特殊要求,可以将同步链路和异步链路进行捆绑,同样也可将低速链路和高速链路进行捆绑。使用该协商可将多个PPP的链路捆绑成一条使用,而决定不同通道是否需进行多链路捆绑有两个条件: 只有两个链路的Discriminator和验证方式、用户完全相符时,才能对

两个链路进行捆绑。这就意味着只有当验证完成后,才能真正完成MP的协商过程。MP不会导致链路的拆除。如果配置了MP,两个链路不符合MP条件,则会建立一条新的MP通道,这同时也表明允许MP为单链路。MP的捆绑是完全依照用户进行的,只有相同用户才能进行捆绑。如一端配置了MP,另一端不支持或未配MP,则建立起来的链路为非MP链路。 5.2 总结 ", MP协议属于PPP协议的扩展协议 ", MP协议可依据终端指示符和验证方式对不同的物理链路进行捆绑

(2) GPRS数据传输设计 UDP协议 1 UDP协议的简介

UDP协议 是User Datagram Protocol的简称, 中文名是用户数据包协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。在网络中它与TCP协议一样用于处理 UDP数据包。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。

与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。 2.传输层协议UDP 2.1UDP协议报头

UDP报头由4个域组成,其中每个域各占用2个字节,具体如下:

UDP源端口号 目标端口号 数据报长度 校验值

UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。 数据报的长度是指包括报头和数据部分在内的总字节数。因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)。数据报的最大长度根据操作环境的不同而各异。从理论上说,包含报头在内的数据报的最大长度为65535字节。不过,一些实际应用往往会限制数据报的大小,有时会降低到8192字节。

UDP协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。这与TCP协议是不同的,后者要求必须具有校验值。

许多链路层协议都提供错误检查,包括流行的以太网协议,也许想知道为什么UDP也要提供检查和。其原因是链路层以下的协议在源端和终端之间的某些通道可能不提供错误检测。虽然UDP提供有错误检测,但检测到错误时,UDP不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。

2.2 用户数据报头格式 域:

源端口是可选域,当其有意义时,它指的是发送进程的端口,这也就假定了在没有其它信息的情况下,返回信息应该向什么地方发送。如果不使用它,则在此域中填0。目的端口在有

特定的目的网络地址时有意义。长度指的是此用户数据报长度的八进制表示。(这表明最小的数据报长度是8。)校验码有16位,是对IP头,UDP头和数据中信息包头的数位取反之和再取反得到的。

包头从概念上说是在UDP头信息之前的,它包括有源地址,目的地地址,所使用的协议和UDP长度。这些信息使信息不能被错误地接收。这个校验过程与TCP中使用的过程一致。

如果计算出的校验码为零,它将被全零发送。全零的校验值意味着发送者未产生校验码。 用户接口:

用户接口应该允许创建新的接收端口,在接收端口的接收操作有:应该返回一个八进制数说明源端口和源地址,允许数据报传送,指定数据,源和目标端口和目的地地址。 IP层接口:

UDP模块必须能够决定源和目标的网络地址,而且必须能够从包头中得知所使用的协议。一个可能的接口方式是返回整个数据报,包括接收操作返回的包头。这样的接口还应该允许UDP向IP传送完整的带包头的数据报用于传送。由IP来确定一致性并计算校验码。 协议应用:

此协议的最主要的用途是网际名称服务器和小文件传输协议。 协议号:

在IP中使用它时,它的协议号是17(八进制中是21)。 2.3 UDP信息包

UDP信息包由UDP标题和数据组成。UDP的标题结构如图所示,它由5个域组成:源端端口(SourcePort)、目的地端口(DestinationPort)、用户数据包的长度(Length)和检查和(Checksum)。其中,前4个域组成UDP标题(UDPheader),每个域由4个字节组成;检查和域占据2个字节,它用来检测传输过程中是否出现了错误;用户数据包的长度包括所有5个域的字节数。

UDP信息包的标题结构

检查和的详细计算可在RFC1071中找到,现举一例说明使用检查和检测错误的道理。例如,假设从源端A要发送下列3个16位的二进制数:word1,word2和word3到终端B,检查和计算如下: word1 Word1

从发送端发出的4个(word1,2,3以及检查和)16位二进制数之和为1111111111111111,如果接收端收到的这4个16位二进制数之和也是全“1”,就认为传输过程中没有出差错。许多链路层协议都提供错误检查,包括流行的以太网协议,读者也许想知道为什么UDP也要提供检查和。其原因是链路层以下的协议在源端和终端之间的某些通道可能不提供错误检测。虽然UDP提供有错误检测,但检测到错误时,UDP不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。 2.4 UDP的伪首部

UDP校验和覆盖的内容超出了UDP数据报本身的范围。为了计算校验和,UDP把伪首部引入数据报中,在伪首部中有一个值为0的填充八位组用于保证整个数据报的长度为16比特的整数倍,这样才好计算校验和。填充八位组和伪首部并不随着UDP数据报一起传输,也不计算在数据报长度之内。为了计算校验和,要先把校验和字段置为0,然后对整个对象,包括伪首部、UDP的首部和用户数据报,计算一个16比特的二进制反码和。使用伪首部的目的是检验UDP数据报已到达正确的目的地。理解伪首部的关键在于认识到:正确的目的地包括了特定的主机和机器上特定的协议端口。UDP报文的首部仅仅指定了使用的协议端口号。因此为了确保数据报能够正确到达目的地,发送UDP数据报的机器在计算校验和时把目的机的IP地址和应有的数据都包括在内。在最终的接收端,UDP协议软件对校验和进行检验时要用到携带UDP报文的IP数据报首部中的lP地址。如果校验和正确,说明UDP数据报到达了正确主机的正确端口。

伪首部的源IP地址字段和目的IP地址字段记录了发送UDP报文时使用的源IP地址和目的IP地址。协议字段指明了所使用的协议类型代码(UDP是17),而长度字段是UDP数据报的长度。接收方进行正确性验证的时候,必须要把这些字段的信息从IP报文的首部中抽取出来,以伪首部的格式进行装配,然后再重新计算校验和。 2.5 UDP的封装与协议的分层 在交给IP层之前,UDP给用户要发送的数据加上一个首部。IP层又给从UDP接收到的数据报加上一个首部。最后,网络接口层把数据报封装到一个帧里,再进行机器之间的传送。如图所示。帧的结构根据底层的网络技术来确定。通常网络帧结构包括一个附加的首部。

在接收端,最底层的网络软件接收到一个分组后把它提交给上一层模块。每一层都在向上送交数据之前剥去本层的首部,因此当最高层的协议软件把数据送到相应的接收进程的时候,所有附加的首部都被剥去了。也就是说,最外层的首部对应的是最底层的协议,而最内层的首部对应的是最高层的协议。研究首部的生成与剥除时,可从协议的分层原则得到启发。当把分层原则具体的应用于UDP协议时,可以清楚地知道目的机上的由IP层送交UDP层的数据报就等同于发送机上的UDP层交给IP层的数据报。同样,接收方的UDP层上交给用户进程的数掘也就是发送方的用户进程送到UDP层的数据。在多层协议之间,职责的划分是清楚而明确的,IP层只负责在互联网上的一对主机之间进行数据传输,而UDP层只负责区分一台主机上的多个源端口或目的端口。

2.6 层次的划分及UDP校验和的计算

分层原则与UDP校验和的计算过程看来存在一定的冲突。UDP校验和覆盖了一个伪首部,而这个伪首部中包括了源IP地址和FI的IP地址。一般情况下,可以认为进行发送的用户必须知道目的IP地址,在发送数据时把目的IP地址告诉了UDP层,这样UDP层就可以直接得知目的IP地址,而不必到IP层寻找。但是,源IP地址要根据IP层对路由的选择而定,因为源IP地址会表示出数据报传输时所经过的网络接口。因此,如果不与IP层进行交互,UDP层是无法得知源IP地址的。假定UDP软件要求IP层提供源IP地址和目的IP地址,再用这些信启、去生成伪

首部,计算校验和,丢弃伪首部,并将UDP数掘报交给IP层传输。一种可选的提高软件效率的方法是让UDP层把UDP数据报封装到一个IP数据报中,从IP层获取源地址,把源地址和目的地址填到数据报首部中的相应字段中,再计算UDP校验和,最后把这个IP数据报交给IP层,而IP层只需要填充IP报文首部中的其余字段。

UDP和IP这样密切的交互操破坏了各层的功能独立性,明显是一种对严格的层次结构的折衷,完全是出于实际需要。之所以忽略违反分层结构的情况,是因为几乎不可能在不指定目的机的前提下识别目的应用程序,而且我们希望对UDP所使用的地址和IP所使用的地址进行有效的映射。

2.7 UDP的多路复用、多路分解和端口

协议各层的软件都要对相邻层的多个对象进行多路复用和多路分解操作。UDP软件接收多个应用程序送来的数据报,把它们送给IP层进行传输,同时它接收从IP层送来的UDP数据报,并把它们送给适当的应用程序。UDP软件与应用程序之间所有的多路复用和多路分解都要通过端口机制来实现。实际上,每个应用程序在发送数据报之前必须与操作系统进行协商,以获得协议端口和相应的端口号。当指定了端口之后,凡是利用这个端口发送数据报的应用程序都要把端口号放入UDP报文的源端口字段中。在处理输入时,UDP从IP层软件接收了传入的数据报,根据UDP的目的端口号进行多路分解操作,如下图。理解UDP端的最简单的方式是把它看成是一个队列。在大多数实现中,当应用程序与操作系统协商,试图使用某个给定端口时,操作系统就创建一个内部队列来容纳收到的报文。通常应用程序可以指定和修改这个队列的长度。当UDP收到数据报时,先检查当前使用的端口是否就是该数据报的目的端口。如果不能匹配,则发送一个ICMP端口不可达报文并丢弃这个数据报。如果匹配,它就把这个数据报送到相应的队列中,等待应用程序的访问。当然,如果端口已满也会出错,UDP也要丢弃传入的这个数据报。

2.8 UDP协议端口号的分配

如何分配协议端口号这个问题很重要,因为两台计算机之间在交互操作之前必须确认一个端口号,才能保证数据报在两个进程间正常传输。端13分配有两种基本方式。一种是使用中央管理机构。大家都同意让一个管理机构根据需要分配端口号,并发布分配的所有端口号的列表。所有的软件在设计时都要遵从这个列表。这种方式又称为统一分配(universal assignment),这些被管理机构指定的端口分配又称为熟知端口分配(well.known port assignment)。第二种端口分配方式是动态绑定。在使用动态绑定时,端口并非为所有的机器知晓。当一个应用程序需要使用端13。为了知道另~台机器上的当前端13号,就必须送出

一个请求报文,然后目的主机进行回答,把正确的端口号送回来。

TCP/IP采用一种混合方式对端口地址进行管理,分配了某些端口号,但为本地网点和应用程序留下了很大的端13取值范围。已分配的端13号从较低的值开始,向上扩展,较高的值留待进行动态分配。 3 UDP协议的功能

在TCP/IP协议族中,用户数据报协议UDP提供应用程序之间传输数据报的基本机制。UDP提供的协议端口能够区分在一台机器上运行的多个程序。也就是说,每个UDP报文不仅传输用户数据,还包括目的端口号和源端口号,这使得目的机器上的UDP软件能够把报文送到正确的接收进程,而接收进程也能回送应答报文。UDP使用底层的Internet协议在各机器之间传输报文,提供和IP一样的不可靠、无连接数据报交付服务。它没有使用确认来确保报文到达,没有对传入的报文排序,也不提供反馈信息来控制机器之间信息流动的速度。因此,UDP报文可能会出现丢失、反复或乱序到达的现象。而且,分组到达的速率可能大于接收过程能够处理的速率。

4 UDP协议的几个特性

(1) UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。

(2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。

(3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。 (4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。

(5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。

(6)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。

虽然UDP是一个不可靠的协议,但它是分发信息的一个理想协议。例如,在屏幕上报告股票市场、在屏幕上显示航空信息等等。UDP也用在路由信息协议RIP(Routing Information Protocol)中修改路由表。在这些应用场合下,如果有一个消息丢失,在几秒之后另一个新的消息就会替换它。UDP广泛用在多媒体应用中,例如,Progressive Networks公司开发的RealAudio软件,它是在因特网上把预先录制的或者现场音乐实时传送给客户机的一种软件,该软件使用的RealAudio audio-on-demand protocol协议就是运行在UDP之上的协议,大多数因特网电话软件产品也都运行在UDP之上。我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。 5 UDP技术优缺点

说到UDP的优点和缺点我们就要提一下TCP, 互联网通信协议分为TCP和UDP两种. UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。

与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中

出现数据报的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。

相对于TCP协议,UDP协议的另外一个不同之处在于如何接收突法性的多个数据报。不同于TCP,UDP并不能确保数据的发送和接收顺序。例如,一个位于客户端的应用程序向服务器发出了以下4个数据报 D1 D22 D333 D4444

但是UDP有可能按照以下顺序将所接收的数据提交到服务端的应用: D333 D1 D4444 D22

事实上,UDP协议的这种乱序性基本上很少出现,通常只会在网络非常拥挤的情况下才有可能发生。TCP是面向连接的,有比较高的可靠性,一些要求比较高的服务一般使用这个协议,如FTP、Telnet、SMTP、HTTP、POP3等,而UDP是面向无连接的,使用这个协议的常见服务有DNS、SNMP、QQ等。对于QQ必须另外说明一下,QQ2003以前是只使用UDP协议的,其服务器使用8000端口,侦听是否有信息传来,客户端使用4000端口,向外发送信息。 6结束语

UDP是一种不可靠的网络协议,那么还有什么使用价值或必要呢?其实在有些情况下UDP协议可能会变得非常有用。因为UDP具有TCP所望尘莫及的

速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统资源,无疑使速度受到严重的影响。UDP 由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。UDP与TCP位于同一层,但不能够检测数据包的顺序错误并进行重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询——应答的服务,例如NFS。关于UDP协议的最早规范是RFC768,1980年发布。尽管时间已经很长,但是UDP协议仍然继续在主流应用中发挥着作用。包括视频电话会议系统在内的许多应用都证明了UDP 协议的存在价值。因为相对于可靠性来说,这些应用更加注重实际性能所以为了获得更好的使用效果(比如,更高的画面帧刷新速率)往往可以牺牲一定的可靠性(比如画面质量)。UDP将在今后的网络世界中发挥更加重要的作用。

(3)TCP和IP四层协议

TCP/IP(Transmission Control Protocol/Internet Protocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的。 定义

TCP/IP 是供已连接因特网的计算机进行通信的通信协议。

TCP/IP 指传输控制协议/网际协议 (Transmission Control Protocol / Internet Protocol)。

TCP/IP 定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。

TCP/IP(传输控制协议/网际协议)是互联网中的基本通信语言或协议。在私网中,它也被用作通信协议。当你直接网络连接时,你的计算机应提供一个TCP/IP程序的副本,此时接收你所发送的信息的计算机也应有一个TCP/IP程序的副本。

TCP/IP是一个四层的分层体系结构。高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。这些包通过网络传送到接收端的TCP层,接收端的TCP层把包还原为原始文件。低层是网际协议,它处理每个包的地址部分,使这些包正确的到达目的地。网络上的网关计算机根据信息的地址来进行路由选择。即使来自同一文件的分包路由也有可能不同,但最后会在目的地汇合。 TCP/IP使用客户端/服务器模式进行通信。TCP/IP通信是点对点的,意思是通信是网络中的一台主机与另一台主机之间的。TCP/IP与上层应用程序之间可以说是“没有国籍的”,因为每个客户请求都被看做是与上一个请求无关的。正是它们之间的“无国籍的”释放了网络路径,才是每个人都可以连续不断的使用网络。 许多用户熟悉使用TCP/IP协议的高层应用协议。包括万维网的超文本传输协议(HTTP),文件传输协议(FTP),远程网络访问协议(Telnet)和简单邮件传输协议(SMTP)。这些协议通常和TCP/IP协议打包在一起。 使用模拟电话调制解调器连接网络的个人电脑通常是使用串行线路接口协议(SLIP)和点对点协议(P2P)。这些协议压缩IP包后通过拨号电话线发送到对方的调制解调器中。 与TCP/IP协议相关的协议还包括用户数据包协议(UDP),它代替TCP/IP协议来达到特殊的目的。其他协议是网络主机用来交换路由信息的,包括Internet控制信息协议(ICMP),内部网关协议(IGP),外部网关协议(EGP),边界网关协议(BGP)。 基本原理 整体构架概述

TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。

传输层:在此层中,它提供了节点间的数据传送,应用程序之间的通信服务,主要功能是数据格式化、数据确认和丢失重传等。如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。

互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。

网络接口层(主机-网络层):接收IP数据包并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层,对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。

TCP/IP协议结构图

主要协议

以下简单介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的: 1. IP

网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。

IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。

? 网际层的主要功能是处理来自传输层的分组,将分组形成数据包(IP数据包),并

为该数据包进行路径选择,最终将数据包从源主机发送到目的主机。

? 在网际层中,最重要的是网际协议IP,其他一些协议用来协助IP的操作。

? 网际层IP协议的任务是对数据包进行相应的寻址和路由,并从一个网络转发到另

一个网络。

? IP协议的另一项工作是分割和重编被分割的数据包。

? 分组格式统一规定:控制信息(如地址信息、长度信息、分组组合信息等)+数据,

使中间传递者能够为分组选择合适的路径、最后正确找到目标接收者; ? 版本:IP协议版本分为IPV4与IPV6 ,版本字段表明用于建立数据报的IP的版本,

以便处理者选择处理版本。

? 报头长度:数据处理者根据包头长度,可计算出该分组的数据长度。普通IP数据报

字段的值是5,长度为20(5×4)个字节。

? 服务类型:数据处理者可根据分组的服务类型字段,提供相应的服务。服务类型主

要为最小时延、最大吞吐量、最高可靠性和最小费用等要求。

? 总长度:利用报头长度字段和总长度字段,就可以知道IP数据报中数据内容的起始

位置和长度(数据长度=总长度-报头长度×4)

IP分组在分段时,应当考虑数据的重组问题 。分组的标示符字段、分段标志字段和分段偏移字段为重组提供了重要参数。

? 标示符:数据第一次分组的标示符,在以后的分段中继承此字段。类似10网络1

班(原始分组)又分了三个子分组,这三个子分组无论走到哪里,仍然是10网络1班。

? 分段标志:该分组是否允许处理者再分段(DF),该分组是否是最后一个分组(MF)。

DF=0,为允许分段。MF=0,为最后一分组。

? 分段偏移字段:指定分段在原始数据报中的位置 ,注意是数据,不包含首部。段偏

移以8个字节为单位进行记数 。 ? 生存时间TTL(time-to-live):指定数据报允许保留在网络上的生存时间,解决数据

在网络中陷入死循环传输的问题。它设置了数据报可以经过的最多路由器数。TTL的初始值由源主机设置,每经过一个路由器,值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。

? 协议:用于指定数据报数据区中携带的数据是由哪一种高层协议建立或接收的。例

如,TCP协议被分配的协议号是6,UDP的协议号是17。

? 报头校验和:仅用于IP报头校验和,确保IP报头的完整性。不对首部后面的数据

进行计算,只对头部进行简单的校验,不能对数据的质量进行保证。

? 源IP地址和目的IP地址:每一份IP数据报都包含源IP地址和目的IP地址。它们

都是32 比特的值,用于指定发送者和所期望的接收者的IP地址。在数据包通过网络传输的过程中它们的值不会发生变化。

? 选项字段:选项字段是数据报中的一个可变长的可选信息,用于各种选项,可起到

对路由进行更严格设置的作用。这些选项很少被使用,并非所有的主机和路由器都支持这些选项。 填充字段:选项字段一直都是以32 比特作为界限,在必要的时候插入值为0的填充字节。这样就保证IP报头始终是32比特的整数倍(这是报头长度字段所要求的) 2. TCP

如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向?上?传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。

TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。

面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。 3.UDP

UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。

欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。 4.ICMP

ICMP与IP位于同一层,它被用来传送IP的的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP的?Redirect?信息通知主机通向其他系统的更准确的路径,而?Unreachable?信息则指出路径有问题。另外,如果路径不可用了,ICMP可以使TCP连接?体面地?终止。PING是最常用的基于ICMP的服务。 5. TCP和UDP的端口结构

TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet客户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。

两个系统间的多重Telnet连接是如何相互确认并协调一致呢?TCP或UDP连接唯一地使用每个信息中的如下四项进行确认: 源IP地址 发送包的IP地址。 目的IP地址 接收包的IP地址。 源端口 源系统上的连接的端口。 目的端口 目的系统上的连接的端口。

端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,例如,SMTP使用25、Xwindows使用6000。这些端口号是?广为人知?的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。

IP地址及其分类

在Internet上连接的所有计算机,从大型机到微型计算机都是以独立的身份出现,我们称它为主机。为了实现各主机间的通信,每台主机都必须有一个唯一的网络地址。就好像每一个住宅都有唯一的门牌一样,才不至于在传输资料时出现混乱。

Internet的网络地址是指连入Internet网络的计算机的地址编号。所以,在Internet网络中,网络地址唯一地标识一台计算机。

我们都已经知道,Internet是由几千万台计算机互相连接而成的。而我们要确认网络上的每一台计算机,靠的就是能唯一标识该计算机的网络地址,这个地址就叫做IP(Internet Protocol的简写)地址,即用Internet协议语言表示的地址。

目前,在Internet里,IP地址是一个32位的二进制地址,为了便于记忆,将它们分为4组,每组8位,由小数点分开,用四个字节来表示,而且,用点分开的每个字节的数值范围是0~255,如202.116.0.1,这种书写方法叫做点数表示法。 IP地址可确认网络中的任何一个网络和计算机,而要识别其它网络或其中的计算机,则是根据这些IP地址的分类来确定的。一般将IP地址按节点计算机所在网络规模的大小分为A,B,C三类,默认的网络屏蔽是根据IP地址中的第一个字段确定的。 1. A类地址

A类地址的表示范围为:1.0.0.1~126.255.255.255,默认网络屏蔽为:255.0.0.0;A类地址分配给规模特别大的网络使用。A类网络用第一组数字表示网络本身的地址,后面三组数字作为连接于网络上的主机的地址。分配给具有大量主机(直接个人用户)而局域网络个数较少的大型网络。例如IBM公司的网络。

127.0.0.0到127.255.255.255是保留地址,用做循环测试用的。 0.0.0.0到0.255.255.255也是保留地址,用做表示所有的IP地址。

一个A类IP地址由1字节(每个字节是8位)的网络地址和3个字节主机地址组成,网络地址的最高位必须是“0”,即第一段数字范围为1~127。每个A类地址理论上可连接16777214<256*256*256-2>台主机(-2是因为主机中要用去一个网络号和一个广播号),Internet有126个可用的A类地址。A类地址适用于有大量主机的大型网络。

2. B类地址

B类地址的表示范围为:128.0.0.1~191.255.255.255,默认网络屏蔽为:255.255.0.0;B类地址分配给一般的中型网络。B类网络用第一、二组数字表示网络的地址,后面两组数字代表网络上的主机地址。

169.254.0.0到169.254.255.255是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器,这时你将会从169.254.0.0到169.254.255.255中临时获得一个IP地址。

一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,即第一段数字范围为128~191。每个B类地址可连接65534(2^16-2, 因为主机号的各位不能同时为0,1)台主机,Internet有16383(2^14-1)个B类地址(因为B类网络地址128.0.0.0是不指派的,而可以指派的最小地址为128.1.0.0[COME06])。 3. C类地址

C类地址的表示范围为:192.0.0.1~223.255.255.255,默认网络屏蔽为:255.255.255.0;C类地址分配给小型网络,如一般的局域网,它可连接的主机数量是

最少的,采用把所属的用户分为若干的网段进行管理。C类网络用前三组数字表示网络的地址,最后一组数字作为网络上的主机地址。

一个C类地址是由3个字节的网络地址和1个字节的主机地址组成,网络地址的最高位必须是“110”,即第一段数字范围为192~223。每个C类地址可连接254台主机,Internet有2097152个C类地址段(32*256*256),有532676608个地址(32*256*256*254)。

RFC 1918留出了3块IP地址空间(1个A类地址段,16个B类地址段,256个C类地址段)作为私有的内部使用的地址。在这个范围内的IP地址不能被路由到Internet骨干网上;Internet路由器将丢弃该私有地址。 IP地址类别 RFC 1918内部地址范围 A类 10.0.0.0到10.255.255.255 B类 172.16.0.0到172.31.255.255 C类 192.168.0.0到192.168.255.255

使用私有地址将网络连至Internet,需要将私有地址转换为公有地址。这个转换过程称为网络地址转换(Network Address Translation,NAT),通常使用路由器来执行NAT转换。

实际上,还存在着D类地址和E类地址。但这两类地址用途比较特殊,在这里只是简单介绍一下:

D类地址不分网络地址和主机地址,它的第1个字节的前四位固定为1110。 D类地址范围:224.0.0.1到239.255.255.254 。 D类地址用于多点播送。D类地址称为广播地址,供特殊协议向选定的节点发送信息时用。 E类地址保留给将来使用。

连接到Internet上的每台计算机,不论其IP地址属于哪类都与网络中的其它计算机处于平等地位,因为只有IP地址才是区别计算机的唯一标识。所以,以上IP地址的分类只适用于网络分类。

在Internet中,一台计算机可以有一个或多个IP地址,就像一个人可以有多个通信地址一样,但两台或多台计算机却不能共享一个IP地址。如果有两台计算机的IP地址相同,则会引起异常现象,无论哪台计算机都将无法正常工作。 顺便提一下几类特殊的IP地址:

1. 广播地址 目的端为给定网络上的所有主机,一般主机段为全1 2. 单播地址 目的端为指定网络上的单个主机地址 3. 组播地址 目的端为同一组内的所有主机地址 4. 环回地址 127.0.0.1 在环回测试和广播测试时会使用 子网的划分

若公司不上Internet,那一定不会烦恼IP地址的问题,因为可以任意使用所有的IP地址,不管是A类或是B类,这个时候不会想到要用子网,但若是上Internet那IP地址便弥足珍贵了,目前全球一阵Internet热,IP地址已经愈来愈少了,而所申请的IP地址目前

也趋保守,而且只有经申请的IP地址能在Internet使用,但对某些公司只能申请到一个C类的IP地址,但又有多个点需要使用,那这时便需要使用到子网,这就需要考虑子网的划分,下面简介子网的原理及如何规划。 1.5.1 子网掩码(Subnet Mask)的介绍

设定任何网络上的任何设备不管是主机、个人电脑、路由器等皆需要设定IP地址,而跟随着IP地址的是所谓的子网掩码(NetMask,Subnet Mask),这个子网掩码主要的目的是由IP地址中也能获得网络编码,也就是说IP地址和子网掩码合作而得到网络编码,如下所示: IP地址

192.10.10.6 11000000.00001010.00001010.00000110 子网掩码

255.255.255.0 11111111.11111111.11111111.00000000 AND

------------------------------------------------------------------- Network Number

192.10.10.0 11000000.00001010.00001010.00000000 子网掩码有所谓的默认值,如下所示 类 IP地址 范围 子网掩码

A 1.0.0.0-126.255.255.255 255.0.0.0 B 128.0.0.0-191.255.255.255 255.255.0.0 C 192.0.0.0-223.255.255.255 255.255.255.0

在预设的子网掩码(Net Mask)都只有255的值,在谈到子网掩码(Subnet Mask)时这个值便不一定是255了。在完整一组C类地址中如203.67.10.0-203.67.10.255 子网掩码255.255.255.0,203.67.10.0称之网络编码(Network Number,将IP 地址和子网掩码作和),而203.67.10.255是广播的IP地址,所以这两者皆不能使用,实际只能使用203.67.10.1--203.67.10.254等254个IP地址,这是以255.255.255.0作子网掩码的结果,而所谓Subnet Msk尚可将整组C类地址分成数组网络编码,这要在子网掩码上作手脚,若是要将整组C类地址分成2个网络编码那子网掩码设定为255.255.255.128,若是要将整组C类分成8组网络编码则子网掩码要为255.255.255.224,这是怎么来的,由以上知道网络编码是由IP地址和子网掩码作AND而来的,而且将子网掩码以二进制表示法知道是1的会保留,而为0的去掉

192.10.10.193--11000000.00001010.00001010.11000001 255.255.255.0--11111111.11111111.11111111.00000000 -------------------------------------------------------------- 192.10.10.0--11000000.00001010.00001010.00000000

以上是以255.255.255.0为子网掩码的结果,网络编码是192.10.10.0,若是使用255.255.255.224作子网掩码结果便有所不同

192.10.10.193--11000000.00001010.00001010.11000001

255.255.255.224--11111111.11111111.11111111.11100000 -------------------------------------------------------------- 192.10.10.192--11000000.00001010.00001010.11000000

此时网络编码变成了192.10.10.192,这便是子网。那要如何决定所使用的子网掩码,255.255.255.224以二进制表示法为11111111.11111111.11111111.11100000,变化是在最后一组,11100000便是224,以三个位(Bit)可表示2的3次方便是8个网络编码 子网掩码二进制表示法可分几个网络

255.255.255.011111111.11111111.11111111.000000001 255.255.255.128

11111111.11111111.11111111.100000002 255.255.255.192

11111111.11111111.11111111.110000004 255.255.255.224

11111111.11111111.11111111.111000008 255.255.255.240

11111111.11111111.11111111.1111000016 255.255.255.248

11111111.11111111.11111111.1111100032 255.255.255.252

11111111.11111111.11111111.1111110064

以下使用255.255.255.224将C类地址203.67.10.0分成8组网络编码,各个网络编码及其广播IP地址及可使用之IP地址序号网络编码广播可使用之IP地址 (1)203.67.10.0--203.67.10.31 203.67.10.1--203.67.10.30 (2)203.67.10.32--203.67.10.63 203.67.10.33--203.67.10.62 (3)203.67.10.64--203.67.10.95 203.67.10.65--203.67.10.94 (4)203.67.10.96--203.67.10.127 203.67.10.97--203.67.10.126 (5)203.67.10.128--203.67.10.159 203.67.10.129--203.67.10.158 (6)203.67.10.160--203.67.10.191 203.67.10.161--203.67.10.190 (7)203.67.10.192--203.67.10.223 203.67.10.193--203.67.10.222 (8)203.67.10.224--203.67.10.255 203.67.10.225--203.67.10.254

可验证所使用的IP地址是否如上表所示

203.67.10.115--11001011.01000011.00001010.01110011 255.255.255.224--11111111.11111111.11111111.11100000 -------------------------------------------------------------- 203.67.10.96--11001011.01000011.00001010.01100000 203.67.10.55--11001011.01000011.00001010.00110111 255.255.255.224--11111111.11111111.11111111.11100000 -------------------------------------------------------------- 203.67.10.32--11001011.01000011.00001010.00100000

其它的子网掩码所分成的网络编码可自行以上述方法自行推演出来。 1.5.3 子网的应用

使用子网是要解决只有一组C类地址但需要数个网络编码的问题,并不是解决IP地址不够用的问题,因为使用子网反而能使用的IP地址会变少,子网通常是使用在跨地域的网络互联之中,两者之间使用路由器连线,同时也上Internet,但只申请到一组C 类IP地址,过路由又需不同的网络,所以此时就必须使用到子网,当然二网络间也可以远程桥接(Remote Bridge,字面翻译)连接,那便没有使用子网的问题。 网关地址

若要使两个完全不同的网络(异构网)连接在一起,一般使用网关,在Internet中两个网络也要通过一台称为网关的计算机实现互联。这台计算机能根据用户通信目标计算机的IP地址,决定是否将用户发出的信息送出本地网络,同时,它还将外界发送给属于本地网络计算机的信息接收过来,它是一个网络与另一个网络相联的通道。为了使TCP/IP协议能够寻址,该通道被赋予一个IP地址,这个IP地址称为网关地址。

完美测试TCP/IP协议简介

安装网络硬件和网络协议之后,我们一般要进行TCP/IP协议的测试工作,那么怎样测试才算是比较全面的测试呢?我们认为,全面的测试应包括局域网和互联网两个方面,因此应从局域网和互联网两个方面测试,以下是我们在实际工作中利用命令行测试TCP/IP配置的步骤:

1、 单击“开始”/“运行”,输入CMD按回车,打开命令提示符窗口。

2、 首先检查IP地址、子网掩码、默认网关、DNS服务器地址是否正确,输入命令ipconfig /all,按回车。此时显示了你的网络配置,观查是否正确。

3、 输入ping 127.0.0.1,观查网卡是否能转发数据,如果出现“Request timed out”,表明配置差错或网络有问题。

4、 Ping一个互联网地址,如ping 202.102.128.68,看是否有数据包传回,以验证与互联网的连接性。

5、 Ping 一个局域网地址,观查与它的连通性。

6、 用nslookup测试DNS解析是否正确,输入如nslookup ,查看是否能解析。

如果你的计算机通过了全部测试,则说明网络正常,否则网络可能有不同程度的问题。在此不展开详述。不过,要注意,在使用 ping命令时,有些公司会在其主机设置丢弃ICMP数据包,造成你的ping命令无法正常返回数据包,不防换个网站试试。 协议簇

TCP/IP(Transmission Control Protocol/Internet Protocol)已成为一个事实上的工业 标准。

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。 TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第

三层(对应OSI的第四层)。

TCP和IP是TCP/IP协议簇的中间两层,是整个协议簇的核心,起到了承上启下的作用。 1、接口层

TCP/IP的最低层是接口层,常见的接口层协议有:

Ethernet 802.3、Token Ring 802.5、X.25、Frame reley、HDLC、PPP ATM 等。 2、网络层

网络层包括:IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol) 控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向

地址转换协议。

IP是网络层的核心,通过路由选择将下一跳IP封装后交给接口层。IP数据报是无连接服务 。

ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。

Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。 ARP是正向地址解析协议,通过已知的IP,寻找对应主机的MAC地址。 RARP是反向地址解析协议,通过MAC地址确定IP地址。比如无盘工作站和DHCP服务。 3、传输层

传输层协议主要是:传输控制协议TCP(Transmission Control Protocol)和用户数据报协

议UDP(User Datagram rotocol)。

TCP是面向连接的通信协议,通过三次握手建立连接,通讯时完成时要拆除连接,由于TCP

是面向连接的所以只能用于点对点的通讯。

TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠

性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用

以限制发送方的发送速度。

UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要

连接,所以可以实现广播发送。

UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出丢包现象,实际应用中要求

在程序员编程验证。 4、应用层

应用层一般是面向用户的服务。如FTP、TELNET、DNS、SMTP、POP3。 FTP(File Transmision Protocol)是文件传输协议,一般上传下载用FTP服务,数据端口

是20H,控制端口是21H。

Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。

DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换。 SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中

转。

POP3(Post Office Protocol 3)是邮局协议第3版本,用于接收邮件。 数据格式:

数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC地址及类型,帧尾是校验字)

IP数据包:IP头部+TCP数据信息 (IP头包括源和目标主机IP地址、类型、生存期等)

TCP数据信息:TCP头部+实际数据 (TCP头包括源和目标主机端口号、顺序号、确认号、校 验字等) sfsaf 七层协议

之所以说TCP/IP是一个协议族,是因为TCP/IP协议包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等许多协议,这些协议一起称为TCP/IP协议。以下我们对协议族中一些常用协议英文名称和用途作一介绍: TCP(Transport Control Protocol)传输控制协议 IP(Internet Protocol)网间网协议

UDP(User Datagram Protocol)用户数据报协议

ICMP(Internet Control Message Protocol)互联网控制信息协议 SMTP(Simple Mail Transfer Protocol)简单邮件传输协议 SNMP(Simple Network manage Protocol)简单网络管理协议 FTP(File Transfer Protocol)文件传输协议 ARP(Address Resolution Protocol)地址解析协议 从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网间网层、传输层、应用层。 其中: 网络接口层 这是TCP/IP软件的最低层,负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。 网间网层 负责相邻计算机之间的通信。其功能包括三方面。一、处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。二、处理输入数据报:首先检查其合法性,然后进行寻径--假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。三、处理路径、流控、拥塞等问题。 传输层 提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。 应用层 向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。 前面我们已经学过关于OSI参考模型的相关概念,现在我们来看一看,相对于七层协议参考模型,TCP/IP协议是如何实现网络模型的。 OSI中的层 功能 TCP/IP协议族 TFTP,HTTP,SNMP,FTP,SMTP,DNS,RIP,Telnet 没有协议 应用层 文件传输,电子邮件,文件服务,虚拟终端 表示层 数据格式化,代码转换,数据加密 会话层 解除或建立与别的接点的联系 提供端对端的接口 为数据包选择路由 没有协议 传输层 TCP,UDP 网络层 IP,ICMP,OSPF,BGP,IGMP ,ARP,RARP SLIP,CSLIP,PPP,MTU ISO2110,IEEE802。IEEE802.2 数据链路层 传输有地址的帧以及错误检测功能 以二进制数据形式在物理媒体上传输数据 物理层 数据链路层包括了硬件接口和协议ARP,RARP,这两个协议主要是用来建立送到物理层上的信息和接收从物理层上传来的信息; 网络层中的协议主要有IP,ICMP,IGMP等,由于它包含了IP协议模块,所以它是所有基于TCP/IP协议网络的核心。在网络层中,IP模块完成大部分功能。ICMP和IGMP以及其他支持IP的协议帮助IP完成特定的任务,如传输差错控制信息以及主机/路由器之间的控制电文等。网络层掌管着网络中主机间的信息传输。 传输层上的主要协议是TCP和UDP。正如网络层控制着主机之间的数据传递,传输层控制着那些将要进入网络层的数据。两个协议就是它管理这些数据的两种方式:TCP是一个基于连接的协议(还记得我们在网络基础中讲到的关于面向连接的服务和面向无连接服务的概念吗?忘了的话,去看看);UDP则是面向无连接服务的管理方式的协议。 应用层位于协议栈的顶端,它的主要任务就是应用了。上面的协议当然也是为了这些应用而设计的,具体说来一些常用的协议功能如下: Telnet:提供远程登录(终端仿真)服务,好象比较古老的BBS就是用的这个登陆。 FTP :提供应用级的文件传输服务,说的简单明了点就是远程文件访问等等服务; SMTP:不用说拉,天天用到的电子邮件协议。 TFTP:提供小而简单的文件传输服务,实际上从某个角度上来说是对FTP的一种替换(在文件特别小并且仅有传输需求的时候)。

SNMP:简单网络管理协议。看名字就不用说什么含义了吧。 DNS:域名解析服务,也就是如何将域名映射成IP地址的协议。

HTTP:不知道各位对这个协议熟不熟悉啊?这是超文本传输协议,你之所以现在能看到网上的图片,动画,音频,等等,都是仰仗这个协议在起作用啊! 主要特点

(1)开放的协议标准,可以免费使用,并且独立于特定的计算机硬件与操作系统;

(2)独立于特定的网络硬件,可以运行在局域网、广域网,更适用于互联网中; (3)统一的网络地址分配方案,使得整个TCP/IP设备在网中都具有惟一的地址; (4)标准化的高层协议,可以提供多种可靠的用户服务。 TCP/IP模型的主要缺点有:

首先,该模型没有清楚地区分哪些是规范、哪些是实现;其次,TCP/IP模型的主机—网络层定义了网络层与数据链路层的接口,并不是常规意义上的一层,接口和层的区别是非常重要的,TCP/IP模型没有将它们区分开来。 协议的优势

在长期的发展过程中,IP逐渐取代其他网络。这里是一个简单的解释。IP传输通用数据。数据能够用于任何目的,并且能够很轻易地取代以前由专有数据网络传输的数据。下面是一个普通的过程:

一个专有的网络开发出来用于特定目的。如果它工作很好,用户将接受它。 为了便利提供IP服务,经常用于访问电子邮件或者聊天,通常以某种方式通过专有网络隧道实现。隧道方式最初可能非常没有效率,因为电子邮件和聊天只需要很低的带宽。

通过一点点的投资IP 基础设施逐渐在专有数据网络周边出现。 用IP取代专有服务的需求出现,经常是一个用户要求。

IP替代品过程遍布整个因特网,这使IP替代品比最初的专有网络更加有价值(由于网络效应)。

专有网络受到压制。许多用户开始维护使用IP替代品的复制品。

IP包的间接开销很小,少于1%,这样在成本上非常有竞争性。人们开发了一种能够将IP带到专有网络上的大部分用户的不昂贵的传输媒介。

大多数用户为了削减开销,专有网络被取消。 TCP/IP协议的重置

在Windows XP的网络组件列表里,Internet 协议 (TCP/IP)的\卸载\按钮是灰色不可选状态。这是因为传输控制协议/Internet 协议 (TCP/IP) 堆栈是 Microsoft XP/ 2003 的核心组件(TCP/IP协议是Windows XP的默认协议),不能删除。所以Windows

XP不允许卸载TCP/IP协议。如果在特殊情况下需要重新安装TCP/IP协议,如何操作?

解决方法

在这种情况下,如果需要重新安装 TCP/IP 以使 TCP/[1]IP 堆栈恢复为原始状态。可以使用 NetShell 实用程序重置 TCP/IP 堆栈,使其恢复到初次安装操作系统时的状态。具体操作如下:

1、单击 开始 --> 运行,输入 \后单击 \确定\ 2、在命令行模式输入命令 netsh int ip reset C:\\resetlog.txt

(其中,Resetlog.txt记录命令结果的日志文件,一定要指定,这里指定了Resetlog.txt 日志文件及完整路径。)

运行结果可以查看C:\\resetlog.txt (咨询中可根据用户实际操作情况提供) 运行此命令的结果与删除并重新安装 TCP/IP 协议的效果相同。

注意

本操作具有一定的风险性,请在操作前备份重要数据,并根据操作熟练度酌情使用。 版本更新

1.IPv4

IPv4,是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,构成现今互联网技术的基石的协议。1981年Jon Postel 在RFC791中定义了IP,Ipv4可以运行在各种各样的底层网络上,比如端对端的串行数据链路(PPP协议和SLIP协议) ,卫星链路等等。局域网中最常用的是以太网。 传统的TCP/IP协议基于IPV4 属于第二代互联网技术,核心技术属于美国。它的最大问题是网络地址资源有限,从理论上讲,编址1600万个网络、40亿台主机。但采用A、B、C三类编址方式后,可用的网络地址和主机地址的数目大打折扣,以至目前的IP地址已经枯竭。其中北美占有3/4,约30亿个,而人口最多的亚洲只有不到4亿个,中国截止2010年6月IPv4地址数量达到2.5亿,落后于4.2亿网民的需求。虽然用动态IP及Nat地址转换等技术实现了一些缓冲,但IPV4地址枯竭已经成为不争的事实。在此,专家提出IPV6的互联网技术,也正在推行,但IPV4的使用过度到IPV6需要很长的一段过度期。

传统的TCP/IP协议基于电话宽带 以及以太网的电器特性而制定的,其分包原则与检验占用了数据包很大的一部分比例造成了传输效率低,现在网络正向着全光纤网络和超高速以太网方向发展,TCP/IP协议不能满足其发展需要。

1983年TCP/IP协议被ARPAnet采用,直至发展到后来的互联网。那时只有几百台计算机互相联网。到1989年联网计算机数量突破10万台,并且同年出现了1.5Mbit/s的骨干网。因为IANA把大片的地址空间分配给了一些公司和研究机构,90年代初就有人担心10年内IP地址空间就会不够用,并由此导致了IPv6 的开发。 2.IPv6

IPv6是Internet Protocol Version 6的缩写,其中Internet Protocol译为“互联网协议”。IPv6是IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议。

与IPV4相比,IPV6具有以下几个优势:

一、Pv6具有更大的地址空间。IPv4中规定IP地址长度为32,即有2^32-1(符号^表示升幂,下同)个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。

二、IPv6使用更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。

三、IPv6增加了增强的组播(Multicast)支持以及对流的支持(Flow Control),这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS,Quality of Service)控制提供了良好的网络平台。

四、IPv6加入了对自动配置(Auto Configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。 五、IPv6具有更高的安全性。在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,极大的增强了网络的安全性。

一种基于单片机的GPRS的无线数据传送系统

1 引言

近十几年来,随着移动通信技术飞速发展,越来越多的信息采集和远程控制系统采用了无线数据传送技术,它与有线数传相比主要有布线成本低、安装简便、便于移动的优点。同时,单片机具有应用灵活、软硬件容易裁剪、功耗小、价位低等优势,被广泛应用于各类T业或民用的嵌入式系统中,而且随着互联网技术的迅猛发展和快速普及,越来越多的基于单片机为微控制器的的测控设备或智能仪器仪表都需要通过互联网上进行数据交换或传输数据。 在这种背景下,本文结合当前的嵌入式技术、移动通信技术和Internet网络技术,利用CylⅦl公司的5l系列微处理器和西门子的GPRS模块MC35i,设计并实现了实时数据的采集接入和基于GPRS的无线数据终端,能轻松方便地通过GPRS网络接入互联网,进行远程无线数据传输。 2 系统的总体框架

基于这种设计思想,构建的无线数据传输基于GPRS的无线数据采集系统结构如图1所示。其中C805lF005单片机为控制单元和MC35i模块为无线Modem组成远端数据采集模块,通过移动通信GPRS网络与Interact网络连接,实现和远端监控中心的通信。

2.1数据采集终端

数据终端主要是一个单片机控制的数据采集系统和一个内置带TCP/IP协议的GPRS模块组成。单片机控制A/D转换器将传感器采集的模拟数据转换为数字量,通过RS一232C串行接口对GPRS模块设置参数和数据的读取。单片机的一个UART(异步通信串口)与GPRS模块相连,控制GPRS模块的注册登录、数据帧的发送和接收。其中F005芯片的P0.0(CTxD)、P0.1(CRxD)口线分别接GPRS模块的ZIF接口的CRxD、CTxD引脚,作为串口的收发端口。P2口全部用于对GPRS模块的控制端口,P1口和P3口用作

数据终端的键盘和LCD显示接口。 2.2 GPRS无线Modem模块

MC35i模块是Siemen公司生产的的双频GSM/GPRS引擎。它与MC35兼容,且功耗更低,为用户提供了更加简单的移动数据通信接入手段。MC35i内部自带TCPBP协议处理功能,既支持短消息收发模式,又支持GPRS无线数据传输模式,是系统的主要通信模块131。MC35i模块的正常运行需要相应的外围电路与其配合,它的40个引脚通过ZIF连接器分别与电源电路、启动与关机电路、数据通信电路、SIM卡电路、指示灯电路等连接。其外围电路的连接如图2所示。MC35i的串口是遵循RS一232C数据交换电路的串行异步发送和接收接口标准。由于RS一232C的电平与TIL电平不兼容,在MCU的串口和MC35i的ZIF接口之间加入了电平转换芯片MAX232。

2.3远程监控中心

监控中心是一台与Intemet网络相连的计算机,通过Socket网络接口与数据采集终端进行GPRS数据传输,同时监控中心装有短消息模块,可以与数据采集终端提高短消息传输数据, 2.4 GPRS移动通信网络和Intemet网

GPRS移动通信网和Intemet网是监控中心和数据采集终端之间数据传输的通道。GPRS无线Modem联入GPRS网络并和远程监控中心建立连接后,中心发送数据处理命令给数据采集终端;终端接收到命令后,MCU将已采集好的数据信息通过RS一232C串行口与GPRS模块内置的协议处理器对数据进行处理封装,然后实时发送到GSM/GPRS网络,经由Internet互联网传送到远程数据中心。

2.5 SIM卡及电路连接

GPRS模块中必须插上开通带有被叫数据服务业务的SIM卡,才能完成数据传输的任务。SIM卡中存储着数据终端的信息,如鉴权方法、密钥等供GAM系统对用户身份进行鉴别。终端通过SIM卡完成与系统的连接和信息的交换。SIM卡是通过卡面上铜制接口来连接卡内逻辑电路与移动终端,MC35i的基带处理器集成了一个与ISO 7816—3 ICCARD标准兼容的SIM接口。

3 无线数据传送

系统软件采用模块化设计,每个模块实现一个功能或一个协议,便于移植。同时,在编写软件时,留有一些软件应用接口,便于软件升级。 3.1无线数传系统软件主要要完成以下几件事情

(1)设计基于无线模块与单片机间的通信控制接口电路,建立线路级的连接; (2)通过AT指令建立MODEM级的连接,并获取无线模块的IP地址;

(3)建立PPP链路,包括:连接的建立与切断、包的最大长度的设定、认证协议的设定、IP地址的设定等信息进行发送与接收,以及PPP数据帧的建立;

(4)在PPP上发送IP包,包括对所要传输数据的TCP/IP封装与解封装、IP的分段处理和重组处理、重发控制等。

3.2系统实现数据传送的具体步骤和过程

(1)对数据中心的主机进行初始化:将主机建立网络连接,分配IP地址,设置好通信波特率和通信端口,然后展开网络侦听; (2)数据采集终端的初始化:终端的MCU单片机进行初始化设置。将通信波特率与远程主机同步,然后进行Modem拨号,将移动终端的类别设置为GPRS上网模式;

(3)网络协商:设置GPRS接入网关,通过无线Modem内置的TCP/IP栈拨号与GGSN进行通信链路的协商,即进行点到点的各种通信链路的参数配置,并分配IP地址。GPRS无线Modem接收到IP地址后将其存人数据终端的配置地址域,数据终端向数据中心发送配置后的数据帧,告知其动态IP地址和[MSI号(国际移动用户识别码),数据中心存储收到的信息,作为下传数据的联络信息。

(4)数据传输过程:由于GPRS网络支持TC肌P协议,所以通过收发IP数据包来传送数据。此时,远程数据终端系统向GGSN发送的所有包含IP报文的PPP报文都会被传送给Intemet网中相应的IP地址,从而完成终端系统向远程监控中心通过互联网传输数据的过程【5】。 3.3无线数传系统的整体软件结构 本系统的软件程序分为两部分: (1)数据采集终端的单片机数据采集处理程序、控制无线模块的数据收发程序; (2)远程监控中心主机的网络应用软件。其中数据终端的C8051F005单片机控制数据采集和A/D转换采用汇编语言程序实现,与无线Modem的通信协议程序使用C51高级语言来编写,采用AT命令初始化和控制GPRS模块,使用Keil C51软件平台调试软件。数据处理中心的应用软件是基于Winsock网络通信技术设计。采用多线程技术和大型数据库管理开发,开发工具为Delphi6.0和SQLServer7.0。 3.4网络连接部分的程序

网络连接部分的软件主要包括PPP协议、传输协议UDP的实现。对于单片机来说,由于硬件资源的制约和协议的复杂繁琐.实现拨号接入Internet比较困难,在协议上需要进行很多裁剪和简化。本文结合单片机无线上网的特点对协议栈做如下选择【6】6: (1)链路层选择PPP协议,PPP协议是被广泛使用的简单的链路层协议,提供了互联网上对待实体之间建立连接传输数据报的一种方法。(2)网络层选择IP协议和ICMP协议。IP协议的TCP/IP协议的核心部分,所有的上层数据报文,包括TCP、UDP、ICMP和IGMP报文都是以IP报封装传输的。ICMP主要用来传送差错报文。(3)传输层采用UDP协议而不是功能相对齐全但协议内容过于庞大的 TCP/IP协议,传输中基本上不使用数据压缩协议,跳过单片机作为服务器端时的密码验证过程,省略IPX、APPLETALK等网络层协议等。也就是说,本文的单片机PPP协议。事实上只包含了从PPP连接的建立到实现简单的数据传输所必需的协议。而不包括PPP协议的所有功能。

总结:GPRS是一个很广泛的概念,要想深入的的了解和应用它的知识,需要多看多学这方面的知识,而且关于这方面的知识也是不断的在更新,所以本文中关于Gprs的介绍只是简

单的介绍了一些。

本文来源:https://www.bwwdw.com/article/tgto.html

Top