udp类型的协议,udp协议和tcp协议
本作品内容为udp类型的协议,格式为 docx ,大小 38658 KB ,页数为 25页
('第1页共25页竭诚为您提供优质文档/双击可除udp类型的协议篇一:udp协议设计与实现udp协议设计与实现一、网络协议栈结构二、udp协议功能无连接传输:不保证端到端数据传输的可靠性,一定程度上保证了数据传输实时性,适合多媒体数据传输.三、udp协议设计1.udp协议语法用户数据报:udp首部+数据,以字节为单位;第2页共25页其中首部最小为8个字节,包含4个字段;源端口号:2个字节,发送方应用层协议进程编号;目的端口号:2个字节,接收方应用层协议进程编号;长度:udp首部+数据长度。校验和:2个字节,伪首部+首部+数据端口号理解服务器端口号周知端口号:数值一般为0~1023。注册端口号:数值为1024~49151,为没有熟知端口号的应用服务器程序使用;这个范围的端口号必须在iana登记,以防止重复使用。客户端口号(或动态端口号):数值为49152~65535,留给客户应用程序暂时使用,由操作系统临时分配。当服务器进程收到客户进程的报文时,就知道了客户第3页共25页进程所使用的动态端口号;通信结束后,客户端口号立即释放,可供其他客户程序以后使用。四、udp协议语义五、udp协议时序关系发送方接收方udp报文udp报文发送方或接收方可以随时发送udp报文给对方。接收到udp报文后,检查校验和,如果错误直接丢弃,然后不做任何处理;再检查目的端口号,如果目的端口号对应的上层进程接收队列存在,则接收;否则调用icmp协议发送端口不可达icmp差错报告。五、udp协议实现发送方:transport_udp_send.cpp(.h)定义一个udp协议数据单元数据结构第4页共25页定义变量:structsource_address{source_ip;source_port;}source_port=;server_port=;source_address=;server_address=;aF=;pRotocol=;type=0oR1;0:表示tcp=sock_stReam;1:表示udp=sock_dgRam;socket_id=;第5页共25页sockid=socket(af,type,protocol)af(addressFamily)—网络地址类型,一般为aF_inet=1,表示在internet中使用;type—传输层通信协议类型,sock_stReam表示面向连接的字节流通信方式,sock_dgRam表示无连接的数据报通信方式;protocol—网络通信协议指定为ippRoto_ip=0x0800;返回值sockid是一个整数,即socket号,用一个计数器产生;sockid=socket(af,type,protocol){初始化变量:aF,type,pRotocol,souRce_ip,souRce_poRt;其中,souRce_ip从配置文件中读取,可直接赋值;souRce_poRt通过一个计数器随机产生,范围为:49152~65535;返回值:当前进程号;第6页共25页注意:souRce_poRt在一个终端具有唯一性。}sendto(sockid,buf,buflen,flags,destadd,addrlen)篇二:udp协议概述udp一、udp协议的简介udp协议用户数据包协议,是一种无连接的传输层协议,提供简单不可靠的信息传送服务。在网络中它与tcp协议一样用于处理udp数据包。udp不提供数据包分组、组装、不能对数据包进行排序,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。udp用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使第7页共25页用udp协议。二、udp协议报头udp报头由4个域组成,其中每个域各占用2个字节:udp源端口号目标端口号数据报长度校验值数据发送一方(可以是客户端或服务器端)将udp数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。数据报的长度是指包括报头和数据部分在内的总字节数。从理论上说,包含报头在内的数据报的最大长度为65535字节。不过,一些实际应用往往会限制数据报的大小,有时会降低到8192字节。udp协议使用报头中的校验值来保证数据的安全。校验第8页共25页值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此udp协议可以检测是否出错。这与tcp协议是不同的,后者要求必须具有校验值。虽然udp提供有错误检测,但检测到错误时,udp不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。三、用户数据报头格式域:源端口是可选域,当其有意义时,它指的是发送进程的端口,这也就假定了在没有其它信息的情况下,返回信息应该向什么地方发送。如果不使用它,则在此域中填0。目的端口在有特定的目的网络地址时有意义。长度指的第9页共25页是此用户数据报长度的八进制表示。(这表明最小的数据报长度是8。)校验码有16位,是对ip头,udp头和数据中信息包头的数位取反之和再取反得到的。报头从概念上说是在udp头信息之前的,它包括有源地址,目的地地址,所使用的协议和udp长度。这些信息使信息不能被错误地接收。这个校验过程与tcp中使用的过程一致。用户接口:用户接口应该允许创建新的接收端口,在接收端口的接收操作有:应该返回一个八进制数说明源端口和源地址,允许数据报传送,指定数据,源和目标端口和目的地地址。ip层接口:udp模块必须能够决定源和目标的网络地址,而且必须能够从包头中得知所使用的协议。一个可能的接口方式是返回整个数据报,包括接收操作返回的包头。这样的接口还应第10页共25页该允许udp向ip传送完整的带包头的数据报用于传送。由ip来确定一致性并计算校验码。协议应用:此协议的最主要的用途是网际名称服务器和小文件传输协议。协议号:在ip中使用它时,它的协议号是17(八进制中是21)。四、udp信息包udp信息包由udp标题和数据组成。udp的标题结构如图所示,它由5个域组成:源端端口、目的地端口、用户数据包的长度和检查和。其中,前4个域组成udp标题,每个域由4个字节组成;检查和域占据2个字节,它用来检测传输过程中是否出现了错误;用户数据包的长度包括所有5个域的字节数。五、udp的伪首部udp校验和覆盖的内容超出了udp数据报本身的范围。第11页共25页为了计算校验和,udp把伪首部引入数据报中,在伪首部中有一个值为0的填充八位组用于保证整个数据报的长度为16比特的整数倍,这样才好计算校验和。填充八位组和伪首部并不随着udp数据报一起传输,也不计算在数据报长度之内。为了计算校验和,要先把校验和字段置为0,然后对整个对象,包括伪首部、udp的首部和用户数据报,计算一个16比特的二进制反码和。使用伪首部的目的是检验udp数据报已到达正确的目的地。理解伪首部的关键在于认识到:正确的目的地包括了特定的主机和机器上特定的协议端口。udp报文的首部仅仅指定了使用的协议端口号。因此为了确保数据报能够正确到达目的地,发送udp数据报的机器在计算校验和时把目的机的ip地址和应有的数据都包括在内。在最终的接收端,udp协议软件对校验和进行检验时要用到携带udp报文的ip数据报首部中的lp地址。如果校验和正确,说明udp数据报到达了正确主机的正确端口。第12页共25页在udp校验和的计算过程中用到的伪首部长度为12个八位组,其结构如下图所示。081631伪首部的源ip地址字段和目的ip地址字段记录了发送udp报文时使用的源ip地址和目的ip地址。协议字段指明了所使用的协议类型代码(udp是17),而长度字段是udp数据报的长度。接收方进行正确性验证的时候,必须要把这些字段的信息从ip报文的首部中抽取出来,以伪首部的格式进行装配,然后再重新计算校验和。六、udp的封装在交给ip层之前,udp给用户要发送的数据加上一个首部。ip层又给从udp接收到的数据报加上一个首部。最后,网络接口层把数据报封装到一个帧里,再进行机器之间的传送。如图所示。帧的结构根据底层的网络技术来确第13页共25页定。通常网络帧结构包括一个附加的首部。七、层次的划分及udp校验和的计算分层原则与udp校验和的计算过程看来存在一定的冲突。udp校篇三:udp、tcp、Rtp三种协议的总结udp、tcp、Rtp三种协议的总结osi七层模型osi中的层功能tcp/ip协议族应用层文件传输,电子邮件,文件服务,虚拟终端tFtp,http,snmp,Ftp,smtp,dns,telnet表示层数据格式化,代码转换,数据加密没有协议会话层解除或建立与别的接点的联系没有协议传输层提供端对端的接口tcp,udp(Rtp)网络层为数据包选择路由ip,icmp,Rip,ospF,bgp,igmp数据链路层传输有地址第14页共25页的帧以及错误检测功能slip,cslip,ppp,aRp,RaRp,mtu物理层以二进制数据形式在物理媒体上传输数据iso2110,ieee802,ieee802.2tcp/ip五层模型的协议应用层传输层:四层交换机、也有工作在四层的路由器网络层:路由器、三层交换机数据链路层:网桥(现已很少使用)、以太网交换机(二层交换机)、网卡(其实网卡是一半工作在物理层、一半工作在数据链路层)物理层:中继器、集线器、还有我们通常说的双绞线第15页共25页也工作在物理层一、Rtp协议分析1、Rtp概述1.1.Rtp是什么Rtp全名是Real-timetransportprotocol(实时传输协议)。它是ietF提出的一个标准,对应的RFc文档为RFc3550(RFc1889为其过期版本)。RFc3550不仅定义了Rtp,而且定义了配套的相关协议Rtcp(Real-timetransportcontrolprotocol,即实时传输控制协议)。Rtp用来为ip网上的语音、图像、传真等多种需要实时传输的多媒体数据提供端到端的实时传输服务。Rtp为internet上端到端的实时传输提供时间信息和流同步,但第16页共25页并不保证服务质量,服务质量由Rtcp来提供。1.2.Rtp的应用环境Rtp用于在单播或多播网络中传送实时数据。它们典型的应用场合有如下几个。(1)简单的多播音频会议。语音通信通过一个多播地址和一对端口来实现。一个用于音频数据(Rtp),另一个用于控制包(Rtcp)。(2)音频和视频会议。如果在一次会议中同时使用了音频和视频会议,这两种媒体将分别在不同的Rtp会话中传送,每一个会话使用不同的传输地址(ip地址+端口)。如果一个用户同时使用了两个会话,则每个会话对应的Rtcp包都使用规范化名字cname(canonicalname)。与会者可以根据Rtcp包中的cname来获取相关联的音频和视频,然后根据Rtcp包中的计时信息(networktimeprotocol)来实现音频和视频的同步。第17页共25页(3)翻译器和混合器。翻译器和混合器都是Rtp级的中继系统。翻译器用在通过ip多播不能直接到达的用户区,例如发送者和接收者之间存在防火墙。当与会者能接收的音频编码格式不一样,比如有一个与会者通过一条低速链路接入到高速会议,这时就要使用混合器。在进入音频数据格式需要变化的网络前,混合器将来自一个源或多个源的音频包进行重构,并把重构后的多个音频合并,采用另一种音频编码进行编码后,再转发这个新的Rtp包。从一个混合器出来的所有数据包要用混合器作为它们的同步源(ssRc,见Rtp的封装)来识别,可以通过贡献源列表(csRc表,见Rtp的封装)可以确认谈话者。1.3.流媒体流媒体是指internet上使用流式传输技术的连续时基媒体。当前在internet上传输音频和视频等信息主要有两种方式:下载和流式传输两种方式。第18页共25页下载情况下,用户需要先下载整个媒体文件到本地,然后才能播放媒体文件。在视频直播等应用场合,由于生成整个媒体文件要等直播结束,也就是用户至少要在直播结束后才能看到直播节目,所以用下载方式不能实现直播。流式传输是实现流媒体的关键技术。使用流式传输可以边下载边观看流媒体节目。由于internet是基于分组传输的,所以接收端收到的数据包往往有延迟和乱序(流式传输构建在udp上)。要实现流式传输,就是要从降低延迟和恢复数据包时序入手。在发送端,为降低延迟,往往对传输数据进行预处理(降低质量和高效压缩)。在接收端为了恢复时序,采用了接收缓冲;而为了实现媒体的流畅播放,则采用了播放缓冲。使用接收缓冲,可以将接收到的数据包缓存起来,然后根据数据包的封装信息(如包序号和时戳等),将乱序第19页共25页的包重新排序,最后将重新排序了的数据包放入播放缓冲播放。为什么需要播放缓冲呢?容易想到,由于网络不可能很理想,并且对数据包排序需要处理时耗,我们得到排序好的数据包的时间间隔是不等的。如果不用播放缓冲,那么播放节目会很卡,这叫时延抖动。相反,使用播放缓冲,在开始播放时,花费几十秒钟先将播放缓冲填满(例如ppliVe),可以有效地消除时延抖动,从而在不太损失实时性的前提下实现流媒体的顺畅播放。到目前为止,internet上使用较多的流式视频格式主要有以下三种:Realnetworks公司的Realmedia,apple公司的quicktime以及microsoft公司的advancedstreamingFormat(asF)。上面在谈接收缓冲时,说到了流媒体数据包的封装信息(包序号和时戳等),这在后面的Rtp封装中会有体现。第20页共25页另外,Realmedia这些流式媒体格式只是编解码有不同,但对于Rtp来说,它们都是待封装传输的流媒体数据而没有什么不同。2、Rtp详解2.1.Rtp的协议层次2.1.1.传输层的子层Rtp(实时传输协议),顾名思义它是用来提供实时传输的,因而可以看成是传输层的一个子层。图1给出了流媒体应用中的一个典型的协议体系结构。图2给出了Rtp协议与其他协议之间的关系。图1流媒体体系结构图2Rtp协议与其他协议的关系Rtp、tcp、udp都属于传输层协议;Rtp也可以认为是介于应用层与传输层之间从图中可以看出,Rtp被划分在传输层,它建立在udp第21页共25页上。同udp协议一样,为了实现其实时传输功能,Rtp也有固定的封装形式。Rtp用来为端到端的实时传输提供时间信息和流同步,但并不保证服务质量。服务质量由Rtcp来提供。2.1.2.应用层的一部分不少人也把Rtp归为应用层的一部分,这是从应用开发者的角度来说的。操作系统中的tcp/ip等协议栈所提供的是我们最常用的服务,而Rtp的实现还是要靠开发者自己。因此从开发的角度来说,Rtp的实现和应用层协议的实现没不同,所以可将Rtp看成应用层协议。Rtp实现者在发送Rtp数据时,需先将数据封装成Rtp包,而在接收到Rtp数据包,需要将数据从Rtp包中提取出来。2.2.Rtp的封装一个协议的封装是为了满足协议的功能需求的。从前第22页共25页面提出的功能需求,可以推测出Rtp封装中应该有同步源和时戳等字段,但更为完整的封装是什么样子呢?请看图3。图3Rtp的头部格式版本号(V):2比特,用来标志使用的Rtp版本。填充位(p):1比特,如果该位置位,则该Rtp包的尾部就包含附加的填充字节。扩展位(x):1比特,如果该位置位的话,Rtp固定头部后面就跟有一个扩展头部。csRc计数器(cc):4比特,含有固定头部后面跟着的csRc的数目。标记位(m):1比特,该位的解释由配置文档(profile)来承担.载荷类型(pt):7比特,标识了Rtp载荷的类型。序列号(sn):16比特,发送方在每发送完一个Rtp包后就将该域的值增加1,接收方可以由该域检测包的丢失第23页共25页及恢复包序列。序列号的初始值是随机的。时间戳:32比特,记录了该包中数据的第一个字节的采样时刻。在一次会话开始时,时间戳初始化成一个初始值。即使在没有信号发送时,时间戳的数值也要随时间而不断地增加(时间在流逝嘛)。时间戳是去除抖动和实现同步不可缺少的。同步源标识符(ssRc):32比特,同步源就是指Rtp包流的来源。在同一个Rtp会话中不能有两个相同的ssRc值。该标识符是随机选取的RFc1889推荐了md5随机算法。贡献源列表(csRclist):0~15项,每项32比特,用来标志对一个Rtp混合器产生的新包有贡献的所有Rtp包的源。由混合器将这些有贡献的ssRc标识符插入表中。ssRc标识符都被列出来,以便接收端能正确指出交谈双方的身份。2.3.Rtcp的封装第24页共25页Rtp需要Rtcp为其服务质量提供保证,因此下面介绍一下Rtcp的相关知识。Rtcp的主要功能是:服务质量的监视与反馈、媒体间的同步,以及多播组中成员的标识。在Rtp会话期间,各参与者周期性地传送Rtcp包。Rtcp包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,各参与者可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。Rtp和Rtcp配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。从图1可以看到,Rtcp也是用udp来传送的,但Rtcp封装的仅仅是一些控制信息,因而分组很短,所以可以将多个Rtcp分组封装在一个udp包中。Rtcp有如下五种分组表1Rtcp的5种分组类型上述五种分组的封装大同小异,下面只讲述sR类型,第25页共25页而其它类型请参考RFc3550。发送端报告分组sR(senderReport)用来使发送端以多播方式向所有接收端报告发送情况。sR分组的主要内容有:相应的Rtp流的ssRc,Rtp流中最新产生的Rtp分组的时间戳和ntp,Rtp流包含的分组数,Rtp流包含的字节数。sR包的封装如图3所示。图3Rtcp头部的格式版本(V):同Rtp包头域。填充(p):同Rtp包头域。',)
提供udp类型的协议,udp协议和tcp协议会员下载,编号:1700673323,格式为 docx,文件大小为25页,请使用软件:wps,office word 进行编辑,PPT模板中文字,图片,动画效果均可修改,PPT模板下载后图片无水印,更多精品PPT素材下载尽在某某PPT网。所有作品均是用户自行上传分享并拥有版权或使用权,仅供网友学习交流,未经上传用户书面授权,请勿作他用。若您的权利被侵害,请联系963098962@qq.com进行删除处理。