udp协议【优秀5篇】

2023-12-15 13:37:33

下面是壶知道的小编为您带来的5篇《udp协议》,亲的肯定与分享是对我们最大的鼓励。

udp协议 篇一

关键词:ARM;Linux;交叉编译环境;UDP协议;重发机制;重发次数

UDP协议以其高效性和应用的简单,被广泛运用于嵌入式网络开发中。由于UDP协议的应用简单,在嵌入式设备开发过程中,网络资源的利用率并不高。以下将介绍一个UDP具体项目实验过程,描述ARM-Linux环境的软硬件环境构建过程,并对UDP协议下一种重发模式中上位机的重发次数的确定提出一种可行的方法。

1 研究背景

随着嵌入式技术的快速发展,嵌入式设备已经在许多领域取代了传统的微型机设备。本文的选题主要来自于实习期间承接的一项改造项目:某院校特长生评分系统的改造。项目改造目的有:1) 保留原上位机。2) 改用手持式客户端进行显示及评分操作。3)保留原有网络设备。针对要求,我们使用S3C2440作为硬件平台,移植Linux操作系统,并在ARM-Linux环境下研究了UDP协议的通信过程,进行了上位机与嵌入式系统的UDP协议通信实验及分析,并给出一种重发机制中的发送次数求法。

2 硬件平台介绍

S3C2440处理速度达到了400MHZ,具有较高的性价比。为了提高开发效率,我们采用公司自行研制开发的ET-S3C2440开发板。

2.1 ET-S3C2440开发板简介

ET-S3C2440是公司自行开发的一款ARM9架构的实验开发板,其结构框图如图1。

核心板的主要器件有:32MB×2片SDRAM,64MB NORFLASH,512MB NANDFLASH。设计了启动方式可选,通过开关选择从Nandflash或Norflash启动。

2.2 实验相关电路说明

底板电路主要功能是输入输出以及网络通讯功能。按键输入部分采用扫描方式获得输入,用一个单向地址锁存器和一个双向地址锁存器与地址总线相连,可以通过扫描地址来获得按键输入。LCD采用三星的3.5寸TFT屏作为显示输出设备。网卡芯片选用的是与原设备匹配的10M 的CS8900A,关于CS8900A与S3C2440的硬件连接,有众多资源可供参考,本文不再赘述。

3 系统软件平台的构建

硬件平台搭建完毕后要将操作系统和应用程序在硬件平台上运行起来。以下是对嵌入式Linux操作系统移植的过程。

3.1 交叉编译环境的构建

Linux 2.6.29.1版本的内核可以登录到下载。本文选择的是arm-linux-gcc-4.3.2工具链()

在宿主机上进入Linux系统,切换当前目录到工具链所在目录,新建一个arm目录保存解压后的文件(mkdir /user/local/arm)并将arm-linux-gcc-4.3.2解压到这个目录中(tar jxvf arm-linux-gcc-4.3.2 –C /user/local/arm)。然后将环境变量-linux-gcc所在的目录(编辑/etc/profile 添加语句”export PATH=/user/local/arm/4.3.2/bin:),然后reboot一下,这样交叉编译环境就构建好了。

3.2 BOOTLOADER的移植

vivi是一款相当成熟和相对简单的常用bootloader,我们以vivi为移植原型,将S3C2440所有IO端口寄存器定义添加到头文件2440add.inc,删除部分硬件平台使用不到的代码,最后将修改过的vivi制作成镜像烧录到flash中。[1]

udp协议 篇二

基于UDP的数据传输协议(UDP-basedDataTransferProtocol,简称UDT)是一种互联网数据传输协议。UDT的主要目的是支持高速广域网上的海量数据传输,而互联网上的标准数据传输协议TCP在高带宽长距离网络上性能很差。顾名思义,UDT建于UDP之上,并引入新的拥塞控制和数据可靠性控制机制。UDT是面向连接的双向的应用层协议。它同时支持可靠的数据流传输和部分可靠的数据报传输。由于UDT完全在UDP上实现,它也可以应用在除了高速数据传输之外的其它应用领域,例如点到点技术(P2P),防火墙穿透,多媒体数据传输等等。

