wireshark——APR协议&IP协议


RFC即Request for Comments是定义各种协议实现标准的官方文档,ARP协议就是在RFC826中定义的,可以在RFC Editor的首页中搜索RFC文档下载浏览。

APR协议

原理:ARP(Address Resolution Protocol,地址解析协议)用于将IP地址解析为物理地址(MAC地址)的一个TCP/IP协议。

因为网络中用于连接各个设备的交换机使用了内容可寻址存储器(CAM,Coment Addressable Memory)。该存储器维护的ARP表列出了它在每一个端口的所有连接设备的MAC地址。所以当交换机收到了一个指向特定MAC地址的网络流量,它就会使用这个表,来确定应该使用哪一个端口发送流量。如果目标MAC地址是未知的,那么这个传输设备会首先在它的缓存中查找这个地址,如果没有找到,那么这个地址就需要通过在网络上额外的通信中解析了。

ARP协议的由来

因为OSI模型将网络分为了七层,而IP地址位于第三层,也就是网络层,MAC地址位于数据链路层,也就是第二层。在通过以太网发送IP数据包的时候,需要首先封装第三层和第二层的报头。但由于发送数据包时只知道目标IP地址,不知道其MAC地址,而又不能直接跨越第二、三层,所以需要地址解析协议。在使用了ARP协议后,计算机可以按照网络层IP数据包的头部信息,将硬件地址信息(MAC地址)对应起来,以保证通信的顺利进行。

ARP协议的基本功能

将一个已知的IP地址解析成MAC地址,以便主机之间可以正常地通信。

在这里插入图片描述

分析APR数据包

ARP协议的解析过程只使用了两种数据包:一个ARP请求和一个ARP响应

ARP协议工作原理

1、当主机A想要给主机B发送数据时,主机A会首先在自己的本地ARP缓存表中检查是否有主机B的IP地址相匹配的MAC地址。
2、如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。这个请求帧包含有主机A的IP地址和MAC地址,以及主机B的IP地址。
3、网络中凡是收到请求帧的主机都会检查自己的IP地址是否与请求地址一致,如果不一致,则会丢弃该请求帧;如果相同,该接收主机首先将发送端的MAC地址和IP地址添加到自己的ARP缓存列表中并给源主机发送一个
ARP响应数据包,告诉对方自己是它需要查找的MAC地址(单播)。
4、发送主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息向它开始数据的传输。

查看ARP缓存表:可以打开cmd,输入arp -a
本地的缓存是有生命周期的,默认的ARP缓存表的有效期是120秒,过期后,需要重复上述过程。

分析APR请求数据包

打开wireshark,找到ARP请求的数据包。我们可以通过Packet Details面板,检查以太网头部信息来确定这个数据包是不是一个真的广播数据包。

第一个数据包,来看看ARP的请求
在这里插入图片描述

分析
首先在Frame帧中,可以知道该数据包的大小为42个字节。
Ethernet部分的内容,会发现这个数据包目的地址是ff:ff:ff:ff:ff:ff,这是一个广播地址,说明当前数据包会被广播到当前网段中的所有设备上。而这个数据包中以太网的源地址就是本机的MAC地址。
展开ARP请求的头部信息。按照顺序依次为硬件类型、协议类型、硬件地址长度、协议长度、操作码(该值为1,表示这是一个ARP请求包)、发送方的MAC和IP地址,以及接收方的IP地址。因为我们想要获取的目标MAC地址还是未知的,因此就以全0的形式显示。

分析APR响应数据包

第二个数据包,来看看ARP的响应
在这里插入图片描述

ARP响应的数据包和ARP请求的数据包很相像。
不同之处:首先,用于响应的数据包的操作码(Opcode)现在是2,表明这是一个用于响应的数据包;其次,发送方的MAC地址和IP地址变成了目标MAC地址和IP地址;最后,响应数据包中的内容都是可用的,也就是说我们已经获取了192.168.0.1主机的MAC地址,即00:13:46:0b:22:ba,那么接下来就可以正常通信了。

分析免费ARP数据包

关于免费ARP(gratuitous ARP)的例子。

原理
由于网络中一个设备的IP地址是可以改变的,而MAC地址不会改变。那么一旦出现IP地址改变的情况,网络主机中缓存的IP和MAC地址映射就不再有效了。那么为了防止由于映射失败造成的通信错误,免费的ARP请求会被发送到网络中,强制所有收到它的设备使用新的IP以及MAC地址映射来更新缓存。通常,它发生在系统引导期间进行接口配置或IP地址出现变化的时候。
实现过程
为了网络上的所有主机都能收到它,数据包是以广播的形式发出的且发送方的IP地址和接收方的IP地址是一致的。网络中的其它主机收到这个数据包之后,它会让这些主机使用新的IP和MAC地址映射关系来更新它们的ARP表。由于这个ARP数据包是源主机未经请求主动发出的,并导致了目标主机更新了ARP缓存,所以称之为免费的ARP。

IP协议

原理:IP协议(Internet Protocol,互联网协议),是TCP/IP协议栈中最核心的协议之一,通过IP地址,保证了联网设备的唯一性,实现了网络通信的面向无连接和不可靠的传输功能。
IOS第三层网络层主要实现跨网络间的通信。

