当前位置:首页 > 《TCPIP协议分析》课程设计
图3-2百度搜索栏主页
3、EtherPeekNX工具窗口停止捕获,进行分析捕获到的UDP报文。
图3-3UDP请求报文
图3-4UDP应答报文
本次实验验证了UDP协议的工作过程,从理论上讲,IP数据报的最大程度是65535字节,除去20字节的IP首部和8字节的UDP首部,UDP数据报中用户数据的最大长度应为65507字节,但大多数实现所提供的长度比这个最大值小。例如,在SunOS4.1.3下使用回送接口的最大IP数据报长度是32767字节,所能接收的最大UDP报文长度为32747字节。但在Solaris2.2下使用回送接口,最大可收发的IP数据报长度是65535字节,相应的最大UDP报文长度为65515。显然,这种限制与具体操作系统的协议模块市县有关。
3.3UDP报文格式的分析
3.3.1报文格式
UDP报文又称为用户数据报,它分为首部和数据区两部分。
其中“源端口”和“目的端口”包含了16比特的UDP端口号,用于在各个等待接收报文的应用之间对数据报进行多路分解操作。其中“源端口”字段可选,若选用,则指定了应答报文应该发往的目的端口;若不选用,值为0。
“报文长度”字段指明以字节为单位的UDP首部和UDP数据的长度,最小值为8,即UDP首部的长度。
UDP报文首部的“校验和”字段是可选的。如果该字段值为0,说明未进行校验。设计者把这个字段作为可选项的目的,是为了尽量减少在可靠性很好的局域网上使用UDP的程序开销。但IP对数据报中的数据部分并不计算校验和,所以UDP的校验和字段提供了唯一保证UDP报文无差错的途径。 3.3.2UDP信息包
UDP信息包由UDP标题和数据组成。UDP的标题结构如图3-5所示,它由5个域组成:源端端口(SourcePort)、目的地端口(DestinationPort)、用户数据包的长度(Length)和检查和(Checksum)。其中,前4个域组成UDP标题(UDPheader), 每个域由4个字节组成;检查和域占据2个字节,它用来检测传输过程中是否出现了错误;用户数据包的长度包括所有5个域的字节数。
图3-5UDP的标题结构
以下是对使用检查和检测错误的举例说明。假设从源端A要发送下列3个16位的二进制数:word1,word2和word3到终端B,检查和计算如下。
图3-6UDP的检查计算
从发送端发出的4个16位二进制数之和为1111111111111111,如果接收端收到的这4个16位二进制数之和也是全“1”,就认为传输过程中没有出差错。许多链路层协议都提供错误检查,包括流行的以太网协议。由于链路层以下的协议在源端和终端之间的某些通道可能不提供错误检测,UDP虽然提供有错误检测,但检测到错误时,UDP不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息,所以UDP也要提供检查和。 3.3.3UDP的伪首部
UDP校验和覆盖的内容超出了UDP数据报本身的范围。为了计算校验和,UDP把伪首部引入数据报中,在伪首部中有一个值为0的填充八位组用于保证整个数据报的长度为16比特的整数倍,这样才好计算校验和。填充八位组和伪首部并不随着UDP数据报一起传输,也不计算在数据报长度之内。为了计算校验和,要先把校验和字段置为0,然后对整个对象,包括伪首部、UDP的首部和用户数据报,计算一个16比特的二进制反码和。使用伪首部的目的是检验UDP数据报已到达正确的目的地。正确的目的地包括了特定的主机和机器上特定的协议端口。UDP报文的首部仅仅指定了使用的协议端口号。因此为了确保数据报能够正确到达目的地,发送UDP数据报的机器在计算校验和时把目的机的IP地址和应有的数据都包括在内。在最终的接收端,UDP协议软件对校验和进行检验时要用到携带UDP报
共分享92篇相关文档