计算机网络协议分析实验指导书V06Word文件下载.docx
《计算机网络协议分析实验指导书V06Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机网络协议分析实验指导书V06Word文件下载.docx(27页珍藏版)》请在冰点文库上搜索。
显示当前ARP表,如果指定了inet_addr则只显示指定计算机的IP和物理地址;
inet_addr:
以点分十进制标记指定IP地址;
-N:
显示由if_addr指定的ARP表项;
if_addr:
指定需要选择或修改其地址映射表接口的IP地址;
ether_addr:
指定物理地址;
1.A.3、实验步骤
1)、ICMP协议分析
步骤1:
分别在PC1和PC2上运行Wireshark,开始截获报文,为了只截获和实验内容有关的报文,将Wireshark的CaptrueFilter设置为“NoBroadcastandnoMulticast”;
步骤2:
在PC1以PC2为目标主机,在命令行窗口执行Ping命令;
请写出执行的命令:
[ping192.168.3.183]
步骤3:
停止截获报文,将截获的结果保存为“ICMP-1-学号”,分析截获的结果,回答下列问题:
1)您截获几个ICMP报文?
分别属于那种类型?
答:
66个33个请求报文33个回复报文
2)分析截获的ICMP报文,查看表1.A.1中要求的字段值,填入表中。
表1.A.1ICMP报文分析
报文号
源IP
目的IP
报文格式
类型
代码
标识
序列号
16
192.168.3.183
192.168.3.3
reply
0x0001
8
17
request
9
08
4
09
5
61
31
62
【x为学号后两位】
实验捕获的报文数据截图:
报文16
报文17
报文x
报文x+1
分析在上表中哪个字段保证了回送请求报文和回送应答报文的一一对应,仔细体会Ping命令的作用。
如何保证请求报文和应答报文时一一对应的?
序号保证了请求报文和回复报文的一一对应。
Ping可以检验网络能否想通。
步骤4:
在PC1上运行Wireshark开始截获报文;
步骤5:
在PC1上执行Tracert命令,向一个本网络中不存在的主机发送数据报,如:
Tracert;
步骤6:
停止截获报文,将截获的结果保存为“ICMP-2-学号”,分析截获的报文,回答下列问题:
截获了报文中哪几种ICMP报文?
其类型码和代码各为多少?
两种请求报文和回复报文。
目标主机不可达Type:
3(Destinationunreachable)Code:
1(Hostunreachable)
在截获的报文中,超时报告报文的源地址是多少?
这个源地址指定设备和PC1有何关系?
192.168.3.3这个地址是PC1的网关地址。
通过对两次截获的ICMP报文进行综合分析,仔细体会ICMP协议在网络中的作用。
ICMP报文有两种:
差错报告报文和询问报文。
其中差错报告报文用来报告差错类型,询问报文用与寻找目标主机应用有ping、tracert,时间戳可以用来计算RTT时间。
2)、IP协议分析
截获PC1上pingPC2的报文,结果保存为“IP-学号”;
取序号为学号的数据报,分析IP协议的报文格式,完成下列各题:
-
1)分析IP数据报头的格式,完成表5.2;
表5.2IP协议
字段
报文信息
说明
版本
IPV4
头长
20bytes
服务类型
回复报文
总长度
60
标志
0x00
片偏移
生存周期
64
协议
Icmp
校验和
0x7e97
源地址
目的地址
实验捕获的报文数据截图(突出显示分析的报文):
1)查看该数据报的源IP地址和目的IP地址,他们分别是哪类地址?
体会IP地址的编址方法。
均为C类地址。
1--126为A类地址,128-191为B类地址,192---223为C类地址。
3)、IP数据报分片实验
在PC1、PC2两台计算机上运行Wireshark,为了只截获和实验有关的数据报,设置Wireshark的截获条件为对方主机的IP地址,开始截获报文;
在PC1上执行如下Ping命令,向主机PC2发送4500B的数据报文:
Ping–l4500–n6PC2的IP地址
停止截获报文,分析截获的报文,回答下列问题:
1)以太网的MTU是多少?
1500,以太网中规定MTU为1500B
2)对截获的报文分析,将属于同一ICMP请求报文的分片找出来,主机PC1向主机PC2发送的ICMP请求报文分成了几个分片?
4个
3)若要让主机PC1向主机PC2发送的数据分为3个分片,则Ping命令中的报文长度应为多大?
为什么?
1480*3=4440B,因为MTU为1500,要使报文最长,则其首部应最小即20字节,故报文长度最长为1480*3=4440
4)将第二个ICMP请求报文的分片信息填入表5.3:
表5.3ICMP请求报文分片信息
分片序号
标识(Identification)
标志(Flag)
片偏移(Fragment
数据长度
0x67bb
0-1479
6
1480
1480-2959
7
2960
4440-4507
在PC1、PC2两台计算机上执行如下命令,清除ARP缓存:
ARP-d
在PC1、PC2两台计算机上执行如下命令,查看高速缓存中的ARP地址映射表的内容:
ARP-a
在PC1和PC2上运行Wireshark截获报文,为了截获和实验内容有关的报文,Wireshark的CaptrueFilter设置为默认方式;
在主机PC1上执行Ping命令向PC2发送数据报;
执行完毕,保存截获的报文并命名为“ARP-1-学号”;
在PC1、PC2两台计算机上再次执行ARP–a命令,查看高速缓存中的ARP地址映射表的内容:
1)这次看到的内容和步骤2的内容相同吗?
结合两次看到的结果,理解ARP高速缓存的作用。
内容结果不相同。
ARP高速缓存是动态的,每当发送一个指定地点的数据报且高速缓存中不存在当前项目时,ARP便会自动添加该项目。
计算机进行路由选择时首先在ARP高速缓存中查找,如果没有找到,再通过广播请求消息来查找。
把这次看到到的高速缓存中的ARP地址映射表写出来或给出截图。
接口IP地址
IP地址InternetAddress
物理地址PhysicalAddress
类型Type
备注
192.168.3.1
00-19-e0-b8-50-f0
动态
228.227.85.113
01-00-5e-63-55-71
静态
231.192.88.42
01-00-5e-40-58-2a
步骤7:
重复步骤4—5,将此结果保存为“ARP-2-学号”;
步骤8:
打开arp-1-学号,完成以下各题:
1))在截获的报文中由几个ARP报文?
在以太帧中,ARP协议类型的代码值是什么?
4个,在以太帧中,ARP协议类型的代码值是IP(0x0800)
a)分析arp-1中ARP报文的结构,完成表5.4。
表5.4ARP报文分析
ARP请求报文
ARP应答报文
报文信息及参数
硬件类型
Ethernet
(1)
协议类型
IP(0x0800)
硬件地址长度
协议地址长度
操作
Request
(1)
Reply
(2)
源站物理地址
(10:
78:
d2:
9d:
9b:
dc)
d2:
98:
7b:
42)
源站IP地址
目的站物理地址
目的站IP地址
1.B编程构造IP数据包部分
使用C语言构造IP数据包程序。
1)IPv4基本定长首部结构体定义
structiphdr{
ipverlen;
u_charip_tos;
u_shortip_len;
shortip_id;
shortip_fragoff;
u_charip_ttl;
u_charip_prpto;
shortip_cksum;
IPadderip_src;
IPaddrip_dst;
U_charip_data[1];
}
34};
2)构造IP报文
unsignedchar*Build_IP_Packet(unsignedintd_ip,unsignedints_ip,
unsignedcharproto_type,constunsignedchar*buf,intlen,
unsignedchar*ippacket,int*iplen)
{{*iplen=sizeof(structiphdr)+len;
Unsignedchar*dbuf=ippacket+sizeof(strctiphdr);
Strctiphdr*iph=(strctpihdr*)ippacket;
Memcpy(dbuf,buf,len);
Iph->
version=4;
ih1=5;
tos=0;
toto_len=htons(*iplen);
id=htons(0x65d2);
frag_off=htons(0);
tt1=64;
daddr=d_ip;
saddr=s_ip;
protocol=proto_type;
check=0;
check=checksum(unsignedshort*)ippacketsizeof(strctiphdr);
returnippacket;
3)IP校验和计算
//TCPIP协议中的校验和计算
unsignedshortchecksum(unsignedshort*ptr,intnbytes)
{unsignedlongcksum=0;
while(nbytes>
1){
cksum+=*ptr++;
nbytes-=sizeof(USHORT);
}
if(nbytes){
cksum+=*(UCHAR*)ptr;
}//将32位数转换成16
while(cksum>
>
16)
cksum=(cksum>
16)+(cksum&
0xffff);
return(USHORT)(*cksum);
2.传输层协议分析
2.A数据包捕获分析部分
2.1实验目的
理解TCP报文首部格式和字段的作用,TCP连接的建立和释放过程,TCP数据传输中编号与确认的作用。
2.2实验内容
应用TCP应用程序传输文件,截取TCP报文,分析TCP报文首部信息,TCP连接的建立过程,TCP数据的编号和确认机制。
2.3实验原理
TCP协议是传输控制协议的简称,工作在网络层协议之上,是面向连接的,可靠的,端到端的传输层协议。
1)TCP的报文格式
TCP报文段分为头部和数据两部分,如图1:
图1TCP报文段的总体结构
TCP首部
TCP数据部分
TCP报文段首部又分为固定部分和选项部分,固定部分为20B,如图2所示,这些字段的组合实现了TCP的所有功能。
图2TCP报文段的首部
01531
源端口
目的端口
序号
确认号
头部
长度(4bit)
保留
U
R
G
A
C
K
P
S
H
T
Y
N
F
I
窗口
紧急指针
选项(长度可变)
填充
TCP采用传输输连接的方式传送TCP报文,传输连接包括连接建立、数据传输和连接释放三个阶段。
2)TCP连接的建立
TCP连接建立采用“3次握手”方式。
首先,主机A的TCP向主机B的TCP发出连接请求报文段,其首部中的同步位SYN应置1,同时选择一个序号X,表明在后面传送数据时的第一个数据字节的序号是X+1,如图3所示:
图3TCP连接建立的3次握手过程
然后,主机B的TCP收到连接请求报文段后,若同意,则发回确认。
在确认报文段中应将SYN和ACK都置1,确认号应为X+1,同时也为自己选择一个序号Y。
最后,主机A的TCP收到B的确认后,要向B发回确认,其ACK置1,确认号为Y+1,而自己的序号为X+1。
TCP的标准规定,SYN置1的报文段都要消耗掉一个序号。
同时,运行客户进程的主机A的TCP通知上层应用进程,连接已经建立。
当主机A向B发送第一个数据报文段时,其序号仍为X+1,因为前一个确认报文段并不消耗序号。
当运行服务器进程的主机B的TCP收到主机A的确认后,也通知其上层应用进程,连接已经建立。
另外,在TCP连接建立的过程中,还利用TCP报文段首部的选项字段进行双方最大报文段长度MSS协商,确定报文段的数据字段的最大长度。
双方都将自己能够支持的MSS写入选项字段,比较之后,取较小的值赋给MSS,并应用于数据传送阶段。
3)TCP数据的传送
为了保证TCP传输的可靠性,TCP采用面向字节的方式,将报文段的数据部分进行编号,每个字节对应一个序号。
并在连接建立时,双方商定初始序号。
在报文段首部中,序号字段和数据部分长度可以确定发送方传送数据的每一个字节的序号,确认号字段则表示接收方希望下次收到的数据的第一个字节的序号,即表示这个序号之前的数据字节均已收到。
这样既做到了可靠传输,又做到了全双工通信。
当然,数据传送阶段有许多复杂的问题和情况,如流量控制、拥塞控制、重传机制等,本次实验不探究。
4)TCP连接的释放
在数据传输结束后,通信的双方都可以发出释放连接的请求。
TCP连接的释放采用“4次握手”。
如图
图4TCP连接释放的4次握手过程
首先,设图4中主机A的应用进程先向其TCP发出释放连接的请求,并且不再发送数据。
TCP通知对方要释放从A到B这个方向的连接,将发往主机B的TCP报文段首部的中止位置1,其序号X等于前面已传送过的数据的最后一个字节的序号加1。
主机B的TCP收到释放连接通知后即发出确认,其序号为Y,确认号为X+1,同时通知高层应用进程,如图中的箭头①。
这样从A到B的连接就被释放了,连接处于半关闭状态,相当于主机A对主机B说“我已经没有数据发送了。
但是如果你还有数据要发送,我仍然接收。
”
此后,主机B不再接收A发来的数据。
但若主机B还有一些数据要发给A,则可以继续发送(这种情况很少)。
主机A只要正确收到数据,仍然向B发送确认。
若主机B不再向主机A发送数据,其应用进程就通知TCP释放连接,如图中的箭头②。
主机B发出的连接释放报文段必须将中止位FIN和确认位ACK置1,并使其序号仍为Y(因为签名发送的确认报文段不消耗序号),但是还必须重复上次已经发送过的ACK=X+1。
主机A必须对此发出确认,将ACK置1,ACK=Y+1,而自己的序号仍然是X+1,因为根据TCP标准,前面发送过的FIN报文段要消耗掉一个序号。
这样就把B到A的反方向的连接释放掉。
主机A的TCP再向其应用进程报告,整个连接已经全部释放。
2.4实验步骤
步骤1在Wireshark中设置过滤条件,协议为TCPHTTP,地址为本机->
any,并开始截获报文;
步骤2打开.,完成后,保存截获的报文并命名为“TCP学号”,分析捕获的报文。
这里,TCP的连接和建立采用的是:
三次握手方式,本机是192.168.3.3,远端主机是192.168.3.183。
步骤3分析TCP连接建立过程的前3个报文,填写下表1:
表1TCP建立过程的三个报文信息
字段名称
第一条报文
第二条报文
第三条报文
报文序号
SequenceNunber
ACKNumber
ACK
SYN
步骤4分析截获报文中数据发送部分的第一条TCP报文及其确认报文,将报文中的字段值填写在表格2中。
表2TCP报文首部信息
字段名
长度
字段值
字段意义
发送报文
确认报文
步骤5TCP连接建立时,其报文首部与其它TCP报文不同,有一个option字段,它的作用是什么?
结合IEEE802.3协议规定的以太网最大帧长分析此数据是怎么得出来的?
步骤6分析TCP数据传送阶段的前8个报文,将报文信息填入表3:
表3TCP数据传送部分的前8个报文
报文种类
序号字段
确认号字段
被确认报文序号
2.5实验总结
在实验中,通过分析截获的TCP报文首部信息,可以看到首部中的序号、确认号等字段是TCP可靠连接的基础。
分析TCP头部信息,分析“3次握手”过程。
通过对数据传送阶段报文的初步分析,了解数据的编码和确认机制。
总之,TCP协议中的各项设置都是为了在数据传输时提供可靠的面向连接的服务。
2.B编程构造UDP数据包部分
使用C语言构造UDP数据包程序。
1)UDP首部和伪首部结构体定义
/*UDP首部*/
structudphdr{
};
//UDP中校验使用的伪首部
structpseudo_header
{
2)构建UDP报文数据
intbuild_udp_Package(structsocket_pair*sp,constunsignedchar*buf,intlen,unsignedchar*udpPacket[],int*udpPacketLen){
3.HTTP协议分析
实验目的
在PC机上访问Web页面,截获报文,分析HTTP协议的报文格式和HTTP协议的工作过程。
实验设备和连接
请通过访问可以连接的WWW站点来进行实验。
实验步骤
在PC机上运行Wireshark,开始截获报文,为了只截获和我们要访问的网站相关的数据报,将截