wireshark分析捕获文件的存活时间TTL和IP分片

存活时间(TTL,Time to Live)

  • 用于定义数据包的生存周期,也就是在该数据包被丢弃之前,所能够经历的时间,或者能够经过的最大路由数目。
  • 这个值是在数据包被创建的时候设置的,而且通常在每次发往一个路由器的时候会实现自减一的操作。一旦TTL的值变为了0,那么这个数据包就会被丢弃。
  • 由于TTL的值在技术上是基于时间的,那么一个非常繁忙的路由器可能会将TTL的值减去不止1,但是一般来说,我们还是可以认为一个路由设备在多数情况下只会将TTL的值减去1。

例子1:
在这里插入图片描述
分析
这个捕获文件中包含有两个ICMP(Internet Control Message Protocol,Internet控制报文协议)数据包,它使用了IP协议进行数据包的传递,查看Packet Details面板来展开IP的头部信息进行分析。
可以看到,IP的版本号为4,IP头的长度是20字节,总长度是60字节,并且TTL的值是128。其实这个捕获文件是从IP地址为10.10.0.3的设备将一个ICMP请求发往了IP地址为192.168.0.128的设备上。也就是使用了ping来测试设备之间的通信。而这个捕获文件就是在源主机上被创建的。

例子2:它是在目标主机,也就是IP地址为192.168.0.128的设备上捕获的。这里我们只关注第一个数据包的IP头部信息:
在这里插入图片描述
分析 可以发现,这里的TTL值变成了127,比原来的TTL少了1。就算我们不知道这个网络的结构,那么从TTL值推断出这两台设备之间是有一个路由器的,才使得TTL的值减少了1。

IP分片

  • IP数据包的分片指的是将一个数据流分为更小的片段,是IP用于解决跨越不同类型的网络时可靠传输的一个特性。
  • 数据包的分片主要基于OSI模型第二层的数据链路层协议所使用的最大传输单元(MTU,Maximum Transmission Unit)的大小,以及使用这些第二层协议的设备配置情况。
  • 在多数情况下,第二层所使用的数据链路层协议是以太网。而以太网的默认MTU是1500,那么以太网的网络上所能传输的最大数据包的大小就是1500字节。!注意这里面并不包括14字节大小的以太网头部本身。

应用场景:当一个设备准备传输一个IP数据包时,会首先将这个数据包的大小和将要把这个数据包传出去的网络接口的MTU进行比较,从而确定是否需要将这个数据包分片。如果数据包的大小大于MTU,那么这个数据包就会被分片。

应用步骤
(1)设备将数据分为若干个可以成功进行传输的数据包。
(2)每个IP头的总长度域(Total Length)会被设置为每个分片的片段长度。 (3)更多分片标志(More fragments)将会在数据流的所有数据包中设置为1,最后一个数据包则为0。
(4)IP头中分片部分的分片偏移将会被设置。
(5)数据包被发送出去。

例子3: 这里捕获文件同样是在发送ping请求时,在源主机上捕获的。
分析:首先查看一下数据包1的IP头部分,重点关注的是更多分片标志(More fragments)以及分片偏移(Fragment offset)。
在这里插入图片描述
由于在这个数据包中,更多分片标志被设置为了1,意味着这是一个分片数据包,并且接收设备还需要等待接收序列中的另一个数据包。而分片偏移被设置为了0,说明这个数据包是一系列分片偏移中的第一个。接下来查看一下第二个数据包的IP头:
在这里插入图片描述
这个数据包同样被设置了更多分片标志,而接下来的分片偏移的值是1480,这是因为前一个分片是1500字节,但是其中包含有20字节的IP头,因此到这里分片偏移就成了1480。再看一下第3个数据包:
在这里插入图片描述
可以看见这个数据包标志位为0,说明这是整个数据流的最后一个分片。分片偏移被设定为2960,也就是1480加上1480的结果。这三个分片之所以会被认为来自于同一个数据序列,是因为在Identification中,这三个数据包的值都是0x7474。

判断数据包是否来自同一个数据序列,看Identification中的值是否一致!

捕获IP数据包方法

使用ping
原因:能精确查找数据包。因为捕获到IP数据包有很多,比如我们打开一个网站,直接使用Wireshark会捕获到非常多的IP数据包。但也会捕获到非常多的诸如DNS、HTTP、TCP等协议的数据包,就不方便于我们的分析。但使用ping,这样就只会获取到ICMP协议的数据包。
使用步骤
1、首先我们可以在想要进行捕获的系统(如:虚拟机)上打开Wireshark,选择菜单栏的“Capture”->“Options”,进行如下相应的设置——最后start
在这里插入图片描述
2、在虚拟机上打开cmd,ping主机的IP地址,然后查看捕获结果

捕获IP分片数据包

设置和上面一样,但需要在ping上额外加上“-l 3000”,3000表示捕获的数据包的大小为3000。在wireshark打开捕获的数据包逐一展开ip头部分,观察标志位flags可以看见它们都是一样的,即说明这些数据包都是经过分片
进行发送的。

以上是我观看《Wireshark零基础入门到实战/网络抓包/流量分析必备》视频的笔记,记录下来温故知新,希望对你也有用!

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值