实验八协议分析器程序的设计和实现
实验八 IIC通信协议

实验八I2C通信协议一、实验目的:1、培养学生阅读资料的能力;2、加深学生对I2C总线通信协议的理解;3、加强学生对模块化编程的理解;二、实验环境:1、硬件环境:PC机一台、单片机实验板一块、母头串口交叉线、USB电源线;2、软件环境:keil uVision2集成开发环境;STC-ISP下载上位机软件;三、实验原理:要学会I2C通信协议的编程,关键是要看懂并掌握其时序图,理解对I2C通信协议相关子程序的实验编写。
I2C通信协议的总线时序图如下所示:I2C总线时序图I2C相关子程序的详细介绍1、起始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
2、结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
起始信号和结束信号的时序图如下所示:起始信号和结束信号的时序图起始信号的流程如下:1、SCL和SDA拉高,保持时间约为0.6us-4us;2、拉低SDA,保持时间为约为0.6us-4us;3、拉低时钟线结束信号的流程如下:1、SCL置高电平,SDA置低电平,保持时间约为0.6us-4us2、SDA拉高,保持时间约为1.2-4us;应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。
CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。
若未收到应答信号,由判断为受控单元出现故障。
应答信号的时序图如下所示:应答时序图发送时的应答信号;**********应答信号**********ACK: SETB SDA ;数据线置高SETB SCL ;时钟线置高ACALL DELAYJB SDA,$ ;等待数据线变低ACALL DELAYCLR SCL ;时钟线置低RET注意:这里如果数据线一直为高将进入死循环,所以一般我们都会在这做一个容错的处理。
具体的程序如下:ACK: MOV R4,#00HSETB SDASETB SCLLOP0: JNB SDA,LOPDJNZ R4,LOP0 ;循环255次LOP: ACALL DELCLR SCLRET接收时的应答信号ACK1: CLR SDA ;数据线置低SETB SCL ;时钟线置高NOPNOPCLR SCL ;时钟线置低SETB SDA ;数据线置高RET3、字节的发送和接收写周期时序图一字节数据发送子程序,流程如下:图6-22 发送子程序流程图(2)一字节数据接收子程序,流程如下:图6-23 接收子程序流程图7、写操作(1)字节写图6-24 字节写时序图流程如下:图6-25 字节写的流程图(2)页写图6-26 页写时序图页写流程如下:8、读操作(1)选择读图6-28 选择读时序图图6-29 NO ACK时序图(2)连续读图6-30 连续读时序图四、实验原理图:I2C总线电路图五、实验例题:例题一编写一程序,实现I2C的指定字节读写,用24C08来记录单片机复位或者开机的次数,并将复位或者开机的次数显示在数码管上。
计算机网络协议分析 - 教案

计算机网络协议分析教案一、引言1.1计算机网络协议的定义与重要性1.1.1定义:计算机网络协议是计算机网络中用于数据交换的规则集合。
1.1.2重要性:协议确保了不同计算机和网络设备之间的有效通信。
1.1.3应用范围:涵盖了互联网、局域网、广域网等多种网络环境。
1.1.4发展历程:从ARPANET到现代互联网,协议不断演进和更新。
1.2教学目的与背景1.2.1教学目的:使学生理解并掌握计算机网络协议的基本原理和应用。
1.2.2背景介绍:互联网的快速发展对计算机网络协议提出了更高的要求。
1.2.3与现实生活的联系:日常生活中的网络活动都离不开网络协议的支持。
1.2.4未来趋势:5G、物联网等新兴技术对协议发展的影响。
1.3教学内容概述1.3.1教学重点:TCP/IP协议族、网络层和传输层协议。
1.3.2教学难点:协议的工作原理和配置管理。
1.3.3教学方法:理论讲解、案例分析、实验操作相结合。
1.3.4教学资源:教科书、在线资源、实验室设备。
二、知识点讲解2.1网络协议的基本概念2.1.1协议的三要素:语法、语义、时序。
2.1.2协议分层:OSI七层模型与TCP/IP四层模型。
2.1.3协议标准化:国际组织与标准制定过程。
2.1.4协议的类型:应用层、传输层、网络层等。
2.2TCP/IP协议族2.2.1TCP/IP模型结构:应用层、传输层、网络层、链路层。
2.2.2IP协议:数据包的传输和路由选择。
2.2.3TCP协议:提供可靠的数据传输服务。
2.2.4常见应用层协议:、FTP、DNS等。
2.3网络层与传输层协议2.3.1网络层协议:IP、ICMP、IGMP等。
2.3.2传输层协议:TCP、UDP、SCTP等。
2.3.3协议的功能与特点:数据包封装、路由选择、流量控制等。
2.3.4协议的选择与配置:根据应用需求选择合适的协议。
三、教学内容3.1网络协议的基本原理3.1.1数据封装与解封装:数据在网络中的传输过程。
实验八 Telnet协议

