网络协议抓包分析
一、
Ip地址合规性:把ip地址改为C类私网地址,我的学号是201710110095,所以ip地址最后一个改为自己的学号
利用H3C软件进行连通性测试,建立一台交换机和四台pc,分别对每台pc进行设置:
Ip地址:192.168.1.1
Pc1 子网掩码:255.255.255.0
Ip地址:192.168.1.2
Pc2 子网掩码:255.255.255.0
Ip地址:192.168.1.3
Pc3 子网掩码:255.255.255.0
Ip地址:192.168.1.4
Pc4 子网掩码:255.255.255.0
领用指令access和trunk把pc两两相连,最后对其ping测试。
Pc1 ping测试
Pc3 ping测试
二、抓包测试
1.应用层
然后在筛选命令栏输入ip.src==192.168.1.95 and http筛选出ip原地址为192.168.1.217的数据包,同时筛选出应用层http协议下的数据包,如下图:
选中淘宝的应用层数据:
2.传输层
利用上述方法抓取一个tcp数据包
其中source port:53858 为源端口
Destination port:2909 为目的端口
Header length :32 byte 为头部长度
Flags ;0x010(ack)为标志位
Windows size:1456 为窗口大小等等还有很多
Tcp的三次握手:
下面通过利用http应用层连接一个网络,实现tcp的3次握手和简单的数据交换过程,通过抓包来实际观察这个过程。
从第一行的tcp往下看,其中3个tcp包为3次握手的过程,接着http包说明成功建立连接,主机向服务器发送一个http应用请求,服务器收到请求后,返回一个tcp确认帧,接着发送一个http应答给主机,主机收到服务器的http应答数据后,又发送一个tcp确认帧,确认收到了数据。
Udp分析
源端口和目的端口:(端口是用来指明数据的来源(应用程序)以及数据发往的目的地(同样是应用程序))字段包含了16比特的UDP协议端口号,它使得多个应用程序可以多路复用同一个传输层协议及UDP协议,仅通过端口号来区分不同的应用程序。
长度(length):字段记录了该UDP数据包的总长度(以字节为单位),包括8字节的UDP头和其后的数据部分。最小值是8(报文头的长度),最大值为65535字节。
经过试验,无论多大包,从udp协议这一层级来说,并没有分为多个udp包。在试验中: 当包的长度达到10153时,接收端根本无法接收到发送的包(发送发并不能得到是否接收成功的消息)。
建议发送的包长度不超过512 byte。
网络层
打开保存的数据包,筛选栏输入http过滤,打开
该帧向网站服务器发出http get请求
选中该帧后,点开该帧首部封装明细区中Internet Protocol前的”+”号,显示该帧所在的IP包的头部信息
数据区目前以16进制表示,可以在数据区右键菜单中选择“Bits View”以2进制表示
ARP
Request包
此包将自己的MAC f4:8e:38:f1:78:41封装到ARP报文然后回复给请求方,reply包的字段含义跟requset差不多,其中op为:reply(2):
以太网源地址(Source):f4:8e:38:f1:78:41
帧类型(Type):ARP(0x0806)
硬件类型(Hardware):Ethernet(1)
协议类型(Protocol):IPv4(0x0800)
硬件地址长度(Hardware size):6
协议地址长度(Protocol):4
Opcode:操作类型为ARP请求request(2)
发送端MAC地址(Sender MAC address): f4:8e:38:f1:78:41
发送端IP(Sender IP address):192.169.1.95
目的MAC地址(Target MAC address):78:a4:53:2c:18:64
目的IP地址(Target IP address):192.169.1.1
数据链路层:
双击改项展开,可见MAC帧首部的详细分析,对应“解析器”窗口中的16进。制数据会反蓝显示。单击某个字段,对应的首部字段均会反蓝显示,如下图所示
分析各字段的含义:
时间戳:表示捕获到该数据包的时间,格式为“年—月—日,时:分:秒”;
源地址/目标地址:该数据包的源地址/目标地址;
帧:数据包捕获的是哪种协议的帧,在这里一般是IP协议;
协议:该数据包的协议类型;
远端口/目标端口:发送/接收该数据包的端口号;
大小:数据包的长度。
总结:
这次的抓包课程作业,不仅是对上阶段的ip通信学习的总结,更是对知识的拓展。在课堂上很多没有讲的知识,都通过自己不断在网上搜集答案,解开自己的疑惑,不断的提高自己的水平。
在完成作业过程中,我知道了wireshrk软件的一些使用特性,也总结一些有用的筛选指令,之中比较常用的是:
ip.addr == 192.168.1.11//得到ip地址为192.168.1.11的所有报文
ip.src == 192.168.1.11//得到源ip地址为192.168.1.11的所有报文
ip.dst == 192.168.1.11 //得到目的ip地址为192.168.1.11的所有报文
除此之外也还有很多的过滤指令,这给抓包分析最明显的作用就是简洁明了,不用一条一条的翻,这对于刚入门的新手来说,无疑是最有用的。
另外还有一个很有用的技巧是自定义过滤规则,很多时候简单的过滤规则并不能满足我们的需求,我们需要自己DIY过滤规则,这时只需要点击Analyze菜单并选择Display Filters来创建新的过滤条件