网络协议分析 实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络协议分析实验指导书
贾伟
陕西理工学院数学与计算机科学学院
2015-06
网络协议分析实验说明
适用网络工程专业2012级。
实验总学时:10学时;实验项目:6个,其中3个验证,3个综合,必须完成1、2、4这三个实验。通过使用wireshark捕获数据包进行分析和使用C语言编程实现对数据包的构造和分析进行实验,每个实验完成后需要将实验捕获的数据、程序代码等实验数据保存下来并上交。
实验完成后,除上交纸质的实验报告外,还要上交实验有关的电子文件,要求文件命名为:“实验X_学号_姓名_其它说明”,X取值为中文汉字“一”、“二”、……,连接符为英文输入的下划线“_”,学号为完整长度,各项中间均不得添加空格。
0.网络协议分析基础(预备实验)
0.A 数据包捕获软件的使用
数据包捕获分析软件建议选择Wireshark,因为它目前是全世界最广泛的网络数据包分析软件之一。
参考文献:(ISBN:978-7-115-30236-6)
Chris Sanders;诸葛建伟等(译).Wireshark数据包分析实战(第2版).人民邮电出版社.2013,3.
0.A.1尝试软件的下载和安装
0.A.2设置软件捕获过滤器
0.A.3选取网卡,开启捕获
0.A.4停止捕获,保存捕获数据,打开捕获的数据文件
0.A.5打开捕获的数据文件,查看数据包内容
0.A.6设置显示过滤器
0.A.8Wireshark高级数据包分析
查看网络端点和网络会话;跟踪TCP流,图形展示IO流和数据流。
0.B C语言编程与网络数据包操作分析
熟悉内存数据块的数据保存形式和对其使用不同指针的读取形式所获得的不同数据内容。
0.B.1 C的有关知识回顾
1)了解ANSI C and ISO C的Keywords
2)掌握C的有关基本数据类型及其长度
3)字符数组和结构体定义
(1)定义字符数组的语法
(2)定义结构体的语法
(3)数据类型的强制类型转换语法
4)指针操作
(1)定义指针变量的语法
(2)指向字符数组的指针
(3)指向结构体的指针
5)比特位操作(与、或和移位)
0.B.2 C语言编程练习
1)输出内存地址的16进制形式
2)讨论IPv4地址的定义和操作
定义形式
i)定义为32bit长度的无符号整数
unsigned int ip;
ii)定义为4个8bit长度的无符号字符串
unsignedchar ip[4];
实现
1)点分十进制形式的输入输出;
2)判断是否是合法的IP地址;
3)判断属于的IP地址类别(A、B、C、D类);
4)给IP地址和掩码,给出网络前缀;
5)给2个IP地址和掩码,判断两个IP是否属于同一个网络。3)字节序(BYTE ORDER)讨论
了解字节序(大端序和小端序)的含义.
参考网上资料:/wiki/字节序。
1)如何判断本机的字节序。
int main(int argc, char **argv)
{
//怎样判断机器的**字节顺序**是高字节在前还是低字节在前?
//1.A.有个使用指针的方法:2.另外一个可能是用联合。
int x = 0x87654321;
unsigned char * p;
p = (unsigned char *)&x;
printf("%X\n", x);//87654321
for (int i = 0; i < 4; i++){
printf("%2X", p[i]);
}//21436587
if (*(char *)&x == 0x21)
printf("\nlittle-endian\n");
else
printf("\nbig-endian\n");
system("PAUSE");
return 0;
}
2)定义字节序的转换函数(宏)
/*网络字节序(NETWORK BYTE ORDER)转换函数*/
/* NETWORK BYTE ORDER CONVERSION NOT NEEDED ON A BIG-ENDIAN COMPUTER */ /* X86计算机为Little-endian*/
#define htons(x) ( ( 0xff & ((x)>>8) ) | ( (0xff & (x)) << 8 ) )
#define htonl(x) ( (((x)>>24) & 0x000000ff) | (((x)>> 8) & 0x0000ff00) | \
(((x)<< 8) & 0x00ff0000) | (((x)<<24) & 0xff000000) )
#define ntohs(x) ( ( 0xff & ((x)>>8) ) | ( (0xff & (x)) << 8 ) )
#define ntohl(x) ( (((x)>>24) & 0x000000ff) | (((x)>> 8) & 0x0000ff00) | \
(((x)<< 8) & 0x00ff0000) | (((x)<<24) & 0xff000000) )
4)字符数组指针与结构体指针的转换
1.网络层协议分析
1.A 数据包捕获分析部分
1.A.1、实验目的
1)、了解ICMP 协议报文类型及作用。
2)、理解IP协议报文类型和格式。
3)、分析ARP 协议的报文格式,理解ARP 协议的解析过程。
1.A.2、实验内容介绍
1)、ICMP协议分析实验
执行ping 和tracert 命令,分别截获报文,分析截获的ICMP 报文类型和ICMP 报文格式,理解ICMP 协议的作用。
2)、IP协议分析实验
使用Ping 命令在两台计算机之间发送数据报,用Wireshark 截获数据报,分析IP 数据报的格式,理解IP V4 地址的编址方法,加深对IP 协议的理解。
3)、IP 数据报分片实验
我们已经从前边的实验中看到,IP 报文要交给数据链路层封装后才能发送。理想情况下,每个IP 报文正好能放在同一个物理帧中发送。但在实际应用中,每种网络技术所支持的最大帧长各不相同。例如:以太网的帧中最多可容纳1500 字节的数据,这个上限被称为物理网络的最大传输单元(MTU,MaxiumTransfer Unit)。
TCP/IP 协议在发送IP 数据报文时,一般选择一个合适的初始长度。当这个报文要从一个MTU 大的子网发送到一个MTU 小的网络时,IP 协议就把这个报文的数据部分分割成能被目的子网所容纳的较小数据分片,组成较小的报文发送。每个较小的报文被称为一个分片(Fragment)。每个分片都有一个IP 报文头,分片后的数据报的IP 报头和原始IP 报头除分片偏移、MF 标志位和校验字段不同外,其他都一样。
重组是分片的逆过程,分片只有到达目的主机时才进行重组。当目的主机收到IP 报文时,根据其片偏移和标志MF 位判断其是否一个分片。若MF 为0,片偏移为0,则表明它是一个完整的报文;否则,则表明它是一个分片。当一个报文的全部分片都到达目的主机时,IP 就根据报头中的标识符和片偏移将它们重新组成一个完整的报文交给上层协议处理。
4)、ARP协议分析实验
本次实验使用的Windows自带的Arp命令,提供了显示和修改地址解析协议所使用的地址映射表的功能。