实验八 Telnet协议一实验目的1、理解 Telnet 协议的工作原理;2、了解 Telnet 协议的常用命令;3、了解应用层协议与传输层协议的关系。
二实验内容1、学习 Telnet 协议的工作过程;2、学习 Telnet 的使用方法;3、了解 Telnet 命令.三实验环境其中一台作为Telnet客户端,另外一台主机作为Telnet服务器四实验流程五实验原理Telnet 是传输控制协议/因特网协议(TCP/IP)网络(例如Internet)的登录和仿真程序。
它最初是由ARPANET 开发的,但是现在它主要用于 Internet 会话。
它的基本功能是,允许用户登录进入远程主机系统。
起初,它只是让用户的本地计算机与远程计算机连接,从而成为远程主机的一个终端。
它的一些较新的版本在本地执行更多的处理,于是可以提供更好的响应,并且减少了通过链路发送到远程主机的信息数量。
1、基本内容Telnet 协议是 TCP/IP 协议族中的一员,是 Internet 远程登陆服务的标准协议。
应用 Telnet 协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。
它提供了三种基本服务:1) Telnet 定义一个网络虚拟终端为远的系统提供一个标准接口。
客户机程序不必详细了解远的系统,他们只需构造使用标准接口的程序;2) Telnet 包括一个允许客户机和服务器协商选项的机制,而且它还提供一组标准选项;3) Telnet 对称处理连接的两端,即 Telnet 不强迫客户机从键盘输入,也不强迫客户机在屏幕上显示输出。
2、远程登录的工作过程使用 Telnet 协议进行远程登陆时需要满足以下条件:在本的计算机上必须装有包含 Telnet 协议的客户程序;必须知道远程主机的Ip 地址或域名;必须知道登录标识与口令。
Telnet 远程登录服务分为以下 4 个过程:1) 本地与远程主机建立连接。
该过程实际上是建立一个 TCP 连接,用户必须知道远程主机的Ip 地址或域名;2) 将本地终端上输入的用户名和口令及以后输入的任何命令或字符以 NVT(Net Virtual Terminal)格式传送到远程主机。
主要协议分析实验报告(3篇)

第1篇一、实验背景随着计算机网络技术的飞速发展,网络协议作为计算机网络通信的基础,扮演着至关重要的角色。
为了更好地理解网络协议的工作原理和功能,我们开展了主要协议分析实验。
本实验旨在通过分析常用网络协议的报文格式和工作机制,加深对网络协议的理解。
二、实验目的1. 熟悉常用网络协议的报文格式和工作机制。
2. 掌握网络协议分析工具的使用方法。
3. 培养网络故障排查和问题解决能力。
三、实验环境1. 实验设备:PC机、网线、Wireshark软件。
2. 实验网络:局域网环境,包括路由器、交换机、PC等设备。
四、实验内容本实验主要分析以下协议:1. IP协议2. TCP协议3. UDP协议4. HTTP协议5. FTP协议五、实验步骤1. IP协议分析(1)启动Wireshark软件,选择合适的抓包接口。
(2)观察并分析IP数据报的报文格式,包括版本、头部长度、服务类型、总长度、标识、标志、片偏移、生存时间、协议、头部校验和、源IP地址、目的IP地址等字段。
(3)分析IP分片和重组过程,观察TTL值的变化。
2. TCP协议分析(1)观察TCP数据报的报文格式,包括源端口号、目的端口号、序号、确认号、数据偏移、标志、窗口、校验和、紧急指针等字段。
(2)分析TCP连接建立、数据传输、连接终止的过程。
(3)观察TCP的重传机制和流量控制机制。
3. UDP协议分析(1)观察UDP数据报的报文格式,包括源端口号、目的端口号、长度、校验和等字段。
(2)分析UDP的无连接特性,观察UDP报文的传输过程。
4. HTTP协议分析(1)观察HTTP请求报文和响应报文的格式,包括请求行、头部字段、实体等。
(2)分析HTTP协议的请求方法、状态码、缓存控制等特性。
(3)观察HTTPS协议的加密传输过程。
5. FTP协议分析(1)观察FTP数据报的报文格式,包括命令、响应等。
(2)分析FTP的文件传输过程,包括数据传输模式和端口映射。
实验八 TLS协议分析

实验八TLS协议分析一、实验环境:win10专业版系统虚拟机,wireshark二、实验步骤1.选择https://网站,首先通过ping语句获得百度IP地址111.13.100.92。
图12.wireshark抓包,使用ip.src==113.13.100.92&ssl过滤包。
在浏览器中访问https://,结果如下图所示图2其中截取了多次包,但是都未捕捉到ClientHello的包,后来发现不止这一个包没有看到而是所有关于Client的包都没有找到,接着找到一个Server Hello Done的包跟踪其SSL流,终于观察到了完整的关于client的包,如下图所示:图3三、实验分析(1)客户端发起握手协商操作,它将发送一个ClientHello消息给服务器,消息中明确了其所支持的SSL/TLS版本、Cipher suite加密算法组合等,可以让服务器选择,并提供了一个客户端随机数,用于以后生成会话密钥使用。
图4(2)服务器返回ServerHello图5服务器将返回一个ServerHello消息,该消息包含了服务器选择的协议版本、加密算法,以及服务器随机数、会话ID等内容。
其中,服务器选择的协议版本应小于等于客户端ClientHello中的协议版本。
本次实验中服务器确认使用TLS 1.2版本的协议,并选择TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384加密算法组合(3)服务器发送Certificate图6服务器发送ServerHello消息,选择好协议版本和加密算法组合后,将发送Certificate 消息,该消息包含了服务器的证书等信息,可通过证书链认证该证书的真实性。
根据选择的加密算法组合的不同,服务器证书中的公钥也可被用于加密后面握手过程中生成的Premaster secret。
(4)服务器发送ServerKeyExchange图7服务器发送ServerKeyExchange消息,消息中包含了服务器这边的EC Diffie-Hellman算法相关参数。
实验八--网络性能监测分析工具Sniffer捕获高层协议数据包并分析