(来源:文章屋网

udp协议 篇三

引言

Internet现已成为社会重要的信息流通渠道。如果嵌入式系统能够连接到Internet上面,则可以方便、低廉地将信息传送到几乎世界上的任何一个地方。可以预言,嵌入式设备与Internet的结合代表着嵌入式系统和网络技术的真正未来。随着IPv6的应用,设备都可能获得一个全球唯一的IP地址,通过IP地址和互联网相连成为一个网络设备。但是传统的TCP/IP协议在实现实时性方面做得不够好,它把大量的精力花在保证数据传送的可靠性以及数据流量的控制上。而在实时性要求比较高的嵌入式领域中,传统的TCP/IP不能满足其实时要求。另外,传统TCP/IP的实现过于复杂,需占用大量系统资源,而嵌入式应用的系统资源往往都很有限。因此,需要把传统TCP/IP在不违背协议标准的前提下加以改进实现,使其实现性得到提高,占用的存储空间尽可能少,以满足嵌入式应用的要求。

在大型企业自动化系统中,上层企业管理层和生产监控层一般采用的都是以太网和PC机,而在下层车间现场都是采用现场总线和单片机测控设备。上下两层的沟通,通常采用工业控制机加以太网卡,再加上PC机插槽上的接口卡和并行打印口EPP接口卡来实现。这种连接方式成本高,开发周期长。针对这些情况,本文提出了一种单独的嵌入式CAN-以太网网关互连系统的设计方案,成功地实现以太网和现有的CAN总线网的直接数据传输。

1 异构网络互联系统结构设计

CAN总线是一个设备互连总线型控制网络。在CAN总线上可以挂接多达110个设备节点,各设备间可以自主相互通信,实现复杂网络控制系统。但设备信息层无法直接到达信息管理层,要想设备信息进入信息管理层就要通过一种数据网关。

这里设计了一个SX52网关,用于CAN总线与以太网的互连。图1所示的系统总体结构分为三部分:现场测控网络(CAN网络)、嵌入式透明SX52网关和以太网信息管理终端(如监控平台和网络数据库等)。以太网信息管理终端与CAN总线上的CAN节点通过Ethernet、SX52网关、CAN总线相互通信,其中SX52网关起核心异构网络的互连作用。

协议转换是异构网络互连的技术关键和难点。协议转换一般遥相呼应采用分层转换的方法,自低向上逐层进行。目前互连大都是在网络层或网络层展开的,因而必须对互连层以下各层协议逐层向上转换。这种转换方法的依据是协议分层的基本原理,即低层支持高层,高层调用低层,低层断开连接后,高层连接也随之断开,但高层断开连接却不会影响低层。从网络的分层结构上来看我们设计的互连系统具有如图2所示的分层结构。以太网上运行TCP/IP协议,它具有应用层、传输层、网络层以太网数据链路层和物理层;CAN总线具有应用层、数据链路层和物理层,其中应用层由用户自己定义,数据链路层和物理层由CAN协议所定义;SX52数据网关具有物理层、数据链路层和应用层,其应用层也就是Ethernet与CAN的信息数据交换层,SX52微控制器在此层相互解释并转发这两种不同协议的数据。

在本设计中,SX52网关被设计成了一个透明数据网关。也就是在以太网应用层构建和解析完整的CAN协议数据包。CAN协议数据包作为TCP/IP网络的应用层的数据进行传输。对通信数据的具体实际意义不做任何解释。

透明式网关由通信处理器、CAN总线控制器和以太网控制器三个部分组成。其中SX52单片机为核心处理器,实现CAN控制网络与以太网之间的协议转换。以太网信息管理 层的控制指令发送到嵌入式透明SX52网关,经过它将TCP/IP协议包数据转换为CAN协议形式发送至CAN控制网络中的指定设备节点,完成信息管理层对现场设备层的控制。同样地,当CAN网络上的设备数据(如定时采样数据或报警信息)要传输到信息管理层时,可将数据发送到嵌入式透明SX52网关,再通过网关协议转换程序将CAN协议数据封装成TCP/IP协议的以太网数据帧发送至以太网上的监控计算机。

2 SX52中TCP/IP协议栈的设计

按照层次结构思想,对计算机网络模块化的研究结果是,形成了一组从上到下单向依赖关系的协议栈(protocol stack),也叫协议族。在标准的TCP/IP协议族中有很多协议。这里SX52中TCP/IP协议栈层次结构如图3所示。

2.1 SX52 ARP协议的设计与实现

地址解析协议ARP(Address Resolution Protocol)可以实现逻辑地址到物理地址的动态映射。它提供了一种使以太网络节点可以传输一个IP数据包到目的地址的映射机制。

在SX52中,ARP协议是通过一个“IP地址对应以太网地址”的单登记实现的。当远程主机需要知道它的物理地址时,远程主机会向它发送ARP请求。这时它就会响应这个远程主机的请求,告诉对方自己的物理地址。当然,当应用层需要传输IP数据包时,SX52 ARP协议也可以请求远程目的物理地址。

要传输的Internet数据包在以太网控制器的发送缓冲区中被构建,它使用最近接收到的数据包的目的以太网地址作为发送数据包的目的地址。当然,这可能不是正确的以太网地址,因此,在实际发送数据包之前,ARP协议将检查发送数据包中的IP地址是否存在于ARP核中。如果发送数据中包中的IP地址在这个核中,在以太网发送缓冲区中的数据包将使用ARP核中的以太网地址更新;如果不在,ARP协议将发送一个ARP请求包,然后等待一个应答。一旦这个ARP应答接收到,这个ARP核将使用刚接收到的目标以太网地址更新,接着,等待发送的数据包也将使用这个以太网地址更新,然后被发送出去。如果发送的ARP请求包没有应答,导致ARP定时器超时,这时等待发送的数据包将被废弃,正常的协议栈继续运行。使用的变量有:ARP核中的IP地址{hostlIP3,hostlIP2,hostlIP1,host1IP0};ARP核中的以太网物理地址{host1Eth0,host1Eth1,host1Eth2,host1Eth3,host1Eth4,host1Eth5};ARP协议的定时器{arpTimerMS

B,arpTimerLSB}等。使用涉及的函数有:ARPInit(),ARPCheckCache(),ARPSendResponse(),ARPUpdateEthAddr(),ARPCheckIfIs(),ARPCompare4(),ARPSendStPacket(),ARPSendCommon(),ARPSendRequest()。2.2 SX52 IP协议的设计与实现

IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。IP提供不可靠、无连接的数据报传送服务。本设计中的IP协议是针对特殊的应用环境下的合理简化。CAN总线的控制网络是一种短帧(每个数据帧为8字节)的实时网络,所以,IP数据包无须分片(MF=DF=0),同时,设置IP为服务类型为一般类型,其头长为20字节,寿命TTL设置为64。使用的变量有:目的IP地址{remoteIP3,remoteIP2,remoteIP1,remoteIP0};源IP地址{myIP3,myIP2,myIP1,myIP0};IP校验和{ipCheckSumMSB,ipCheckSumLSB};IP数据包长度{ipLengthMSB,}ipLengthLSB};上层使用的协议ipProtocol,IP标识{ipIdentMSB,ipIdentLSB}。使用涉及的函数有:TCPIPInit(),CheckIPDatagram(),CheckIPDestAddr(),IPStartPktOut()等。

