一、介绍
PPP(Point-to-Point Protocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。
二、 PPP链路建立过程
PPP协议中提供了一整套方案 来解决链路建立、维护、拆除、上层协议协商、认证等问题。PPP协议包含这样几个部分:链路控制协议LCP(Link Control Protocol);网络控制协议NCP(Network Control Protocol);认证协议,最常用的包括口令验证协议PAP(Password Authentication Protocol)和挑战握手验证协议CHAP(Challenge-Handshake Authentication Protocol)。
LCP负责创建,维护或终止一次物理连接。NCP是一族协议,负责解决物理连接上运行什么网络协议,以及解决上层网络协议发生的问题。
下面介绍PPP链路建立的过程:
PPP链路状态机如图1所示。一个典型的链路建立过程分为三个阶段:创建阶段、认证阶段和网络协商阶段。
阶段1:创建PPP链路
LCP负责创建链路。在这个阶段,将对基本的通讯方式进行选择。链路两端设备通过LCP向对方发送配置信息报文(Configure Packets)。一旦一个配置成功信息包(Configure-Ack packet)被发送且被接收,就完成了交换,进入了LCP开启状态。
应当注意,在链路创建阶段,只是对验证协议进行选择,用户验证将在第2阶段实现。
阶段2:用户验证
在这个阶段,客户端会将自己的身份发送给远端的接入服务器。该阶段使用一种安全验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。在认证完成之前,禁止从认证阶段前进到网络层协议阶段。如果认证失败,认证者应该跃迁到链路终止阶段。
在这一阶段里,只有链路控制协议、认证协议,和链路质量监视协议的packets是被允许的。在该阶段里接收到的其他的packets必须被静静的丢弃。
最常用的认证协议有口令验证协议(PAP)和挑战握手验证协议(CHAP)。 认证方式介绍在第三部分中介绍。
阶段3:调用网络层协议
认证阶段完成之后,PPP将调用在链路创建阶段(阶段1)选定的各种网络控制协议(NCP)。选定的NCP解决PPP链路之上的高层协议问题,例如,在该阶段IP控制协议(IPCP)可以向拨入用户分配动态地址。
这样,经过三个阶段以后,一条完整的PPP链路就建立起来了。
三、 认证方式
1)口令验证协议(PAP)
PAP是一种简单的明文验证方式。NAS(网络接入服务器,Network Access Server)要求用户提供用户名和口令,PAP以明文方式返回用户信息。很明显,这种验证方式的安全性较差,第三方可以很容易的获取被传送的用户名和口令,并利用这些信息与NAS建立连接获取NAS提供的所有资源。所以,一旦用户密码被第三方窃取,PAP无法提供避免受到第三方攻击的保障措施。
2)挑战-握手验证协议(CHAP)
CHAP是一种加密的验证方式,能够避免建立连接时传送用户的真实密码。NAS向远程用户发送一个挑战口令(challenge),其中包括会话ID和一个任意生成的挑战字串(arbitrary challengestring)。远程客户必须使用MD5单向哈希算法(one-way hashing algorithm)返回用户名和加密的挑战口令,会话ID以及用户口令,其中用户名以非哈希方式发送。
CHAP对PAP进行了改进,不再直接通过链路发送明文口令,而是使用挑战口令以哈希算法对口令进行加密。因为服务器端存有客户的明文口令,所以服务器可以重复客户端进行的操作,并将结果与用户返回的口令进行对照。CHAP为每一次验证任意生成一个挑战字串来防止受到再现攻击(replay attack)。在整个连接过程中,CHAP将不定时的向客户端重复发送挑战口令,从而避免第3方冒充远程客户(remote client impersonation)进行攻击
第二篇:现有p2p协议分类与简介
现有p2p协议分类与简介
作者:Kelvin 日期:2008-04-29
字体大小: 小 中 大
(一) 常用p2p协议
一、Napster:世界上第一个大型的P2P应用网络;中央集中式,倒闭了。
Napster,这是当时很火的一种共享服务,主要用于查找mp3,它有一个服务器用于存储mp3文件的链接位置并提供检索,而真正的mp3文件则存放在千千万万的个人电脑上,搜索到的文件通过P2P方式直接在个人电脑间传播共享。这种方式的缺点就是需要一台服务器,在mp3文件版权之争火热的年代,Napster很快就成为众矢之的,被众多唱片公司诉讼侵犯版权而被迫关闭。当然服务器一关Napster也就不复存在。
二、Gnutella和Gnutella2(Gnutella2是对Gnutella的改进和扩展):开源的;第一个真正非中心的无结构P2P网络,文件查询采用洪泛方式。
Gnutella吸取了Napster的失败教训,将P2P的理念更推进一步:它不存在中枢目录服务器,所有资料都放在个人电脑上。用户只要安装了该软件,就将自己的电脑立即变成一台能够提供完整目录和文件服务的服务器,并会自动搜寻其它同类服务器,从而联成一台由无数PC组成的超级服务器网络。传统网络的Server和Client在它的面前被重新定义。
三、FastTrack:
第一个客户端是KazaA。协议与Gnutella类似。02-03年的最大用户网,05年退至第三名。衰退原因是这个网络无法应对众多用户同时使用,而且有版权拥有者pollution的行为,以及间谍软件的问题。 iMesh也是以FastTrack为协议的。
四、eDonkey,overnet,kad:
自私的人们在利用P2P软件的时候大多只愿“获取”,而不愿“共享”,P2P的发展遇到了意识的发展瓶颈。不过,一头“驴”很快改变了游戏规则,这就是电驴-eDonkey,它引入了强制共享机制。
eDeonkey将网络节点分成服务器层和客户层,并且将文件分块以提高下载速度。eDonkey网络下最普及的p2p客户端程序是eDonkey2000和emule。Emule是eDonkey的后继,但是更出色,采用了DHT来构建底层网络拓扑,目前非常流行的P2P文件共享软件。
overnet设计的目的是取代eDonkey,它没有中心服务器,但用户数少于eDonkey。
Kademlia 协议,在这里叫做kad网络,采用UDP方式通信。很类似于overnet,几乎只有eDonkey用户使用它。
五、BitTorrent:借助分散式服务器提供共享文件索引的混合式P2P网络,文件分片下载。
下载速度高,没有查找功能,种子具有时效性。它将中心目录服务器的稳定性同优化的分布式文件管理结合起来。
六、Direct Connect:
一种常用在小的网络和大学内部网络中的协议,适用于小网络环境中,DC++是常见客户端。
七、Ares:类似Gnutella网络。
(二) 现有P2P技术主要涉及的领域和发展方向
(1)提供文件和其它内容共享的P2P网络,例如Napster、Gnotella、Freenet、CAN、eDonkey、eMule、BitTorrent等。
(2)基于P2P方式的协同处理与服务共享平台,例如JXTA、Magi、Groove、.NETMy Service等。
(3)即时通讯交流,包括ICQ、OICQ、Yahoo Messenger等。
(4)安全的P2P通讯与信息共享,利用P2P无中心的特性可以为隐私保护和匿名通讯提供新的技术手段。例如CliqueNet、Crowds、Onion Routing等。
(5)语音与流媒体:由于P2P技术的使用,大量的用户同时访问流媒体服务器,也不会造成服务器因负载过重而瘫痪。Skype与Coolstream是其中的典型代表。
(6)网格计算,挖掘P2P分布计算能力。使用P2P技术以集中那些联接在网络上的电脑的空闲的CPU时间片断、内存空间、硬盘空间来替代“超级计算机”。例如SETI@home、Avaki、Popular Power、distributed.net等。网格计算的宗旨是:将遍布全球的数以万计的计算节点通过高速Internet连接并组织成一个巨系统,使其能够透明、高效地完成复杂计算任务。
(7)IBM、微软、Ariba也在合作开展一个名为UDDI的项目以将B2B电子商务标准化
(8)Eazel正在建立下一代的Linux桌面。
(9)Jabber已经开发了一种基于XML、开放的即时讯息标准,Jabber被认为是建立了未来使用P2P数据交换的标准。
(10)Lotus Notes的开发者创建的Groove试图“帮助人们以全新的方式沟通”。
(11)英特尔也在推广它的P2P技术以帮助更有效地使用芯片的计算能力。
(三) P2P资源定位方式
P2P网络中进行资源定位是首先要解决问题。一般采用三种方式:
(1)集中方式索引
每一个节点将自身能够提供共享的内容注册到一个或几个集中式的目录服务器中。查找资源时首先通过服务器定位,然后两个节点之间再直接通讯。例如早期的Napster。这类网络实现简单,但往往需要大的目录服务器的支持,并且系统的健壮性不好。
(2)广播方式
没有任何索引信息,内容提交与内容查找都通过相邻接节点直接广播传递。例如Gnutella。一般情况下,采取这种方式的P2P网络对参与节点的带宽要求比较高。
(3)动态哈希表的方式
上述两种定位方式可以依据不同的P2P应用环境进行选择,但是人们普遍看好DHT(Distributed Hash Table,分散式杂凑表)方式。基于DHT的P2P网络在一定程度上可以直接实现内容的定位。一个矛盾的问题是:如果一个节点提供共享的内容表示越复杂,则哈希函数越不好选择;相应的,网络的拓扑结构就越复杂。而如果内容表示简单,则又达不到真正实现依据内容定位的能力。目前大多数DHT方式的P2P网络对节点所提供共享内容的表示都很简单,一般仅仅为文件名。
参考资料: