UDP协议分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UDP协议
应用层 TCP IP 网络接口 UDP
应用进程通信时 需遵守的规则和 标准
主机到主机间的 不可靠通信
UDP 分组叫用户数据报,有8 个字节 的固定首部,UDP 报首结构如下图所示




源端口号:这是在源主机上运行进程所使用的端口,有16 位长,可以表示的 端口号从0 到65535,当源主机是客户端时,此端口号为短暂端口号,为源主 机上UDP软件随机生成。当源主机是服务端时,此端口号通常是熟知端口。 ������目的端口号:这是在目的主机上运行的进程使用的端口号,长度是16 位, 若目的主机是服务器端,那么此端口号通常是熟知端口,如果目的主机是客 户端,那么此端口号通常是随机出来的短暂端口。服务器端发送报文的目的 端口,通常是将客户端发送报文的源端口复制过来。 ������总长度:长度为16 位,它定义了用户数据报的总长度,首部加上数据,16 位可以定义的总长度是从0 到65535 字节,但是最小长度是8 字节,有首部没 有数据。 ������检验和:这个字段用来检验整个用户数据报(首部加上数据)出现的差错 。UDP的校验和的计算和IP 与ICMP校验和的计算不同,UDP 的校验和包括 伪首部、UDP
二. 发送方的应用程序准备好数据后,将其交给UDP协 议,由其发送给主机A的端口P。 三. UDP协议将应用程序数据作为UDP数据包的数据部 分封装在一个UDP数据包中,并将数据包的目标端口字段设 置为P。
四. UDP协议将UDP数据包交给IP协议处理,由其发送 给主机A。
五. IP协议将UDP数据作为IP数据包的数据部分封装在 一个IP数据包中,并将数据包的目的地址字段设置为A,将 协议字段设置为17。 六. IP数据交给网络层发送出去,经多个网络设备 (路由器),到达主机A的IP协议层。
• UDP是一个简单的面向数据报的运输层的协议,它提 供协议端口,使得应用进程能够向其他进程发送数据 报,进行进程间的数据通信。 • UDP数据报是无连接、不可靠的。不提供确认、消息 反馈控制,与IP数据报相同。可靠性要需要由应用程 序本身提供。 • UDP规范(RFC-768,1980)。
• UDP利用IP进行主机到主机的数据报传输。 • UDP数据封装:
TCP和UDP协议实现进程间通信
• UDP实现不可靠通信,所以比较简单,只实现了进程通 信和部分差错检测功能。这些可由UDP的首部体现出来
• TCP实现可靠通信,这决定了实现的功能很多,也很复杂。
• 目前的方案是:按功能(服务)分类,为每类功能提 供一个协议“端口”作为最终的报文接收端。 – 协议端口是逻辑意义上的,用一些正整数标识 – 一台主机可以设置多个端口,也即意味着同一主机 可运行多种服务。 – 基于操作系统的支持,多个端口可并行访问,即多 种服务可同时运行。
UDP的特点
UDP的简单性使UDP不适合于一些应用,但对另一些更 复杂的、自身提供面向链接功能的应用却很适合。其他可 能使用UDP的情况包括:转发路由表数据交换、系统信息 、网络监控数据等的交换。这些类型的交换不需要流控、 应答、重排序或任何TCP提供的功能。
UDP报首部数据格式
源端口可选,若无,则必须全为零。 报文长度以8位组计算,包括UDP报头和数据,最小值为8, 即仅有报头。 检校和也是可选的,但是应该使用,因为这是UDP中唯一提 供差错控制的地方。若无,则全为零。
图7-2
UDP数据报的首部和伪首部
UDP检验和
UDP检验和覆盖UDP首部和UDP数据。 UDP检验和的基本计算方法与IP首部检验和计算方法相 类似(16b字的二进制反码和),但是它们之间存在不同的 地方。 首先, UDP数据报的长度可以为奇数字节,但是检验和 算法是把若干个16 bit字相加。解决方法是必要时在最后增 加填充字节0,这只是为了检验和的计算(也就是说,可能 增加的填充字节不被传送)。
UDP检验和
其次, UDP数据报包含一个12字节长的伪首部,它是为了 计算检验和而设置的。伪首部包含IP首部一些字段。其目的 是让UDP两次检查数据是否已经正确到达目的地。
如果检验和的计算结果为0,则存入的值为全1,这在二 进制反码计算中是等效的。如果传送的检验和为0,说明发 送端没有计算检验和。
UDP数据包的封装
UDP首部 UDP数据
IP首部
IP报文数据
帧头
帧数据
图 7-6 UDP数据包封装示意图
IP数据包首部有一个协议字段,表明IP数据包封装 的是上层哪一个协议的数据包。对于UDP协议数据包,该 字段为17。 使用UDP协议的应用程序如何将数据传输到目的主 机A的特定应用程序。 过程: 一. 接收数据主机A的应用程序要申请一个UDP端 口,设为P。
图7-3
UDP数据报检验和计算过程中使用的各个字段
图7-4
计算UDP检验和的示例
UDP伪首部格式
0
8
16
百度文库
31
源IP地址 目的IP地址 0 协议代码(17) UDP数据包长度
图7-5 UDP伪首部数据格式
UDP伪首部的作用 为了数据包的接收者确定发送和接收的UDP数据包是来 自正确的源地址且该数据包是发给自己的。 发送方构造伪首部与待发送的的UDP数据一起计算校验 和,然后发送给接收方。 接收方使用同样的方法计算校验 和,并与发送方的校验和比较,如果一致,则说明该数据 包是发给本机的,且数据传输无误。
相关文档
最新文档