2.3 SX52 ICMP协议的设计与实现

为了让互联网中的路由器报告或提供有关意外情况的信息,在TCP/IP协议系列中加入了一个专门用于发送差错报文的协议——互联网控制报文协议ICMP(Internet Control Message Protocol)。ICMP是IP的一部分在每个IP实现中都必须用到它。像其它所有的通信业务一样,ICMP报文是放在一个IP数据报的数据部分中传送的。ICMP报文的最终目的不是应用程序或目的机器上的用户,而是该机上处理它的Internet协议软件模块。也就是说:Internet控制报文协议允许路由器向其它路由器或主机发送差错或控制报文;ICMP在两台主机的Internet协议软件之间提供通信。

每个ICMP报文都以相同的3个字节开始:1个8位整数的报文类型(TYPE)字段用来识别报文,1个8位代码(CODE)字段提供有关报文类型的进一步信息,1个16位校验和字段。此外,ICMP报文还总是包括产生问题的数据报首部及其开头的64位数据。

ICMP使用IP来传送每一个差错报文。当路由器有一个ICMP报文要传递时,它会创建一个IP数据报并将ICMP报文封装其中,也就是说,ICMP报文被置于IP数据报的数据区中,然后这一数据报像通常一样被转发。即整个数据报被封装进帧中进行传递。

