Skip to content

基于UDP的应用如何保证应用数据的可靠性

UDP的传输效率比TCP更高一些,其在网络中交互时具有更小的延时,因为其一,发送方只要把应用字段全部交给网络层处理就行了,接收方不需要确认发送方发送的数据,发送方也没有等待接收方确认报文这些过程;其二,TCP报头一般20个字节,UDP报头只有8字节,因此UDP跟TCP相比,在同长度的IP报文中能够承载更多的有效应用数据。

很多应用设计者和开发者正是看中了UDP的这种特性,将他们的应用程序利用UDP来实现端对端的数据交互,但是UDP不可靠,它没有TCP的确认、重传、窗口、保活等机制,那么基于UDP的应用如何保证其应用数据在交互过程的可靠性呢?答案是由基于UDP的应用程序来完成

为此我花费了点时间找了一些基于UDP 的应用报文解码,我们一起逐一来看看吧。

TFTP(应用层确认):

点击查看原图

某UDP应用(应用层保活):

点击查看原图

RTP(应用层排序):

点击查看原图

DHCP:(应用层标识)

点击查看原图

上次有个网友问我QQ传大文件的时候,为什么没抓到分片包文?我的回答是:应用层做了分片。虽然我并不清楚QQ文件传输协议的具体工作机制,但是其实跟我上面分析讨论的一样,QQ利用UDP传输文件,抓包的时候也看到的确是UDP的连接,但是没看到分片报文,那么原因只能是QQ应用程序为了保障传输文件的可靠性,避免在网络层被分片,应用程序在将大的应用字段交付给UDP之前,针对大的应用字段做了分片处理,这个过程跟TCP的MSS协商后做分段处理有点类似。

现实工作环境下常见的UDP应用主要有P2P下载、视频会议、在线视频、VOIP语音、在线游戏等,有兴趣的兄弟姐妹,可以找一些工作环境中的这些应用的报文,来验证或完善一下我上述所言,如果找到的话,记得给我留言,顺便把报文给我一份。

评论与留言

欢迎留言。你可以匿名留言,也可以自愿留下网名或邮箱;邮箱不会公开展示。

还没有留言,欢迎交流。

发表留言

网络分析技术档案