当前位置:文档之家› udp类型的协议

udp类型的协议

竭诚为您提供优质文档/双击可除udp类型的协议篇一:udp协议设计与实现udp协议设计与实现一、网络协议栈结构二、udp协议功能无连接传输:不保证端到端数据传输的可靠性,一定程度上保证了数据传输实时性,适合多媒体数据传输.三、udp协议设计1.udp协议语法用户数据报:udp首部+数据,以字节为单位;其中首部最小为8个字节,包含4个字段;源端口号:2个字节,发送方应用层协议进程编号;目的端口号:2个字节,接收方应用层协议进程编号;长度:udp首部+数据长度。

校验和:2个字节,伪首部+首部+数据端口号理解服务器端口号周知端口号:数值一般为0~1023。

注册端口号:数值为1024~49151,为没有熟知端口号的应用服务器程序使用;这个范围的端口号必须在iana登记,以防止重复使用。

客户端口号(或动态端口号):数值为49152~65535,留给客户应用程序暂时使用,由操作系统临时分配。

当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号;通信结束后,客户端口号立即释放,可供其他客户程序以后使用。

四、udp协议语义五、udp协议时序关系发送方接收方udp报文udp报文发送方或接收方可以随时发送udp报文给对方。

接收到udp报文后,检查校验和,如果错误直接丢弃,然后不做任何处理;再检查目的端口号,如果目的端口号对应的上层进程接收队列存在,则接收;否则调用icmp协议发送端口不可达icmp差错报告。

五、udp协议实现发送方:transport_udp_send.cpp(.h)定义一个udp协议数据单元数据结构定义变量: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=;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;返回值:当前进程号;注意:souRce_poRt在一个终端具有唯一性。

}sendto(sockid,buf,buflen,flags,destadd,addrlen)篇二:udp协议概述udp一、udp协议的简介udp协议用户数据包协议,是一种无连接的传输层协议,提供简单不可靠的信息传送服务。

在网络中它与tcp协议一样用于处理udp数据包。

udp不提供数据包分组、组装、不能对数据包进行排序,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

udp用来支持那些需要在计算机之间传输数据的网络应用。

包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用udp协议。

二、udp协议报头udp报头由4个域组成,其中每个域各占用2个字节:udp源端口号目标端口号数据报长度校验值数据发送一方(可以是客户端或服务器端)将udp数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。

数据报的长度是指包括报头和数据部分在内的总字节数。

从理论上说,包含报头在内的数据报的最大长度为65535字节。

不过,一些实际应用往往会限制数据报的大小,有时会降低到8192字节。

udp协议使用报头中的校验值来保证数据的安全。

校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。

如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此udp协议可以检测是否出错。

这与tcp协议是不同的,后者要求必须具有校验值。

虽然udp提供有错误检测,但检测到错误时,udp不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。

三、用户数据报头格式域:源端口是可选域,当其有意义时,它指的是发送进程的端口,这也就假定了在没有其它信息的情况下,返回信息应该向什么地方发送。

如果不使用它,则在此域中填0。

目的端口在有特定的目的网络地址时有意义。

长度指的是此用户数据报长度的八进制表示。

(这表明最小的数据报长度是8。

)校验码有16位,是对ip头,udp头和数据中信息包头的数位取反之和再取反得到的。

报头从概念上说是在udp头信息之前的,它包括有源地址,目的地地址,所使用的协议和udp长度。

这些信息使信息不能被错误地接收。

这个校验过程与tcp中使用的过程一致。

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

ip层接口:udp模块必须能够决定源和目标的网络地址,而且必须能够从包头中得知所使用的协议。

一个可能的接口方式是返回整个数据报,包括接收操作返回的包头。

这样的接口还应该允许udp向ip传送完整的带包头的数据报用于传送。

由ip 来确定一致性并计算校验码。

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

协议号:在ip中使用它时,它的协议号是17(八进制中是21)。

四、udp信息包udp信息包由udp标题和数据组成。

udp的标题结构如图所示,它由5个域组成:源端端口、目的地端口、用户数据包的长度和检查和。

其中,前4个域组成udp标题,每个域由4个字节组成;检查和域占据2个字节,它用来检测传输过程中是否出现了错误;用户数据包的长度包括所有5个域的字节数。

五、udp的伪首部udp校验和覆盖的内容超出了udp数据报本身的范围。

为了计算校验和,udp把伪首部引入数据报中,在伪首部中有一个值为0的填充八位组用于保证整个数据报的长度为16比特的整数倍,这样才好计算校验和。

填充八位组和伪首部并不随着udp数据报一起传输,也不计算在数据报长度之内。

为了计算校验和,要先把校验和字段置为0,然后对整个对象,包括伪首部、udp的首部和用户数据报,计算一个16比特的二进制反码和。

使用伪首部的目的是检验udp数据报已到达正确的目的地。

理解伪首部的关键在于认识到:正确的目的地包括了特定的主机和机器上特定的协议端口。

udp报文的首部仅仅指定了使用的协议端口号。

因此为了确保数据报能够正确到达目的地,发送udp数据报的机器在计算校验和时把目的机的ip地址和应有的数据都包括在内。

在最终的接收端,udp协议软件对校验和进行检验时要用到携带udp 报文的ip数据报首部中的lp地址。

如果校验和正确,说明udp数据报到达了正确主机的正确端口。

在udp校验和的计算过程中用到的伪首部长度为12个八位组,其结构如下图所示。

081631伪首部的源ip地址字段和目的ip地址字段记录了发送udp报文时使用的源ip地址和目的ip地址。

协议字段指明了所使用的协议类型代码(udp 是17),而长度字段是udp数据报的长度。

接收方进行正确性验证的时候,必须要把这些字段的信息从ip报文的首部中抽取出来,以伪首部的格式进行装配,然后再重新计算校验和。

六、udp的封装在交给ip层之前,udp给用户要发送的数据加上一个首部。

ip层又给从udp接收到的数据报加上一个首部。

最后,网络接口层把数据报封装到一个帧里,再进行机器之间的传送。

如图所示。

帧的结构根据底层的网络技术来确定。

通常网络帧结构包括一个附加的首部。

七、层次的划分及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数据链路层传输有地址的帧以及错误检测功能slip,cslip,ppp,aRp,RaRp,mtu物理层以二进制数据形式在物理媒体上传输数据iso2110,ieee802,ieee802.2************************************************************************************************************************************tcp/ip五层模型的协议。

相关主题