每一个ICMP报文的产生总是对应于一个数据报。路由器将一个ICMP报文将回给产生数据报的主机。在这里,只实现了ICMP的回应请求/应答服务,主要用于PING程序测试通信链路的畅通性,即只处理接收的报文类型为0x08的ICMP帧,发送的ICMP报文类型为0x00。它没有自己专有的变量,涉及的函数也只有ICMPGenCheckSum()和ICMPProcPktIn()。

2.4 SX52 UDP协议的设计与实现

UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。UDP不提供可靠性,它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。由于缺乏可靠性,我们似乎觉得要避免使用UDP,而使用一种可靠的协议,如TCP。但分析发现,UDP在我们的互连设计中有很多的优点:其一,UDP协议传输效率高,无须TCP通信前的连接开销;第二,UDP协议简单,无须复杂的状态机传输机制,可以很好地避免SX52网关死机复位后由于状态不一致而无法正常通信,且上层协议又很难发现的危险。因此,可以使用UDP来实现通信(避免TCP连接的开销),而让许多需要的特征(如动态超和重传、拥塞避免、查错等)放置在应用层设计和实现。使用的变量有:

UDP接收数据报的源端口{udpRxSrcPortMSB,udpRxSrcPortLSB};

UDP接收数据报的目的端口{udpRxDestPortMSB,udpRxDestPortLSB};

UDP接收数据报的长度{udpRxDataLenMSB,udpRxDataLenLSB};

UDP发送数据报的源端口{udpTxSrcPortMSB,udpTxSrcPortLSB};

UDP发送数据报的目的端口{udpTxDestPortMSB,udpTxDestPortLSB};

UDP发送数据报的长度{udpTxDataLenMSB,udpTxDataLenLSB}。

设计的相关函数有:UDPAppInit(),DPGenCheckSum(),UDPStartPktOut(),UDPProcPktIn(),UDPEndPktOut(),UDPAppProcPktIn(),UDPAppProcPktOut()等。

2.5 SX52 TCP协议的设计与实现

传输控制协议TCP(Transmission Control Protocol)是传输层的重要协议。它提供一个完全可靠的(没有数据重复或丢失)、面向连接的、全双工的流传输服务。本设计中,对复杂的TCP协议做了合理的简化:①因为CAN网络传输速度较快,数据量小且10Mbps的以太网传输一般不会发生阻塞,以太网上的主机也会有足够的能力及时处理通信数据,所以可以固定超时与重传的时间为5s。②RTL8019AS上有两个1500字节的接收缓冲区,且CAN网络为控制网,信息量小,所以可以固定接收窗口为1400字节。③因为我们采用一般的TCP服务就可以满足应用,所以可以忽略紧急指针和选项及填充字段的值。通过上述三点简化,实际上大大简化了TCP协议的实现。因为TCP的超时与重传时间的确定和窗口大小的控制有着较复杂的算法和实现机制。

它的实现变量有:tcpState,{tcpTmpSeq4,tcpTmpSeq3,tcpTmpSeq2,tcpTmpSeq1},{tcpTmpAck4,tcpTmpAck3,tcpTmpAck2,tcpTmpAck1},{tcpUnAckMSB,tcpUnAckLSB},tcpRxFlags,{tcpCheckSumMSB,tcpCheckSumLSB},{tcpLengthMSB,tcpLengthLSB},{tcpTmpMSB,TcpTmpLSB},{tcbLocalPortMSB,tcbLocalPortLSB},{tcbRemotePortMSB,tcbRemotePortLSB},{tcbSndUna4,tcbSndUna3,tcbSndUna2,tcbSndUnal},{tcbRcvNxt4,tcbRcvNxt3,tcbRcvNxt2,tcbRcvNxt1},tcbOffset,tcbFlags,{tcbSendWinMSB,tcbSendWinLSB},{tcpTimerMSB,tcpTimerLSB}等。