实验八-网络性能监测分析工具Sniffer捕获高层协议数据包并分析实验目的: 使用Sniffer抓取ftp的数据报分析FTP的三次“握手”的过程。
分析FTP客户端和服务器端通信过程实验环境: Windows环境下常用的协议分析工具: sniffer 搭建Serv-U FTP Server, 在计算机上建立FTP服务器VMware虚拟机, 用虚拟机进行登录FTP。
实验内容和步骤:1. 建立网络环境。
用Serv-U FTP Server在计算机上建立一台FTP服务器, 设置IP地址为: 192.168.0.10。
在Serv-U FTP Server中已设定用户xyz, 密码123123。
(也可以自行设定其他帐号)2. 在此计算机上安装了sniffer。
3.启动该机器上的虚拟机作为一台FTP客户端, 设置IP地址为: 192.168.0.12。
4. 使用ping命令看是否连通。
记录结果。
5. 使用虚拟机登录FTP服务器。
6. 运行sniffer嗅探器, 并在虚拟机的“运行”中输入ftp://192.168.0.10, 点确定后出现如下图的登录窗口:在登录窗口中输入:用户名(xyz), 密码(123123)使用sniffer抓包, 再在sniffer软件界面点击“stop and display”, 选择“Decode”选项, 完成FTP命令操作过程数据包的捕获。
8.在sniffer嗅探器软件上点击Objects可看到下图, 再点击“DECODE(反解码)。
记录FTP三次握手信息, 写出判断这三个数据包的依据(如syn及ack)。
记录端口信息等内容。
9.找出数据包中包含FTPUSER命令的数据包, 记录显示的用户名。
10.捕获用户发送PASS命令的数据包, 记录显示的密码。
11. 找出FTP服务器端与客户端端口20进行三次握手打开数据传输。
记录数据信息。
实验八 RIP协议分析

