计算机网络课程实验6 - 图文

2026/4/29 18:18:36

图6-5 UDP校验和的计算过程

2. 在接收端的校验和计算

接收端按以下6个步骤计算校验和是否正确:

(1)把伪首部加到UDP用户数据报上。 (2)若需要,就增加填充。 (3)把数据报按16位长度分段。

(4)把所有16位的分段使用反码算术运算相加。 (5)把得到的结果取反码。

(6)若得到的结果是全零,则丢弃首部和填充,并接受这个用户数据报。若结果是非零,就丢弃这个用户数据报。

校验和是可选使用的,若不计算校验和,则校验和字段就填入0。

七. UDP应用

下面列出了UDP协议的一些用途:

● UDP适用于这样的进程,它需要简单的请求——响应通信,而较少考虑流量控制和差

错控制。对于需要传送成块数据的进程,如FTP,则通常不使用UDP; ● UDP适用于具有内部流量控制和差错控制机制的进程; ● 对多播和广播来说,UDP是个比较合适的传输层协议; ● UDP可用于管理进程,如SNMP协议;

● UDP可用于某些路由选择更新协议,如路由信息协议(RIP协议,参考实验17)。

八. 协议栈实现代码解析

本实验将通过对netproto_udp_student.h、netproto_udp_shudent.c、netproto_udpif_student.h、

netproto_udpif_student.c四个文件进行编码,完成协议栈中UDP协议的实现。

netproto_udp_student.h和netproto_udp_shudent.c文件用于实现UDP数据包发送和接收。其中,netproto_udp_student.h文件中定义了UDP协议实现相关数值以及UDP的负载内容、负载长度,关键代码如下所示:

这段代码定义了5个宏,他们代表的含义如下表所示:

表6-2 netproto_udp_student.h中定义的宏

在实验的编码过程中,应该使用这些宏对相应的变量进行赋值。

netproto_udp_shudent.c文件是协议栈中UDP数据包发送和接收的实现部分,其中定义了2个函数。下面介绍这些协议栈的实现部分。

函数netp_udp_output_student的功能是构造并发送一个UDP数据包,其高层协议为自定义协议类型,负载内容为自定义负载。这个函数的编码工作需要由学生完成。

当有数据到达本机网络接口时,函数netp_udp_input_student将被调用,并传递给这个函数原始数据。在该函数中,需要判断一些条件值来确定接收到的数据包为自定义UDP数据,如果是自定义UDP数据包,则输出负载内容,如果不是,则返回NETP_PUSH_TO_LWIP交给协议栈继续处理。

netproto_udpif_student.h和netproto_udpif_shudent.c文件用于实现UDP上层投递的功能,即为高层使用UDP协议提供了接口。其中,netproto_udpif_student.h文件中并没有定义太多内容。netproto_udpif_shudent.c文件是协议栈中UDP上层投递的功能的实现部分,其中定义了一个全局变量recv_port和2个函数。

全局变量recv_port的作用很简单,它记录了发送UDP数据报时的源端口号作为接收UDP数据报的过滤条件。

函数netp_send_udp通过IP层接口发送UDP数据报,该函数功能需要学生完成。 函数netp_udp_input_student处理输入数据包,如果输入的数据报满足过滤条件,则投递给上层协议使用。该函数功能需要学生完成。

在编码过程中可能会设计到一些结构体、宏和函数,下表是对他们进行和介绍:

表6-3 实验涉及的结构体、宏和函数


计算机网络课程实验6 - 图文.doc 将本文的Word文档下载到电脑
搜索更多关于: 计算机网络课程实验6 - 图文 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219