相关函数有:TCPIPInit(),TCPRxHeader(),TCPProcPktIn(),TCPTransmit(),TCPReTransmit(),TCPAppPassiveOpen(),TCPAppActiveOpen(),CPA

ppClose(),TCPAddRcvNxt(),TCPIncRcvNxt(),TCPIncSndUna(),TCPCopySeqToNxt(),TCPAckUpdate(),TCPUpdateSeq(),TCPChkSeq(),TCPRestorePrev(),TCPCmpNxtSeq(),TCPSendEmptyPkt(),TCPSendReset(),TCPSendSyn(),TCPSendISN(),TCPSendSynAck()TCPSendAck(),TCPSendFin(),TCPCheckSuminit(),CPCheckSumAcc(),TCPCheckSumAddHdr(),CPTxByte(),TCPStartPktOut(),TCPAppInit(),TCPAppTxBytes(),TCPAppTxData(),TCPAppTxDone(),TCPAppRxBytes(),TCPAppRxData(),等。2.6 TCP和IP传输层协议的选择

把TCP/IP协议应用到控制网络中如何选择传输层协议类型很关键。如果要与现有的应用程序通信,必须使用与其相同的协议类型。在实际应用时,从可靠性来说,TCP提供了可靠的数据连接,UDP和直接访问IP的一些协议是不可靠的,数据报可能会丢失、损坏或重复;从性能上讲,UDP的性能最快,可靠性、流量控制重组包和连接维护等附加开销降低了TCP的性能。对于速度比较慢的系统来说,如温度、湿度传感器,选择TCP或UDP都无所谓,对于不太重要的传感器选用UDP就可以了;对于可靠性要求较高的传感器,应该选用TCP协议;对于实时性要求高的网络设备,如网络会议系统、IP音响、实时播放的电视等设备,数据传输率较高,应该选用UDP协议;有些有严格要求的同步系统应采用UDP;数据监控系统传输的可靠性要求较高,应采用TCP;Web和Email也应采用了TCP。总之,要根据实际情况来确定选用何种协议。

udp协议 篇四

关键词:UDP协议;磁场测量;数据采集;Delphi

在分布式测量系统中,大多数采用以太网进行数据传输。以太网的传输协议有TCP和UDP等。TCP是面向连接的,可靠性较高,但效率较低;UDP则是一种传输速率高,但不保证数据可靠性的协议,因此比较适合应用在实时性要求高、数据传输量大的测量系统中。

1 UDP协议简述

UDP协议的母体和TCP协议一样,也是IP协议。每个UDP报文称为一个用户数据报,分UDP报头和UDP数据区两部分。报头由四个16位长的字段组成,分别说明该报文的源端口、目的端口、报文长度以及校验和。UDP报文格式如图1所示。

图1 UDP报文格式

源端口字段和目的端口字段包含了16位的UDP协议端口号。长度字段记录该数据报的长度,以8位为组计算,包括报头和用户数据区。校验和字段是可选择的,如该字段值为0,表明不进行校验。UDP协议的报头只包含几个域,比TCP包头简单,它的网络开销一般要小于TCP协议。同时,由于UDP协议在传送数据过程中没有建立连接,也不进行检查,因此在优良的网络环境中,其工作效率较TCP协议要高。但UDP协议不提供报文到达确认、排序以及流量控制等功能,因此,报文可能会丢失、重复以及乱序等,其可靠性问题只能由使用UDP的该应用程序来解决。

2 利用Delphi编写UDP协议的网络应用程序

2.1 INDY介绍

