实验3 UDP协议与TCP协议

发布时间 : 星期三 文章实验3 UDP协议与TCP协议更新完毕开始阅读

实验3 UDP与TCP协议

【实验目的】

1、理解UDP协议的工作原理及工作过程; 2、掌握UDP的数据包格式; 3、了解基本的端口分配。 4、掌握TCP协议的工作原理; 5、理解TCP协议的通信过程。

【实验学时】

4学时

【实验类型】

综合型

【实验内容】

1、学习UDP协议的通信过程; 2、学会手工计算UDP校验和;

3、理解TCP首部中各字段的含义及作用; 4、理解三次握手的过程;

5、能够分析TCP协议的建立连接、会话和断开连接的全过程; 6、学会计算TCP校验和的方法; 7、了解TCP的标志字段的作用。

【实验原理】 一、UDP协议

UDP是面向非连接的协议,发送端与接收端在传输数据包之前不建立连接,而只是简单地把数据包发送到网络上,或者从网络上接收数据包。UDP提供不可靠的数据传输服务。 1、UDP封装在IP数据报

IP数据报UDP数据报IP首部20字节UDP首部8字节UDP数据

图1 UDP的封装

2、UDP字段组成

116位源端口号16位UDP长度数据151616位目的端口号16位UDP检验和32

图2 UDP分组格式

3、关于UDP“校验和”的计算方法

尽管UDP校验和的基本计算方法与IP首部“校验和”的计算方法类似(16bit的二进制反码和),但是它们之间存在不同的地方。

首先,UDP数据报长度可以为奇数字节,但是“校验和”的算法是把若干个16bit字相加。解决方法是必要时在最后增加填充字节0,这只是为了“校验和”的计算(也就是说,可能增加的填充字节不被传送)。

其次,UDP数据报包含一个12字节长的伪首部,它是为了计算“校验和”而设置的。伪首部包含IP首部一些字段。其目的是让UDP两次检查数据是否已经正确到达目的地。发送时不用传送伪首部,但接收时将IP头中的信息构建伪首部,然后计算“校验和”用以判错。

UDP“校验和”是一个端到端的“校验和”。它由发送端计算,然后由接收端验证。其目的是为了发现UDP首部和数据在从发送端到接收端之间发生的任何改动。

UDP数据报中的伪首部格式如图5-3:

32位源IP地址32位目的IP地址08位协议16位UDP长度16位目的端口号16位UDP检验和数 据UDP头伪报头16位源端口号16位UDP长度

图3 UDP分组的伪首部

二、TCP协议

TCP协议是面向连接的、端到端的可靠传输协议,它支持多种网络应用程序。TCP必须解决可靠性,流量控制的问题,能够为上层应用程序提供多个接口,同时为多个应用程序提供数据,TCP也必须能够解决通信安全性的问题。 1、TCP的封装

IP数据报TCP数据报IP首部20字节TCP首部20字节TCP数据

图4 TCP的封装

2、TCP首部格式: 各字段含义:

16位源端口号和16位目的端口号:端口号通常也称为进程地址。 32位序号:序号用来标识从TCP发送端向TCP接收端发送的数据字节流。 32位确认序列号:表示一个准备接收包的序列号。

4位首部长度:首部长度指出了首部中32 bit字的数目。正常的TCP首部长度是20字节。 6个标志字段:U R G 紧急指针;A C K 确认序号;P S H 推标志;R S T 重建连接;S Y N 同步序号;F I N 结束标志。

16位窗口:TCP的流量控制由连接的每一端通过声明的滑动窗口大小来提供,窗口大小为字节数。 16位检验和:检验和字段覆盖了TCP首部和TCP数据。TCP检验和的计算方法和UDP检验和的计算方法一样,计算时需要考虑伪报头。

16位紧急指针:URG标志置1时紧急指针才有效。

116位源端口号32位序号32位确认序号4位首部长度保留(6位)UAPRSFRCSSYIGKHTNN16位窗口大小16位紧急指针选项数据161716位目的端口号3216位检查和

图5 TCP分组格式示意图

【实验步骤】 一、UDP协议练习

练习1:编辑并发送UDP数据包

1、打开协议仿真编辑器,在工具栏选择“新建”,建立一个以太网帧(也可以利用协议仿真编辑器打开时默认的以太网帧进行编辑); 2、填写该帧的以太网协议首部:

⑴源MAC地址:发送方的MAC地址;

⑵目的MAC地址:接收方的MAC地址。注意:当选择的目的主机与本机不在同一子网的情况,目的MAC地址该怎样填写;

⑶类型或长度:该字段值应为0800(即IP协议的类型值); 3、填写IP协议头信息:

⑴高层协议字段:即上层协议类型应为17(UDP协议的类型为17); ⑵总长度字段:应包括UDP长度; ⑶填写源、目的IP地址; ⑷计算IP头校验和。 4、填写UDP协议信息,见图6:

⑴16位源端口号:自选

⑵16位目的端口号:自选(对于本实验,选择大于1024)

⑶16位UDP长度:UDP报头长度(8个字节)与UDP数据长度之和。 ⑷校验和:覆盖UDP首部(含伪首部)和数据两部分。 ⑸数据字段:可有可无。

图6 UDP协议树示意图

⑹校验和的计算方法:请先参考原理的内容进行手工计算,然后利用协议仿真编辑器来计算(方法二),比较二者的结果,检验手工计算结果的正确性。 5、“校验和”的计算

⑴方法一:手工计算

按照参考原理3中介绍的内容,计算好UDP伪首部和首部中的各项值,然后按16bit进行反码求和(方法同计算IP校验和),将结果填入相应字段。 ⑵方法二:利用协议仿真编辑器来计算。步骤为:

①将UDP长度填写到16位UDP校验和字段中作为伪首部中UDP长度字段值;

②选中IP首部中的32位源IP地址和32位目的IP地址作为UDP伪首部中的32位源IP地址和32位目的IP地址;

③选中IP首部中8位的协议字段作为UDP伪首部中的8位的协议字段; ④在8位的协议字段之前选择一个8位的0作为UDP伪首部中的8位0; ⑤再选中UDP首部及数据各字段; ⑥点击鼠标右键,选择“计算校验和”;

⑦将得到的校验和值填写到16位UDP校验和字段。 下面是一个计算UDP校验和的例子:

一个不含数据部分的UDP数据报的十六进制对照表如下:其中含有MAC地址和IP首部:

UDP类型IP首部00 01 02 03 04 05 06 07 08 09 0A 0B 08 00 45 0000 4F 94 48 40 00 80 11 E4 9D C0 A8 00 20 C0 A800 52 00 00 00 00 00 08 00 08目的IP地址源IP地址UDP部分

图7 计算UDP检验和示意图

其中下划线部分为用来计算校验和的UDP伪首部和UDP首部,其中: 00 11(十进制的17):为UDP伪首部中8位的0和8位的协议字段; C0 A8 00 20:为UDP伪首部中32位源IP地址; C0 A8 00 52:为UDP伪首部中32位目的IP地址; 00 00 00 00 00 08 00 08:为8字节的UDP首部;

由于缺少伪首部中16位UDP长度,故该值暂时存放在16位UDP校验和字段中,在本例中该值为00 08。对上述选中部分计算校验和即可。 ⑶方法三:利用协议仿真编辑器来计算。步骤为:

联系合同范文客服:xxxxx#qq.com(#替换为@)