实验八RIP协议分析1实验拓扑图本实验由4人一组进行实验,其中实验主机D作为服务器来启动VLC进行路由环境搭建。
注意将与网络切换器相连的实验主机的网络切换器拨到B的位置(A为与网络测试接口TAP 的连接),以保证其直接接入实验室网络交换机上。
同时,请将TAP中TAP/IN和TAP/OUT:接口上的网线拔出。
以避免与TAP中host接口相连的计算机不能正常上网。
拓扑图如下其中在VLC服务器中简单的搭建一个由3个路由器组建的简单RIP路由环境,拓扑图如下:路由器R1路由器R2路由器R3拓扑图中的互联网网关用于实验主机与VLC中的路由器进行通信.例如互联网网关E1用于连接实验主机A和路由器R1.需要注意的是,各个分组的IP配置信息是不相同的,请按照各个分组的配置信息进行实验。
五人一组实验分组1配置信息实验主机AIP:192.168.11.10 子网掩码:255.255.255.0 网关:192.168.11.1实验主机BIP:192.168.12.10 子网掩码:255.255.255.0 网关:192.168.12.1IP:192.168.13.10 子网掩码:255.255.255.0 网关:192.168.13.1实验主机D(也是本实验中VLC服务器)不需要更改配置路由器R1eth0:192.168.1.1/24 eth1:192.168.11.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.12.1/24 路由器R3eth0:192.168.13.1/24 eth1:192.168.2.3/24分组2配置信息实验主机AIP:192.168.21.10 子网掩码:255.255.255.0 网关:192.168.21.1实验主机BIP:192.168.22.10 子网掩码:255.255.255.0 网关:192.168.22.1实验主机CIP:192.168.23.10 子网掩码:255.255.255.0 网关:192.168.23.1实验主机D(也是本实验中VLC服务器)不需要更改配置路由器R1eth0:192.168.1.1/24 eth1:192.168.21.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.22.1/24 路由器R3eth0:192.168.23.1/24 eth1:192.168.2.3分组3配置信息实验主机AIP:192.168.31.10 子网掩码:255.255.255.0 网关:192.168.31.1实验主机BIP:192.168.32.10 子网掩码:255.255.255.0 网关:192.168.32.1实验主机CIP:192.168.33.10 子网掩码:255.255.255.0 网关:192.168.33.1实验主机D(也是本实验中VLC服务器)不需要更改配置路由器R1eth0:192.168.1.1/24 eth1:192.168.31.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.32.1/24 路由器R3eth0:192.168.33.1/24 eth1:192.168.2.3/24分组4配置信息IP:192.168.41.10 子网掩码:255.255.255.0 网关:192.168.41.1实验主机BIP:192.168.42.10 子网掩码:255.255.255.0 网关:192.168.42.1实验主机CIP:192.168.43.10 子网掩码:255.255.255.0 网关:192.168.43.1实验主机D(也是本实验中VLC服务器)不需要更改配置路由器R1eth0:192.168.1.1/24 eth1:192.168.41.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.42.1/24 路由器R3eth0:192.168.43.1/24 eth1:192.168.2.3/24分组5配置信息实验主机AIP:192.168.51.10 子网掩码:255.255.255.0 网关:192.168.51.1实验主机BIP:192.168.52.10 子网掩码:255.255.255.0 网关:192.168.52.1实验主机CIP:192.168.53.10 子网掩码:255.255.255.0 网关:192.168.53.1实验主机D(也是本实验中VLC服务器)不需要更改配置路由器R1eth0:192.168.1.1/24 eth1:192.168.51.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.52.1/24 路由器R3eth0:192.168.53.1/24 eth1:192.168.2.3/24分组6配置信息实验主机AIP:192.168.61.10 子网掩码:255.255.255.0 网关:192.168.61.1实验主机BIP:192.168.62.10 子网掩码:255.255.255.0 网关:192.168.62.1实验主机CIP:192.168.63.10 子网掩码:255.255.255.0 网关:192.168.63.1实验主机D(也是本实验中VLC服务器)不需要更改配置路由器R1eth0:192.168.1.1/24 eth1:192.168.61.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.62.1/24eth0:192.168.63.1/24 eth1:192.168.2.3/24分组7配置信息实验主机AIP:192.168.71.10 子网掩码:255.255.255.0 网关:192.168.71.1实验主机BIP:192.168.72.10 子网掩码:255.255.255.0 网关:192.168.72.1实验主机CIP:192.168.73.10 子网掩码:255.255.255.0 网关:192.168.73.1实验主机D(也是本实验中VLC服务器)不需要更改配置路由器R1eth0:192.168.1.1/24 eth1:192.168.71.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.72.1/24 路由器R3eth0:192.168.73.1/24 eth1:192.168.2.3/24分组8配置信息实验主机AIP:192.168.81.10 子网掩码:255.255.255.0 网关:192.168.81.1实验主机BIP:192.168.82.10 子网掩码:255.255.255.0 网关:192.168.82.1实验主机CIP:192.168.83.10 子网掩码:255.255.255.0 网关:192.168.83.1实验主机D(也是本实验中VLC服务器)不需要更改配置路由器R1eth0:192.168.1.1/24 eth1:192.168.81.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.82.1/24 路由器R3eth0:192.168.83.1/24 eth1:192.168.2.3/24分组9配置信息实验主机AIP:192.168.91.10 子网掩码:255.255.255.0 网关:192.168.91.1实验主机BIP:192.168.92.10 子网掩码:255.255.255.0 网关:192.168.92.1实验主机CIP:192.168.93.10 子网掩码:255.255.255.0 网关:192.168.93.1实验主机D(也是本实验中VLC服务器)不需要更改配置eth0:192.168.1.1/24 eth1:192.168.91.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.92.1/24 路由器R3eth0:192.168.93.1/24 eth1:192.168.2.3/24分组10配置信息实验主机AIP:192.168.101.10 子网掩码:255.255.255.0 网关:192.168.101.1实验主机BIP:192.168.102.10 子网掩码:255.255.255.0 网关:192.168.102.1 实验主机CIP:192.168.103.10 子网掩码:255.255.255.0 网关:192.168.103.1 实验主机D(也是本实验中VLC服务器)不需要更改配置路由器R1eth0:192.168.1.1/24 eth1:192.168.101.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.102.1/24 路由器R3eth0:192.168.103.1/24 eth1:192.168.2.3/24分组11配置信息实验主机AIP:192.168.111.10 子网掩码:255.255.255.0 网关:192.168.111.1实验主机BIP:192.168.112.10 子网掩码:255.255.255.0 网关:192.168.112.1 实验主机CIP:192.168.113.10 子网掩码:255.255.255.0 网关:192.168.113.1 实验主机D(也是本实验中VLC服务器)不需要更改配置路由器R1eth0:192.168.1.1/24 eth1:192.168.111.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.112.1/24 路由器R3eth0:192.168.113.1/24 eth1:192.168.2.3/24分组12配置信息实验主机AIP:192.168.121.10 子网掩码:255.255.255.0 网关:192.168.121.1实验主机BIP:192.168.122.10 子网掩码:255.255.255.0 网关:192.168.122.1IP:192.168.123.10 子网掩码:255.255.255.0 网关:192.168.123.1 实验主机D(也是本实验中VLC服务器)不需要更改配置路由器R1eth0:192.168.1.1/24 eth1:192.168.121.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.122.1/24 路由器R3eth0:192.168.123.1/24 eth1:192.168.2.3/24分组13配置信息实验主机AIP:192.168.131.10 子网掩码:255.255.255.0 网关:192.168.131.1实验主机BIP:192.168.132.10 子网掩码:255.255.255.0 网关:192.168.132.1 实验主机CIP:192.168.133.10 子网掩码:255.255.255.0 网关:192.168.133.1 实验主机D(也是本实验中VLC服务器)不需要更改配置路由器R1eth0:192.168.1.1/24 eth1:192.168.131.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.132.1/24 路由器R3eth0:192.168.133.1/24 eth1:192.168.2.3/24分组14配置信息实验主机AIP:192.168.141.10 子网掩码:255.255.255.0 网关:192.168.141.1实验主机BIP:192.168.142.10 子网掩码:255.255.255.0 网关:192.168.142.1 实验主机CIP:192.168.143.10 子网掩码:255.255.255.0 网关:192.168.143.1 实验主机D(也是本实验中VLC服务器)不需要更改配置路由器R1eth0:192.168.1.1/24 eth1:192.168.141.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.142.1/24 路由器R3eth0:192.168.143.1/24 eth1:192.168.2.3/24分组15配置信息IP:192.168.151.10 子网掩码:255.255.255.0 网关:192.168.151.1实验主机BIP:192.168.152.10 子网掩码:255.255.255.0 网关:192.168.152.1 实验主机CIP:192.168.153.10 子网掩码:255.255.255.0 网关:192.168.153.1 实验主机D(也是本实验中VLC服务器)不需要更改配置路由器R1eth0:192.168.1.1/24 eth1:192.168.151.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.152.1/24 路由器R3eth0:192.168.153.1/24 eth1:192.168.2.3/24分组16配置信息实验主机AIP:192.168.161.10 子网掩码:255.255.255.0 网关:192.168.161.1实验主机BIP:192.168.162.10 子网掩码:255.255.255.0 网关:192.168.162.1 实验主机CIP:192.168.163.10 子网掩码:255.255.255.0 网关:192.168.163.1 实验主机D(也是本实验中VLC服务器)不需要更改配置路由器R1eth0:192.168.1.1/24 eth1:192.168.161.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.162.1/24 路由器R3eth0:192.168.163.1/24 eth1:192.168.2.3/24分组17配置信息实验主机AIP:192.168.171.10 子网掩码:255.255.255.0 网关:192.168.171.1实验主机BIP:192.168.172.10 子网掩码:255.255.255.0 网关:192.168.172.1 实验主机CIP:192.168.173.10 子网掩码:255.255.255.0 网关:192.168.173.1 实验主机D(也是本实验中VLC服务器)不需要更改配置路由器R1eth0:192.168.1.1/24 eth1:192.168.171.1/24路由器R2eth0:192.168.1.2/24 eth1:192.168.2.2/24 eth2:192.168.172.1/24eth0:192.168.173.1/24 eth1:192.168.2.3/242实验步骤步骤1:将实验主机D以VLC进行启动运行,其中实验主机A-C均进入到Windows 2000操作系统中,并且要求实验主机A-C均安装有WinSCP和Putty工具,一般情况下,这些工具都在Windows桌面上.步骤2:实验主机D上系统启动完成之后,点击运行桌面上的“虚拟实验中心”图标,如图:然后通过访问VLC服务器来下载实验包.在实验主机上可以打开一个IE浏览器,在地址栏中输入http://172.16.32.250,在该页面当中点击进入到“VLC实验课件下载”目录下,然后点击目录“18”,进入到该目录,再各自下载所需的实验包,以第一小组为例来说,则需要下载文件PA-18-1.mar,点击该文件就可以下载到本地计算机上.在打开的“虚拟实验中心”界面中,点击“实验项目->打开(O)”来打开刚刚所下载的实验包,如PA-18-1.mar.最后点击界面下方的“运行”按钮图标来启动VLC中的所有实验设备.步骤3:在此过程中,其余的实验主机A-C则可以按照每个分组的配置信息来配置其IP 地址等信息(每个小组请按照所在分组进行正确的IP地址等配置).步骤4:当VLC中设备全部启动完成之后,在实验主机A-C的命令提示符中ping各自所连接的路由器,例如在实验主机A中ping路由器的R1的eth1端口地址,即192.168.11.1.如不能ping通则检查自己实验主机的配置信息.此时在实验主机D(即VLC)中,需要使用用户名vyatta和密码vyatta进行登陆各个路由器,然后在路由器中输入如下命令确保能够顺利完成步骤6,如图路由器R1:登陆之后需要输入以下命令进行配置(黑体字部分是需要输入的命令):vyatta@R1:~$ configure[edit]vyatta@R1# set service ssh allow-root true[edit]vyatta@R1# commitRestrating OpenBSD Secure Shell serverLsshd.[edit]vyatta@R1#同样在路由器R2和R3上也必须进行如上操作.步骤5:继续ping路由器R1的其他端口地址和其他路由器的端口地址,而且在实验主机A中也能够尝试是否能够ping通其他的实验主机.步骤6:实验主机A-C分别使用Putty登录到相应的路由器当中,例如在实验主机A中登录到路由器R1.具体步骤如下:打开Putty,在Host Name(or IP address)栏中输入路由器R1的端口地址,如图:然后点击“Open”按钮进行登陆.在其登陆过程中,可能会出现一个要进行密钥更新的窗口,点击“是”即可.最后输入路由器R1的用户名(root)和密码(vyatta)进行登陆就可以进入到路由器当中了.同样的,在实验主机B和C中,分别使用Putty登陆到所对应的路由器当中去.步骤7:在路由器R1中,使用tcpdump命令来捕捉路由器上的RIP报文,并且使用指定的文件保存下来,使用RIP-RX-Y.pcap进行命名(其中RX表示为所对应的路由器,如R1或R2;Y 表示的你所在的实验小组,如1小组,).如图所示:由于这样所捕捉的报文是保存在一个当中,而不会在当前窗口中进行显示,并且RIP路由更新的时间为30秒,因此确保你使用该命令捕捉报文的的时间要在30秒以上,建议捕捉报文时间为1分钟.使用CTRL+C快捷键进行停止捕获报文.捕捉报文命令tcpdump –w RIP-R1-1.pcap –s 0 –i eth0解释:-w:将捕捉报文写入所指定的文件当中,其RIP-R1-1.pcap就是所指定的文件名-s 0:tcpdump默认抓包大小限制为96byte.设置为0则忽略包大小的限制,按照包的长度实际进行抓取.-i:指定捕捉报文的接口名称需要注意的是,捕捉报文时必须指定端口,不然会默认的使用eth0端口.而且在本实验当中,实验主机A在路由器R1上捕捉报文时必须使用eth0端口,实验主机B在路由器R2上捕捉报文时必须使用eth1端口,实验主机C在路由器R3上捕捉报文时必须使用eth0端口.步骤8:在其他实验主机上按照步骤6和7进行报文捕捉.但是必须登陆到所对应的路由器当中.登陆之后使用tcpdump命令进行报文捕捉,其中:在实验主机B中使用命令tcpdump –w RIP-R2-1.pcap –s 0 –i eth1在实验主机C中使用命令tcpdump –w RIP-R3-1.pcap –s 0 –i eth0步骤9:在各个实验主机中使用WinSCP工具从所对应的路由器当中将捕捉的报文文件复制到本地实验主机上.以实验主机A为例,打开WinSCP,输入路由器的IP地址,用户名以及密码就可以进行登陆了.随后就可以点击“登陆”按钮进行登陆了.然后就将我们所需要的RIP-R1-1.pcap文件复制到本地实验主机A上就可以了.同样在实验主机B和C中将对应路由器上所捕捉的报文文件复制到本地实验主机上.并对这些文件按19-学号.pcap进行命名。
《网络协议分析》实验指导书