INDY的全名是Internet Direct,是一套开放源代码的Internet控件集,它支持大部分Internet协议,包括TCP、UDP、HTTP、POP3等,支持BASE64、MD2、MD4、MD5等编解码,提供相应的客户端和服务器控件。INDY是完全基于SOCKET阻塞工作模式的开发库,支持Delphi、C++ Builder等开发平台。

2.2 INDY UDP相关控件

INDY(10.1)提供了UDP相关的服务器和客户端控件TIdUDPServer、TIdUDPClient,它们封装了UDP协议的实现。

(1)TIdUDPServer控件的主要属性及方法

主要属性:

Active,启动或停止UDP;

Bindings:TIdSocketHandles,服务器所分配的套接字句柄(Socket handles);

BufferSize:Integer,最大数据包大小;

DefaultPort:integer,用于监听新连接的端口号;

IPVersion,UDP支持的IP协议版本;

ThreadedEvent:boolean,指定是否采用独立线程进行UDP读操作。

主要方法:

Send(AHost: string, const APort: Integer, const AData: string),向指定IP地址(AHost)和端口(APort)的端点发送字符串;

SendBuffer(AHost: string, const APort: Integer, const ABuffer: TIdBytes),向指定IP地址(AHost)和端口(APort)的端点发送字节数组;

ReceiveString(const AMSec: Integer = IdTimeoutDefault): string,接收字符串;

ReceiveBuffer(var ABuffer: TIdBytes, const AMSec: Integer = IdTimeoutDefault): Integer,接收字节数组。

(2)TIdUDPClient控件的主要属性及方法

主要属性:

Host:String,远端计算机IP地址;

Port:Word,远端计算机端口号;

BoundIP:String,本机IP地址;

BoundPort:Word,本机端口号;

BoundPortMax:Integer,本机最大端口数;

BoundPortMin:Integer,本机最小端口数;

BufferSize:Integer,最大数据包大小;

IPVersion:TIdIPVersion,UDP支持的IP协议版本;

ReceiveTimeOut:Integer,等待读取socket时间;

Active:Boolen,启动或停止UDP。

主要方法:

Send(AData:String),发送字符串;

SendBuffer(const ABuffer: TIdBytes),发送字节数组;

SendBuffer(AHost: string, const APort: Integer, const ABuffer: TIdBytes),向指定IP地址(AHost)和端口(APort)的端点发送字节数组;

ReceiveString(const AMSec: Integer = IdTimeoutDefault):string,接收字符串;

ReceiveBuffer(var ABuffer: TIdBytes,const AMSec:Integer = IdTimeoutDefault):integer,接收字节数组;

Connected: Boolean,读取UDP连接状态。

2.3 系统程序功能介绍

磁场数据采集系统的主要功能是实时接收测磁仪上传的三分量磁场测量数据,通过图、表形式进行显示,并保存成格式为‘TXT’或‘Excel’类型的数据文件。

在该程序中采用的主要控件有:UDP相关控件IdUDPClient、图形显示控件TeeChart、数据显示控件Memo及文件保存和状态显示控件等。图2是磁场数据采集程序的用户界面。

根据约定采用的上下位机IP地址和端口号(上位机(PC机)的IP为:192.168.0. 99,Port为8080;下位机(测磁仪)的IP为:192.168.0.123,Port为2020),设置IdUDPClient1的相关属性:

Host:=192.168.0.123;

Port:=2020;

BoundIP:=192.168.0. 99;

BoundPort:=8080

图2 磁场数据采集系统程序界面

计算机与测磁仪的通讯过程如下:仪器端等待上位机指令,收到数据传送“开始”指令,将测量数据打包发至上位机,直至收到“停止”指令。上位机在设置好相关IP地址及Port属性后,向仪器端发送“开始”指令,并等待接收数据。收到数据后,对其进行实时处理,更新测量结果的数据和图形显示。

2.4 程序清单 (略)

3 结束语

由于UDP具有TCP无可比拟的速度优势,因此特别适合应用在实时性要求较高且需大量数据传输的场合。在Delphi环境中,采用开源INDY控件实现基于UDP协议的通信,系统开发、调试将更加容易、迅速。

udp协议 篇五

关键词:UDP;RUDP;可靠性

