网 络 协 议 分 析
——计算机+自动化0902班 易珊珊 学号:200926100427
1 实验目的
? 掌握如何利用协议分析工具分析IP数据报报文格式,体会数据报发送,转发的过程。
? 通过分析截获TCP报文首部信息,理解首部中的序号,确认号等字段是TCP可靠连接的基础.通过分析TCP连接的三次握手建立和释放过程,理解TCP连接建立和释放机制。
2 实验内容
? (1)IP协议分析
? IP协议分析
(图一)IP数据报的格式
(图二)捕获的IP数据报
version:4,版本,占四位。
Header length:20 bytes,IP数据报首部为20字节,等于固定部分长度,说明没有可选字段。
Differentiated services field: ox00,所有服务类型都为0,说明这是一种缺省情况,IP数据报的发送者没有规定IP数据报的服务类型。
Total length:52,IP数据报总长度为52字节。
Identification:oxa47b,标识,占16位。
Flags: 标志,占3位。DF=1,MF=0, Fragment offset:0,说明该数据报没有分片。
Time to live:128,生存时间是128,每过一个路由器它就减1。
Protocol:TCP(ox06)此IP 数据报携带的数据使用TCP协议,协议字段值为6。
Header checksum:oxdf8a,首部校验和,占16位。
Source:192.168.2.10 源地址,占32位。
Destination:202.102.233.164 目的地址,占32位。
? (2)TCP协议分析:
(图三)TCP报文段的首部格式
(图四)捕获的TCP数据报
Source port:2112,源端口。
Destination port:http(80),目的端口。
Sequence number:0 ,是当前数据的序列号。
Header length:32bytes,TCP首部长度32字节,说明20字节的固定首部之后,有12个字节的选项部分。
Flags:ox0002(SYN),SYN=1, ACK=0,说明这是一个连接请求报文。
Windows size:262140,窗口值说明接收方目前允许对方发送的数据量为262140个字节。
Checksum:ox5d15,整个TCP数据报的校验信息,包括首部和数据这两部分的校验。
Options:12bytes,选项,有12字节,最长可达40字节。
? 重点分析:三次握手建立TCP连接。
(图五)三次握手建立TCP连接
?
(图六)三次握手
如图五所示:NO:54,61,62这三行就是三次握手建立TCP连接过程。
第一次, NO.54行,由原端口【192.168.2.10】向目的端口【202.102.233.164】发送连接请求报文段,【SYN=1】,seq=0。
第二次, NO.61行,【202.102.233.164】收到连接请求报文段后,同意连接,向【192.168.2.10】发送确认,【SYN=1,ACK=1】,seq=0,ack=1。
第三次, NO.62行,【192.168.2.10】收到确认后,还要向【202.102.233.164】给出确认。【ACK=1】,seq=1,ack=1。
此时,TCP连接已经建立。
? Ping程序:
如下图:例如Ping www.zjut.edu.cn 这个网址,并捕获 ping 程序过程中相关的数据包。
(图七)用ping测试主机的连通性
由图三可以知道:主机一连向www.zjut.edu.cn发出四个ICMP回送回答报文。【www.zjut.edu.cn】的IP地址为:172.16.7.16。往返时间都小于1ms,生存时间为123。主机一共发送了四个测试分组,四个都收到了。没有丢失的。
(图八)捕获的 ping 程序过程中相关的数据报
可以看到,有四个从IP源地址为:172.16.7.16(即www.zjut.edu.cn)向IP目的地址为:192.168.2.10(即主机)发送的ICMP报文。这四个报文就是ping程序过程中的相关数据报。
第二篇:09嵌入式网络协议及其应用开发课程设计报告1
课程设计说明书
2011-2012学年第 2 学期
目 录
1. 课程设计内容.........................................................................................................3 2. 课程设计目的.........................................................................................................3 3. 背景知识.................................................................................................................3 4. 工具/准备工作 .......................................................................................................3 5. 设计步骤与方法.....................................................................................................3
5.1.
5.1.1.
5.2. 步骤 1:设计直流电机控制界面 ..................................................................... 3 步骤1.1: 添加控件事件代码......................................................................... 4 步骤2:编译程序 .............................................................................................. 5
步骤2.1:redhat主机下编译程序................................................................. 5
步骤2.2:在ARM板下测试直流电机界面–嵌入式下运行 ............................ 6 5.2.1. 5.2.2.
6. 软件测试截图.........................................................................................................7 7. 设计结果及分析.....................................................................................................7 8. 设计结论.................................................................................................................7 9. 问题及心得体会.....................................................................................................7 10. 对本设计过程及方法、手段的改进建议 ............................................................8 11. 任务分配.................................................................................................................8 12. 参考文献 【1】C++ GUI Qt4编程(第2版) 兰切特 (Jasmin Blanchette)、萨默菲尔德 (Mark Summerfield)、闫锋欣、曾泉人 子
工业出版社 2008 ......................................................................................................8 13. 课程设计评价(教师) ..............................................................................................8
课程设计报告
1. 课程设计内容
本课程设计的内容是设计一个基于QT的直流电机设计,支持电机正反转以及设置参数以控制转速。
2. 课程设计目的
考察自己对课程的掌握程度,以及自己实际的动手能力,编程能力。
3. 背景知识
1. 嵌入式linux下驱动程序的基本编译方法
2. 掌握直流电机控制基本原理
3. QT软件的应用
4. 工具/准备工作
硬件:
安装有QT的PC机一台
软件:
WindowsXP操作系统 VMware Workstation 7.0 Red Hat QT 4.6.3
5. 设计步骤与方法
5.1. 步骤 1:设计直流电机控制界面
利用QT Creator,ui文件来编写一个良好的用户交互界面:
图5.1电机控制界面
5.1.1. 步骤1.1: 添加控件事件代码
使用信号-槽机制在函数添加操作
功能实现:
1、手动启动、停止直流电机
2、显示电机的转速,以及转动的方向,如向左还是向右,顺时针还是逆时针
3、通过设置参数,动态改变电机的转动速度
具体实现代码如下
char *DCM_DEV="/dev/dcm/0raw";
void motor()
{ if((dcm_fd=open(DCM_DEV, O_WRONLY))<0)
{ printf("Error opening %s device\n", DCM_DEV);
}
ioctl(dcm_fd, DCM_IOCTRL_SETPWM, (512 * factor));
}
void MainWindow::on_pushButton_clicked()
{ motor();//电机开始转动
}
void MainWindow::on_pushButton_2_clicked()
{ ioctl(dcm_fd, DCM_IOCTRL_SETPWM, 0);//电机停止转动
}
void MainWindow::on_pushButton_4_clicked()
{ factor = DCM_TCNTB0/1024;//电机逆时针转动
ioctl(dcm_fd, DCM_IOCTRL_SETPWM, (setpwm * factor));
ui->lineEdit_2->setText("Left");;
}
void MainWindow::on_pushButton_5_clicked()
{ factor = DCM_TCNTB0/1024*(-1);//电机顺时针转动
ioctl(dcm_fd, DCM_IOCTRL_SETPWM, (setpwm * factor));
ui->lineEdit_2->setText("Right");
}
void MainWindow::on_pushButton_3_clicked()
{ char str[30];
setpwm=setpwm*(1-0.05);//电机减速
if(setpwm<=0) setpwm=0;
ioctl(dcm_fd, DCM_IOCTRL_SETPWM, (setpwm * factor));
sprintf(str,"%d",setpwm);
ui->lineEdit_3->setText(str);
}
void MainWindow::on_pushButton_6_clicked()
{ char str[30];
setpwm=setpwm*(1+0.05);//电机加速
if(setpwm>=512) setpwm=512;
ioctl(dcm_fd, DCM_IOCTRL_SETPWM, (setpwm * factor));
sprintf(str,"%d",setpwm);
ui->lineEdit_3->setText(str);
}
5.2. 步骤2:编译程序
5.2.1. 步骤2.1:redhat主机下编译程序
1. 把QT设置好源程序代码拷贝到redhat主机指定的目录下:
/home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0/examples目录
2. 使用qmake产生Makefile:
#/home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4
.0 /bin/qmake
#make
3. 拷贝编译好的QT/E程序到NFS共享目录下
#cp 目标程序名 /arm2410cl/Trolltech/qt-embedded-4.4.0/
5.2.2. 步骤2.2:在ARM板下测试直流电机界面–嵌入式下
运行
1. 使用串口连接ARM实验箱与PC机
2. ARM 端挂载NFS 共享目录,在串口下输入
#mount -o nolock,rsize=4096,wsize=4096 192.168.1.111:/arm2410cl /mnt/nfs,其中具体LINUX 主机IP 需要具体设置。
3. 设置环境变量 (ARM端)
#cd /mnt/nfs/Trolltech/qt-embedded-4.4.0
#export QTDIR=$PWD #export LD_LIBRARY_PATH=$PWD/lib #export TSLIB_TSDEVICE=/dev/input/event0 #export TSLIB_PLUGINDIR=$PWD/lib/ts #export TSLIB_CONSOLEDEVICE=none #export TSLIB_CONFFILE=$PWD/etc/ts.conf #export POINTERCAL_FILE=$PWD/etc/ts-calib.conf #export QWS_MOUSE_PROTO=tslib:/dev/input/event0 #export TSLIB_CALIBFILE=$PWD/etc/ts-calib.conf #export LANG=zh_CN #insmod /mnt/yaffs/touchscreen/ts-uptech.o
4. 执行触摸屏校准程序(在qt-embedded-4.4.0下)
5. 在ARM下,执行命令
6. ./motor-control –qws
6. 软件测试截图
图6.1成功运行界面显示
7. 设计结果及分析
本程序成功的实现了直流电机基本操作,手动启动、停止直流电机、显示电机的转速,以及转动的方向,如向左还是向右,顺时针还是逆时针、通过设置参数,动态改变电机的转动速度。不过虽然实现了上述功能,但该软件仍然还存在改进的地方。
8. 设计结论
经过在windowsXP以及Red Hat上的调试,实现了电机旋转等功能。
9. 问题及心得体会
10. 对本设计过程及方法、手段的改进建议
添加虚拟键盘设置转速
11. 任务分配
·组长:
·系统分析员:
·程序员:
·测试员:
·文档员:
12. 参考文献
【1】C++ GUI Qt4编程(第2版) 兰切特 (Jasmin Blanchette)、萨默菲尔德 (Mark Summerfield)、闫锋欣、曾泉人 子工业出版社 2008
13. 课程设计评价(教师)
是( ) 否( )基本正确 ( ) 1.符合设计内容,达到设计目的,设计步骤与方法正确,设计结果正确。
2.设计报告格式符合规范,所附图表清晰。 是( ) 否( )基本符合 ( )
3.源代码书写正确,按时完成设计报告。 是( ) 否( )基本正确 ( )