《网络协议分析》实验指导书verO.01计算机与信息工程系shhkun2014年9月、八前《网络协议分析》课程是针对计算机及网络工程专业的本科生而设置的一门课程,它具有很强的理论性和实践性。
本实验指导书是专门为《网络协议分析》理论课程配套的、指导学生完成相关实验及操作而编写的。
本实验指导书按照TCP/IP的层次结构对网络互连中的主要协议进行分析,由下而上的设计了 9个实验,涉及ARP协议分析、IP协议分析、ICMP协议分析、UDP协议分析、TCP协议分析、DHCP协议分析、DNS协议分析、HTTP协议分析、SMTP协议与POP3协议分析。
在实验内容之前对实验采用的Wireshark软件进行了介绍。
希望学生们通过以上实验进一步加深对网络协议的理解和掌握协议分析的方法。
特别说明:1、本指导书中给出的实验网络物理模型,不需要学生动手搭建,所有网络物理模型都基于现有的实验室运行环境。
2、本指导书中实验内容的开展与实验室使用的交换机和路由器的品牌无关,实验指导书中指出实验品牌等,只是为了举例方便。
3、实验中设备的ip地址以实际实验机器的ip地址为准,不同学生的IP地址应该不同。
目录1.网络协议分析实验环境要求 (4)2.网络协议分析器Wireshark (5)2.1Wireshark 主窗口简介 (5)2.2Wireshark 菜单栏简介 (6)2.3Wireshark 的工具栏 (7)2.4Wireshark 的网络数据抓包过程 (8)2.5由Wireshark协议窗口分析协议的格式 (10)3.网络层协议分析 (11)实验一ARP协议分析 (12)实验二IP 协议分析 (15)实验三ICMP协议分析 (19)4.传输层协议分析 (27)实验四UDP协议分析 (28)实验五TCP协议分析 (31)5.应用层协议分析 (34)实验六DHCP协议分析 (34)实验七DNS协议分析 (37)实验八HTTP协议分析 (39)实验九SMTP及POP3协议分析 (42)(1) 本指导书按照 TCP/IP 的层次结构对网络互连中的主要协议进行分析。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验八协议分析器程序的设计和实现1.实验目的:(1)掌握对网络上传输数据包的捕获方法。
(2)解析Ethernet网数据帧头部的全部信息。
(3)解析IP、ICMP数据包(4) 解析传输层和应用层相关协议的头部信息(5)设置过滤规则,能过滤相应协议的数据包。
(6)要求有良好的编程规范与注释信息,要求有详细的说明文档,包括程序的设计思想、活动图、关键问题以及解决方法。
2实验环境:(1)VC6.0(2)局域网能连接Internet。
3.程序设计的关键问题以及解决方法有哪些?当应用程序通过IP网络传送数据时,数据被送入TCP/IP协议栈中,然后从上至下逐一通过每一层,直到最后被当作一串比特流送入网络。
其中每一层对收到的数据都要增加一些首部信息,这个过程被称作封装。
通过以太网传输的比特流称作帧。
在传输的另一端,当目的主机收到一个以太网数据帧时,数据就开始从协议栈由底向上逐层解析,去掉各层协议所加上的报文头部。
每层协议均要检查报文头部中的协议标识字段,以确定要接收数据的上层协议,最终从报文中解析出应用层数据后交给应用程序处理。
本次要编写的协议分析器,就是从网络中捕获数据包并对其进行解析的过程。
因此,我们需要了解每层协议所规定的报文格式,然后由底向上逐层对数据包进行解码,最后将分析的结果显示出来。
4.描述程序设计过程,并画出程序活动图。
协议分析器总体结构:协议分析器的整体结构按功能应分为三个部分,自底向上分别是数据捕获模块、协议解析模块和用户显示模块。
数据包捕获流程:捕获数据包的算法一般分为以下几步:(1)获取并列出当前网络设备列表。
(2)由用户选择并打开指定网卡。
(3)根据过滤规则设置过滤器。
捕获数据包并进行解析处理:协议解析模块:对捕获的数据包按照数据链路层(MAC)、网络层(IP、ARP/RARP)、传输层(TCP、UDP、ICMP)和应用层(HTTP等)的层次结构自底向上进行解析,最后将解析结果显示输出。
1)解析Ethernet帧2)解析ARP数据包3)解析IP数据包4)解析ICMP,TCP和UDP数据包5.给出关键代码,并附注释。
1)解析Ethernet帧typedef struct{BYTE DesMacAddr[6]; //目的地址BYTE SrcMacAddr[6]; //源地址WORD LengthOrType; //数据长度或类型} MAC_HEADER;//MAC帧类型定义const u_short MAC_TYPE_IP = 0x0800; const u_short MAC_TYPE_ARP = 0x0806; const u_short MAC_TYPE_RARP = 0x8035;MAC_HEADER* pMacHdr = (MAC_HEADER*) pPkt;// Mac目的地址strItem.Format("Destination address: %02X:%02X:%02X:%02X:%02X:%02X",pMacHdr->DesMacAddr[0],pMacHdr->DesMacAddr[1],pMacHdr->DesMacAddr[2],pMacHdr->DesMacAddr[3],pMacHdr->DesMacAddr[4],pMacHdr->DesMacAddr[5]);// Mac源地址strItem.Format("Source address: %02X:%02X:%02X:%02X:%02X:%02X",pMacHdr->SrcMacAddr[0],pMacHdr->SrcMacAddr[1],pMacHdr->SrcMacAddr[2],pMacHdr->SrcMacAddr[3],pMacHdr->SrcMacAddr[4],pMacHdr->SrcMacAddr[5]);//类型/长度字段if (ntohs(pMacHdr->LengthOrType) > 1500)//类型字段(Ethernet V2.0){//根据类型字段调用相应的上层协议处理函数if (ntohs(pMacHdr->LengthOrType) == MAC_TYPE_IP) //IP协议{strItem = "IP";ParseIPPacket((BYTE*)pMacHdr+sizeof(MAC_HEADER),iLen-sizeof(MAC_HEADER));}else if (ntohs(pMacHdr->LengthOrType) == MAC_TYPE_ARP) //ARP协议{strItem = "ARP";ParseARPPacket((BYTE*)pMacHdr+sizeof(MAC_HEADER),iLen-sizeof(MAC_HEADER));}else if (ntohs(pMacHdr->LengthOrType) == MAC_TYPE_RARP) //RARP协议{strItem = "RARP";ParseRARPPacket((BYTE*)pMacHdr+sizeof(MAC_HEADER),iLen-sizeof(MAC_HEADER));}else //其他strItem = "UNKNOWN";}else //长度字段(IEEE802格式){strItem.Format("Length: %d bytes", ntohs(pMacHdr->LengthOrType));……/*解析IEEE802数据帧,省略*/}2)解析ARP数据包//ARP头部结构typedef struct{u_short hardware_type; //16位硬件类型u_short proto_type; //16位协议类型u_char hardware_addr_len; //8位硬件地址长度u_char proto_addr_len; //8位协议地址长度u_short operation_code; //16位操作码u_char src_mac_addr[6]; //源Ethernet网地址u_char scr_ip_addr[4]; //源IP地址u_char dest_mac_addr[6]; //目的Ethernet网地址u_char dest_ip_addr[4]; //目的IP地址} ARP_HEADER;//ARP报文操作码类型,1为请求,2位应答const u_short ARP_OP_REQUEST = 1; //ARP请求const u_short ARP_OP_REPL Y = 2; //ARP应答ARP_HEADER* pARPHdr = (ARP_HEADER*)pPkt;ntohs(pARPHdr->hardware_type); //硬件类型ntohs(pARPHdr->proto_type); //上层协议类型pARPHdr->hardware_addr_len; //硬件地址长度pARPHdr->proto_addr_len; //协议地址长度//操作类型if (ntohs(pARPHdr->operation_code) == ARP_OP_REQUEST)strItem = " (Request)";else if (ntohs(pARPHdr->operation_code) == ARP_OP_REPL Y)strItem = " (Reply)";//源Mac地址strItem.Format("Sender's hardware address: %02X:%02X:%02X:%02X:%02X:%02X",pARPHdr->src_mac_addr[0],pARPHdr->src_mac_addr[1],pARPHdr->src_mac_addr[2],pARPHdr->src_mac_addr[3],pARPHdr->src_mac_addr[4],pARPHdr->src_mac_addr[5]);//源IP地址in_addr ipAddr;memcpy(&ipAddr, pARPHdr->scr_ip_addr, sizeof(in_addr));inet_ntoa(ipAddr); //转化为点分十进制字符串//目的Mac地址strItem.Format("Target's hardware address: %02X:%02X:%02X:%02X:%02X:%02X",pARPHdr->dest_mac_addr[0],pARPHdr->dest_mac_addr[1],pARPHdr->dest_mac_addr[2],pARPHdr->dest_mac_addr[3],pARPHdr->dest_mac_addr[4],pARPHdr->dest_mac_addr[5]);//目的IP地址memcpy(&ipAddr, pARPHdr->dest_ip_addr, sizeof(in_addr));inet_ntoa(ipAddr); //转化为点分十进制字符串//填充字段长度strItem.Format("Frame padding: %d bytes", iLen-sizeof(ARP_HEADER));3)解析IP数据包//IP头部结构typedef struct{unsigned char hdr_len :4; //4位头部长度unsigned char version :4; //4位版本号unsigned char tos; //8位服务类型unsigned short total_len; //16位总长度unsigned short identifier; //16位标识符unsigned short frag_and_flags; //3位标志+13位片偏移unsigned char ttl; //8位生存时间unsigned char protocol; //8位上层协议号unsigned short checksum; //16位校验和unsigned long source_ip; //32位源IP地址unsigned long dest_ip; //32位目的IP地址} IP_HEADER;IP_HEADER* pIPHdr = (IP_HEADER*)pPkt;……/*解析IP头部各字段并显示输出*///根据不同上层协议调用相应解析函数switch (pIPHdr->protocol){case IPPROTO_TCP:strItem = "TCP";ParseTCPPacket((BYTE*)pIPHdr+iIPHdrLen, iLen-iIPHdrLen);break;case IPPROTO_UDP:strItem = "UDP";ParseUDPPacket((BYTE*)pIPHdr+iIPHdrLen, iLen-iIPHdrLen);break;case IPPROTO_ICMP:strItem = "ICMP";ParseICMPPacket((BYTE*)pIPHdr+iIPHdrLen, iLen-iIPHdrLen);break;default:strItem = "OTHERS";}4)解析ICMP,TCP和UDP数据包//ICMP基本头部typedef struct{BYTE type; //8位类型BYTE code; //8位代码USHORT c ksum; //16位校验和} ICMP_BASE_HEADER;//----------------------------------------------------//ICMP回显头部(回显请求、回显应答)typedef struct{ICMP_BASE_HEADER base_hdr; //基本头部USHORT i d; //16位标识符USHORT s eq; //16位序列号} ICMP_ECHO_HEADER;//----------------------------------------------------//ICMP差错报文头部(超时及目的不可达)typedef struct{ICMP_BASE_HEADER base_hdr; //基本头部ULONG unused; //32位未用,必须为0} ICMP_ERROR_HEADER;pICMPHdr->type; //类型pICMPHdr->code; //代码ntohs(pICMPHdr->cksum); //校验和//根据不同类型解析后续字段switch (pICMPHdr->type){case ICMP_ECHO_REQUEST: //回显请求报文case ICMP_ECHO_REPL Y: //回显应答报文{ICMP_ECHO_HEADER* pICMPEchoHdr = (ICMP_ECHO_HEADER*)pPkt;ntohs(pICMPEchoHdr->id); //标识符ntohs(pICMPEchoHdr->seq); //序列号if (iLen > sizeof(ICMP_ECHO_HEADER)) //选项数据{for (int i=0; i<iLen-sizeof(ICMP_ECHO_HEADER); i++)……/*打印选项数据*/}break;}case ICMP_TIMEOUT: //超时差错报文case ICMP_HOST_UNREACHABLE: //目的不可达差错报文{ICMP_ERROR_HEADER* pICMPErrHdr = (ICMP_ERROR_HEADER*)pPkt;ntohl(pICMPErrHdr->unused); //保留字段//解析产生差错的数据报IP首部(含选项字段)及其载荷的前8个字节ParseIPPacket((BYTE*)pICMPErrHdr+sizeof(ICMP_ERROR_HEADER),iLen-sizeof(ICMP_ERROR_HEADER));break;}5)解析HTTP数据包/*HTTP消息的拷贝存放在pHttpPkt指向的缓冲区中首先在HTTP消息中查找代表消息头结束的空行*/char* pStopPos = strstr(pHttpPkt, "\r\n\r\n"); //结束指针指向最后的空行if (pStopPos != NULL) //存在空行{char* pBegPos = pHttpPkt; //每行的首指针char* pCurPos = pHttpPkt; //每行的尾指针int iLine = 1;while (pCurPos < pStopPos){//查找消息头中每行的结束符pCurPos = strstr(pBegPos, "\r\n");if (pCurPos != NULL)*pCurPos = '\0'; //将该行变为以NULL结尾的字符串/*如果第一行含有版本字段前缀“HTTP/”则认为是一个正确的HTTP头*/if (iLine++ == 1){if (strstr(pBegPos, "HTTP/") == NULL)break;}strItem.Format(“%s”, pBegPos); //输出该行信息pCurPos += 2; //跳过回车换行符指向下一行开始pBegPos = pCurPos;}}。