中图分类号:TP393文献标识码:A文章编号:1009-3044(2010)16-4379-02

Reliable Improvement Agreement Based on UDP Agreement

YIN Ran-ran

(School of Computer & Information, Hefei University of Technology, Hefei 230009, China)

Abstract: This article will propose and realizes the embedded equipment's authentic data transmission and one kind of new many through the comparative analysis transmission level transport protocols UDP unreliability and the TCP low efficiency in the UDP agreement's foundation transmits the RUDP agreement wireless. The RUDP agreement software module provides based on the news reliable communication function, the correspondence is faces the connection, the first floor uses UDP to take the load bearing agreement.

Key words: UDP; RUDP; reliability

1 TCP协议和UDP协议

1.1 TCP协议

传输控制协议即TCP,尽管它和UDP都使用相同的网络层协议(IP),但它向应用层提供了与UDP完全不同的服务,它提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用在彼此交换数据之前必须先建立一个TCP连接,数据传输完成后,再经过4次握手终止双方的连接。在数据传输的过程中,TCP还通过对数据的确认、流量控制等手段提高通信的可靠性。

1.2 UDP协议

UDP(User Datagram Protocol),即用户数据报协议。在TCP/IP网络通信中, UDP协议是一种面向无连接的服务。它发送数据以独立的数据包形式,不保证各数据包的发送顺序,也不进行正确性检查,因此,可能出现数据的重发、丢失、失序等现象[2]。使用UDP协议的常见服务有DNS、QQ等。

UDP协议直接向接收方发送数据而不关心对方计算机的状态,因此,它是一种相对不可靠的通信协议。正因为UDP协议不考虑网络数据传输过程中的很多问题,所以能节省了大量的网络状态确认和数据确认的系统资源消耗,从而提高UDP协议的传输速度和网络的利用效率。可是,如果既能充分利用UDP协议的这些优势,又能保证UDP通信的可靠性,网络通信系统的性能将会得到更大程度地提高。

2 RUDP 协议的提出

2.1 嵌入式设备可靠通信面临的问题

面向连接方式的服务功能明显很强大,它能够发挥面向连接的传输所具备的特性,例如流量控制,差错处理以及顺序交付等等,但是面向无连接的服务更适合于某些情况,在网络层上使用IP协议就是一个面向无连接的服务而且这个面向无连接的服务显得更加健壮,因为Internet本身就是一个不稳定的环境,面向连接的服务反而不能很好的运行于其上。

如果使用TCP连接协议实现嵌入式设备之间的数据传输可能带来许多的问题,嵌入式设备之间建立TCP连接并发送数据后,或者接收端向正在请求连接的设备发出SYN+ACK应答报文后,都可能无法接收到终端的ACK报文,在这种情况下发送端一般会重试并等待一段时间后终止这个连接。大量重传数据会进一步加剧网络的拥塞情况,严重时可以使网络及服务器系统崩溃,同时也会对数据传输的实时性产生影响。同时目前嵌入式设备又存在多点分散、数据量小、实时性要求高等特点[3]。本文将在UDP协议的基础上提出并实现嵌入式设备的可靠数据传输。

2.2 嵌入式可靠传输模型的体系结构

RUDP协议软件模块底层采用UDP作为承载协议,提供基于消息的可靠通信功能。根据计算机网络层次体系的概念,RUDP协议的层次模型就是在原UDP/IP协议的传输层和应用层之间加入了RUDP层和标志层。RUDP协议的层次结构如表1所示。

RUDP层的功能是保证数据的可靠传送。由于嵌入式设备通过网络进行消息的收发是处于一个公共网络的环境之中,可能会有大量无用的数据向嵌入式设备进行发送,大量的数据解析会极大地增加嵌入式设备的负担。为了避免这个问题,我们增加了一个标志层,标志层可以让嵌入式设备迅速的判断所接收的数据包是否为有效数据包,如果标志层数据不可识别,则迅速将包丢弃。在可靠传输层进行可靠传输设计和实现,在这一层,我们增加一系列可靠传输机制以保证嵌入式设备之间数据的可靠传输。这样就形成了一个原UDP协议所在传输层和应用层之间加入了一层为保证可靠数据传送而实现的RUDP软件模块和标志层的六层体系结构。从而,在UDP协议的基础上实现一种基于消息的面向连接的,适合嵌入式设备的可靠数据传递机制。

