外文翻译基于Socket的网络编程.docx
《外文翻译基于Socket的网络编程.docx》由会员分享,可在线阅读,更多相关《外文翻译基于Socket的网络编程.docx(19页珍藏版)》请在冰豆网上搜索。
外文翻译基于Socket的网络编程
译文:
基于Socket的网络编程
摘要:
应用层覆盖网络的出现促进了新网络服务和应用的发展。
对面向网络的研究集中于协议的设计,并且在网络中传输数据,无论怎样,在应用程序软件的开发过程中已对这个问题引起了一定的注意。
显然,面向网络的网络协议的复杂性要求合适应用程序设计接口(API)和抽象观念,不需要面向网络协议的详细知识,因此,简化了应用程序员的任务。
在这篇文章里,我们提出作为联系在一个覆盖网络内的终点的新程序设计抽象观念的一个面向网络上的Socket的概念。
面向网络上的Socket预防不依赖选择的一基于Socket的API涂上拓扑学,并且可能成形为不同的面向网络工作上的拓扑学。
面向网络上的Socket能在TCP,UDP或者其他传送协议上方支持应用数据传输。
这篇文章描述面向网络上的Socket设计并且讨论API和配置选择。
关键词:
面向网络;应用层传送;网络编程
1、引言
介绍应用层覆盖网络为发展新网络服务提供灵活的平台,没有要求转换成网络层基础设施。
一个覆盖网络的成员,可能是主机,路由器,服务器或者应用,组织自己形成合乎逻辑的网络拓扑,并且只与在面向网络上拓扑学方面的各自的邻居通信。
一个覆盖网络的成员并且得到申请数据,以及准备给其他成员传输的数据。
我们使用网络程序设计指的是在应用层上与另一个应用程序通信的应用程序软件开发过程。
大楼的差异和复杂性和保养的覆盖网络使它不实用对以程序开发员可能关心管理应用程序在网络技术的一些细节内的复杂性。
我们提出一个软件模块,叫OvlaySocket,打算简化面向网络上的网络程序设计的任务。
面向网络上的Socket的设计追随这套以下的目标:
首先,面向网络上的Socket的设计追随这套以下的目标:
首先,面向网络上的Socket的应用程序设计接口(API)不要求一个应用程序员有面向网络上的网络拓扑的知识。
其次,面向网络网络拓扑上,面向网络上的Socket被用于适应。
转向不同的面向网络通过在一件配置文件里修改参数被做上的网络拓扑。
第三,面向网络上的Socket,在应用层操作,能适应不同的类型传送层协议。
这通过使用联接于非derlying的运输层网络并且通过面向网络执行信息交换的封装和解封装上的Socket的网络转接器被完成。
目前可得到的网络转接器是TCP,UDP和UDP多路传送。
第四,面向网络上的Socket为bootstrapping新覆盖网络提供机制。
在这文章内,我们提供一面向网络上的Socket设计的概述并且讨论过于放网络程序设计与涂上的Socket一起。
面向网络上的Socket作为HyperCast的部分2.0种软件配给在java是imple-mented[12].软件已经用于各种各样的面向网络上的应用,并且已经被在两个局部地区以及广阔地区测试确定。
HyperCast2.0软件实现描述在里的面向网络上的topolo-gies[15]并且[16].这文章最精彩场面面向网络上的Socket,另外信息的重要期刊可能被在可以从设计文献编制中获得内发现[12].几项研究在我们面前已经提出面向网络上的网络程序设计问题。
即使早期的覆盖网络提议,例如Yoid[9],划线于[4],并且Scattercast[6],已经提出立志争取从使用的面向网络取得API的独立上的网络拓扑的APIs。
尤其,Yoid和Scattercast使用Socket一样的API,到底怎样,当相同的API被不同的面向网络使用上的网络拓扑时,这些APIs不处理出现的问题。
几工作在应用层多路传送上涂上inte磨擦应用程序与负责没有明确地提供通用APIs保持覆盖网络的软件一起。
这些包括Narada[5],阴暗[13],ALMI[17],并且好[2].一项新近的研究[8]因提议普通API所谓组织涂上,包括弦[19],能[18],并且Bayeux[20],并且那最初被促进通过的涂上的另一个分配切碎的食物桌子。
我们的工作有不同的重点比[8],我们以为情况在哪里程序员使用几个必须的应用,也许基本上dif-ferent,涂上网络拓扑和不同的传输方式(UDP,TCP)。
因此,需要使它易于转换非derlying的覆盖网络的构造的机制。
2、基本概念
一个面向网络上的Socket是在一个覆盖网络里的通讯的endpoint,并且一个覆盖网络被作为一次面向网络看见上自我组织的Socket使用一份面向网络。
一个面向网络上的Socket把一伯克利Socket风格API提供给一个申请程序员[3]为送和得到在一个覆盖网络上的数据。
每一个面向网络Socket上执行是负责保持Socket在被涂上的网络拓扑内的会员的一份面向网络上的协议。
面向网络Socket上的每一个在覆盖网络里有逻辑地址和物理地址。
面向网络使用的协议上,逻辑地址依赖类型。
在面向网络里上的协议目前在HyperCast2.0实现,逻辑地址是32位整数。
物理地址是涂上Socket的运输层地址从覆盖网络得到消息。
在因特网上,物理地址是IP地址和一TCP或者UDP港口数目。
使用的应用程序涂上Socket只与逻辑地址合作,并且面向网络上的节点的物理地址。
物理地址在哪里涂上Socket得到消息从一个涂上的Socket被创造的overlayWhen那里的一运输层地址,Socket与叫的一套configu口粮参数一起成形把归于。
应用程序能从一件配置文件获得属性或者它从一台服务器上下载属性。
配置文件指定这类型面向网络上的协议和被使用的这类型传送协议,但是也更多的详细资料(例如内分缓冲器的大小,和具体协议的定时器的价值)。
最重要的属性是面向网络上的标识符(涂上ID),哪个为一个覆盖网络被用作一个全球标识符和能被用作一把钥匙访问覆盖网络的其它属性。
每个新面向网络上的ID相当于创造一个新覆盖网络。
Socket交换二类消息,消息和消息applica-tion协议。
协议消息面向网络上协议主要tain被涂上的拓扑学的消息。
应用消息包含是在一个面向网络上的报文首部里的encap-sulated的应用数据。
一条应用消息使用在集箱里的逻辑地址鉴定来源和为单路传送,消息的目的地。
面向网络Socket上得到它的一个邻居的消息应用在方面过于放网络,确定消息一定提供另一个涂上Socket如果,消息需要被传给地方应用。
目前被面向网络支持上的Socket的这种传输方式是单路传送和多路传送。
在多路传送过程中,在覆盖网络里的全部成员都是接收者。
不是度过数据在被嵌入在被涂上的拓扑学内的生成树的是。
例如,多路传送消息传送顺流有多路传送消息的发送人的一生成树根(看见图2(A))当时。
当一个面向网络上的Socket得到一条多路传送消息时,它把消息传到它所有下游的邻近的物(孩子),和对当地应用程序通过单路传送消息传送向上游一树与消息的接收者一起根(看见图2(b))当时。
得到消息提出随着邻居(父母)向上游的消息在有作为根的目的地的树内的单路传送的一个面向网络上的Socket。
3、OverlaySocket的组成
一个面向网络上的Socket由一次在面向网络上的Socket被建立时,成形的零部件的收集组成,使用被提供的套属性。
这些组成部分包括面向网络上的协议,这帮助建造并且保持面向网络上的网络拓扑,处理申请数据的一个组成部分,并且联接于一个运输层网络。
一个面向网络上的Socket的主要零部件,如下:
面向网络上的节点实现建立并且保持面向网络上的网络拓扑的一份面向网络上的协议。
面向网络上的节点送并且得到面向网络上的协议消息,并且保养一套定时器。
面向网络上的节点是知道面向网络上的拓扑学的一个面向网络上的Socket的唯一的零部件。
应用程序接口
StatisticsInterface
ProtocolMessages
Application
Receive
Buffer
Application
Transmit
BufferOverlayNode
OverlayNode
Interface
NodeAdapter
AdapterInterface
SocketAdapter
AdapterInterface
ApplicationMessages
ApplicationProgram
Transport-layerNetwork
ApplicationMessages
forwardingengine执行应用层路由器的功能,发送、接收,并且在覆盖网络里格式化的应用层消息。
每一个面向网络Socket上例如TCP或者UDP有每一个提供给传送层协议的一接口的网络转接器。
节点改编者作为送并且得到的在terface涂上协议消息,接合器作为给应用消息的接口,就因特网而论,由IP地址和一UDP或者TCP港口数目组成。
目前,有3类不同的改编者,是TCP,UDP和UDP多路传送。
在保持面向网络上的协议和运输应用数据的消息时使用改编者完全分开消息的方式。
应用得到缓冲器和应用传送缓冲器能分别临时储存消息,已经被Socket收到但不是应用发送的,或者那已经被应用程序发布,但不是被Socket传送了。
面向网络Socket上的每一个有两个外部接口。
从覆盖网络寄给覆盖网络的其他成员和再接收的数据。
面向网络上的Socket的接口提供进入面向网络上的Socket信息的途径,并且用于一个面向网络上的Socket的监控和管理。
面向网络上的Socket的一些零部件也有接口,访问面向网络上的Socket的其他零部件。
覆盖管理程序是在面向网络以外上的Socket一个零部件。
当Socket被建立时,使一个面向网络上的Socket成形是负责的。
4、面向网络的程序设计
一个程序开发员不需要如以前的部分描写熟悉一个面向网络上的Socket的零部件的细节。
开发者只暴露面向网络上的Socket的API和对一个文件用构造参数。
配置文件是全部属性需要一个面向网络上的Socket成形的一个文本文件。
每当一种变化被需要到传送协议,面向网络上的协议或者面向网络上的Socket的一些其他参数的时候,配置文件被修改。
在如下内容里,我们只总结API的主要特征,我们称针对在面向网络上的Socket上的详细资料。
4.1OverlaySocketAPI
从面向网络上的拓扑学起和提出的数据应用层的给那些应用程序,那些API透明适合面向网络上网络程序设计可能被做简单。
应用需要能建立一个新覆盖网络,参加并且离开现有覆盖网络,寄给数据随着并且得到面向网络上其他成员的数据。
面向网络上的Socket的API基于消息,并且接近于熟悉的伯克利SocketAPI故意停留[3].从空间起考虑不允许充分的API的描述,我们借助于一个简化的例子素描API。
图4显示使用一个面向网络上的Socket的一个java计划的碎片。
一个应用程序借助于覆盖管理程序成形并且建立一个面向网络上的Socket。
覆盖管理程序从一个configu口粮文件(hypercast.prop)适合面向网络读构造参数上的Socket,这能类似如图5中所示看起来。
applica-tion程序用来自文件的命om.getDefault
Property(“OverlayID”)读面向网络上的ID,并且为一个面向网络建立一个构造(配置)上的Socket。
//产生构造物体
OverlayManagerom=newOverlayManager("hypercast.prop");
StringMyOverlay=om.getDefaultProperty("OverlayID");
OverlaySocketConfigconfig=newom.getOverlaySocketConfig(MyOverlay);
//createanoverlaysocket
OLSocketsocket=config.createOverlaySocket(callback);
//Joinanoverlay
socket.joinGroup();
//Createamessage
OLMessagemsg=socket.createMessage(byte[]data,intlength);
//Sendthemessagetoallmembersinoverlaynetwork
socket.sendToAll(msg);
//Receiveamessagefromthesocket
OLMessagemsg=socket.receive();
Fig.4.Programwithoverlaysockets.
#OVERLAYServer:
#OVERLAYID:
OverlayID=1234
KeyAttributes=Socket,Node,SocketAdapter
#SOCKET:
Socket=HCast2-0
HCAST2-0.TTL=255
HCAST2-0.ReceiveBufferSize=200
#SOCKETADAPTER:
SocketAdapter=TCP
SocketAdapter.TCP.MaximumPacketLength=16384
#NODE:
Node=DT2-0
DT2-0.SleepTime=400
#NODEADAPTER:
NodeAdapter=NodeAdptUDPServer
NodeAdapter.UDP.MaximumPacketLength=8192
NodeAdapter.UDPServer.UdpServer0=
128.143.71.50:
8081
4.2OverlayNetworkPropertiesManagement
显然,一个面向网络上的Socket的性质成形归于在确定时在一件配置文件内。
在一个应用进程里的覆盖管理程序使用属性建立一个面向网络上的Socket。
通过在配置文件里修改属性,一个申请程序员能使被面向网络使用上的Socket的面向网络上的协议或者传送协议成形。
换乘文件一定做在Socket被创造之前。
配置文件的每条线把价值归因于一个属性。
属性和范围的完整的目录被用文献证明在[12]里。
其中有,对‘1234’的面向网络上的ID,面向网络协议(‘=DT2.0节点’)上的那样选择DT协议的第2.0版本,并且它把接口的传送协议确定成TCP(‘Socket-Adapter=
TCP’)。
每个覆盖网络与表现参加覆盖网络的面向网络上的Socket的性质的特性的一套属性有关。
如前所说,最重要的属性是面向网络上的ID,并且能被用作一把访问一个覆盖网络的全部其他属性的钥匙。
面向网络上的ID应该是一个全球独特的标识符。
一个新覆盖网络被创造,在产生新面向网络上ID并且联系指定面向网络上的Socket在覆盖网络内的性质的一套属性时。
为了加入一个覆盖网络,一个面向网络上的Socket必须知道面向网络上的ID和这个面向网络的ID上的各种属性。
全部属性有一个名称。
例如,一个面向网络上的Socket的面向网络上的协议能通过名字节点对一个属性加以测定。
如果属性调整到DT2-0节点,然后在面向网络上的Socket里的面向网络上的节点运转DT(第2版本)。
那些面向网络上的Socket区分在之间属性有二类:
关键属性和configurable属性。
5、结论
我们讨论试图简化面向网络上网络程序设计任务的一个面向网络上的Socket的设计。
面向网络上的Socket在覆盖网络里作为一个交互的终点。
面向网络上Socket
可能用于各种各样的面向网络上的拓扑学并且支持不同的传送协议。
面向网络上的Socket为参加和留下一个覆盖网络支持sim-pleAPI,并且为送和得到来自在覆盖网络里的其他Socket的数据。
面向网络覆盖网络的构造上的Socket的主要优势是它相对易于转换。
面向网络上的Socket的实施被HyperCast2.0软件分配。
软件已经被广泛地测试。
多种不同的应用,例如分配的whiteboard和划分应用的录像,已经被面向网络发展上的Socket。
除这篇文章的作者之外那些帮助者包括Bhupinder塞西,泰勒梁,伯顿Filstrup
麦克Nahas,Dongwen王,康拉德Lorincz,吉恩Ablutz,Haiyong王,WeishengSi,Huafeng陆和Guangyu董。
参考文献:
1.D.G.Andersen,H.Balakrishnan,M.F.Kaashoek,andR.T.,Morris.Resilientoverlaynetworks.InProceedingsofthe18thACMSymposiumonOperatingSystemsPrinciples,pp..131-145,LakeLuise,Canada,October2001.
2.S.Banerjee,B.Bhattacharjee,andC.Kommareddy.ScalableApplicationLayerMulticast.InProceedingsofACMSIGCOMM,pp.205-220,Pittsburgh,PA,August2002.
3.K.L.Calvert,M.J.Donhahoo.TCP/IPSocketsinJava:
PracticalGuideforProgrammers.MorganKaufman,October2001.
4.M.Castro,P.Druschel,A-M.KermarrecandA.Rowstron.SCRIBE:
Alarge-scaleanddecentralizedapplication-levelmulticastinfrastructure.IEEEJournalonSelectedAreasinCommunications(JSAC),Vol.20,No.8,October2002.
5.Y.Chu,S.G.Rao,andH.Zhang.Acaseforendsystemmulticast.InProceedingsofACMSIGMETRICS,pp.1-12,SantaClara,CA,June2000.
6.Y.D.Chawathe.Scattercast:
AnArchitectureforInternetBroadcastDistributionasanInfrastructureService.Ph.D.Thesis,UniversityofCalifornia,Berkeley,December2000.
7.Y.Chu,S.G.Rao,S.SeshanandH.Zhang.EnablingConferencingApplicationsontheInternetusinganOverlayMulticastArchitecture.InProceedingsofACMSIGCOMM,pp.55-67,SanDiego,CA,August2001.
8.F.Dabek,B.Zhao,P.Druschel,J.Kubiatowicz,andI.Stoica.TowardsaCommonAPIforStructuredPeer-to-PeerOverlays.InProceedingsofthe2ndInternationalWorkshoponeer-to-PeerSystems(IPTPS’03),Berkeley,CA,February2003.
9.P.Francis.Yoid:
ExtendingtheInternetmulticastarchitecture,Unpublishedpaper,April2000.Availableathttp:
//www.aciri.org/yoid/docs/index.html.
10.TheFreeNetProject.http:
//freenetproject.org.
11.TheGnutellaProject..
12.TheHyperCastproject.http:
//www.cs.virginia.edu/hypercast.
13.J.Jannotti,D.K.Gifford,K.L.Johnson,M.F.Kaashoek,andJ.OToole.Overcast:
Reliablemulticastingwithanoverlaynetwork.InProceedingsoftheFourthSymposiumonOperatingSystemsDesignandImplementation,pp.197-212,SanDiego,CA,October2000.
14.TheJXTAProject.http:
//www.jxta.org.
15.J.LiebeherrandT.K.Beam.HyperCast:
Aprotocolformaintainingmulticastgroupmembersinalogicalhypercubetopology.InProceedingsofFirstInternationalWorkshoponNetworkedGroupCommunication(NGC99),InLectureNotesinComputerScience,Vol.1736,pp.72-89,Pisa,Italy,November1999.
16.J.Liebeherr,M.Nahas,andW.Si.Application-layermulticastingwithDelaunaytriangu-lationoverlays.IEEEJournalonSelectedAreasinCommunications,Vol.20,No.8,October2002.
17.D.Pendarakis,S.Shi,D.Verma,andM.Waldvogel.ALMI:
Anapplicationlevelmulti-castinfrastructure.InProceedingsof3rdUsenixSymposiumonInternetTechnologiesandSystems,pp.49-60,SanFrancisco,CA,March2001.
18.S.Ratnasamy,P.Francis,