2.3 嵌入式可靠传输模型的基本功能

嵌入式可靠传输模型RUDP主要功能有:

1) 基于消息的收发功能:RUDP的传输层利用基于消息的传输协议,所以不必考虑发送端可以接收多少数据,只需知道能否接收数据即可。

2) 校验和:RUDP的校验和算法采用UDP的校验功能保证数据包的正确和顺序到达。UDP校验和字段是对整个UDP报文头和UDP所带的数据的校验和。

3) 丢弃重复包和保存失序包的功能:每当收到数据包后,便对数据包进行确认。保存未确认的数据包,丢弃已经确认了的重复包。由于UDP传送过程中,收到的数据包的顺序可能会和发送的顺序有一定的区别,所以保存失序包能够有效的减少重发的次数,也就是能相应的减少网络的数据流量。

4) 超时重发功能:RUDP中借鉴TCP中的超时重发机制来保证数据包的可靠传递;同时TCP中的确认延迟功能也得到借鉴,这样可以显著降低网络的流量,提高嵌入式系统的通信效率。

5) 服务器和客户端保活功能:探测收发两端的连接是否正常时嵌入式可靠传输模型中必须要实现的一个功能。如果连接已经出错,若干数据包仍然发送,当超时定时器到时后就会进行数据的重发。如果没有判断收发两端的连接是否正常,则会导致数据无法正常而又高效的发送。

2.4 RUDP协议工作过程

RUDP协议的工作过程是:首先,建立连接。发送方和接收方通过三次握手的方式建立连接(三次握手过程如图1所示)。第三次握手时,发送方发给接收方的数据帧中除了包含对接收方的确认信息之外,还包含将要发送的数据帧总数。接收方收到确认帧后,开始与发送方建立连接。与此同时将根据收到的帧总数设置接收窗口大小并将所有帧序号放入缓存。双方连接建立好后保证了数据发送和接收的同步性。

接着,发送方开始发送数据帧,接收方收到数据帧并进行处理。能够正确接收到的帧序号将会从序号缓存中删除。发送方发送完数据帧后发送“发送完”标志给接收方。接收方收到此标志后,开始扫描帧序号缓存。如果数据帧全部接收到,接收方向发送方发送一“接收完”标志,发送方收到后断开连接。如果序号缓存中有序号则说明有帧丢失,这时接收方将向发送方发出一个带有丢失帧序号的确认帧。发送方收到此确认帧后将重新发送丢失帧。如此重复,直到接收方完全正确接收到数据帧。其工作过程如图2所示。

3 总结

通过分析比较传输层协议TCP和UDP,能够看到它们各自的特点,并分析出它们各自的优势和缺点。结合嵌入式设备数据传输的特点同时针对UDP在可靠性方面的不足进行了改进,简单介绍了RUDP协议的原理和工作过程。通过分析可以看出采用RUDP的效率在嵌入式设备数据传输中要优于UDP协议,这样就可以实现一种更适合于嵌入式设备的可靠数据传递机制。

参考文献:

[1] Wright G R,Stevens W R. TCP/ IP 详解卷2:实现[M].陆雪莹,蒋慧,译。北京:机械工业出版社,1999.

以上就是壶知道为大家带来的5篇《udp协议》,希望可以对您的写作有一定的参考作用。

【udp协议】相关文章

2023年《中华人民共和国合同法》完整版05-02

酒店订房协议书范文(精选6篇)10-26

退款协议书通用6篇12-03

保洁服务协议书(6篇)09-24

医院供货协议书【最新6篇】09-21

一次性补偿协议书(通用8篇)10-05

答辩状(精选8篇)01-18

待岗协议书通用8篇01-27

人身损害赔偿诉讼案例【通用3篇】02-24

公司股东会决议书(精选6篇)03-08

148 13145