用Wireshark抓取arp、snmp、icmp、dhcp等报文的方法

文章描述:-2022年4月14日发(作者:袁世凯)基础知识学习协议的概念ARP,即地址解析协议,实现通过IP得知其物理地址。在CP/IP网络环境下,每个主机分配了一个32位的IP地址,这种互联网地址是在网际范围表示主机的一种逻辑地址。为了让报文在物理线路上的传输,必须知道对方目的主机的物理地址。这样就存在把IP地址变成物理地址的转换问题。一以太网环境为例,为了正确的向目的主机传送报文,就必须将主机的32位I

-

用Wireshark抓取arp、snmp、icmp、dhcp等报文的方法
2022年4月14日发
(作者:袁世凯)

基础知识学习

协议的概念

ARP,即地址解析协议,实现通过IP得知其物理地址。在CP/IP网络环境下,每个主机

分配了一个32位的IP地址,这种互联网地址是在网际范围表示主机的一种逻辑地址。为了

让报文在物理线路上的传输,必须知道对方目的主机的物理地址。这样就存在把IP地址变

成物理地址的转换问题。一以太网环境为例,为了正确的向目的主机传送报文,就必须将主

机的32位IP地址转换成48位的以太网的地址。这就需要在互联层有一组服务将IP地址转

换成物理地址,这组协议就是ARP协议。

1.2ARP协议实现的基本功能在以太网协议中,同一局域网中的一台主机要和另一台主机进行直接通信,必须知道

目标主机的MAC地址。而在TCP/IP协议栈中,网络层和传输层只关心目标主机的IP地址。

这就导致再以太网中使用IP协议时,数据链路层的以太网协议连接到上层IP协议提供的数

据中,只包含目的的IP地址。于是需要一种方法,更具目的主机的IP的地址,获取其MAC

地址。这就是ARP协议要做的事。所谓地址解析(addressresolution)就是主机再发送阵前

将目标地址转换成目标MAC地址的过程。另外,当发送主机和目标及不在同一个局域网时,即便知道目的主机的MAC地址,

两者也不能直接通信,必须有路由转发才行。所以此时,发送主机通过ARP协议获得的将

不是目的主机的真实MAC地址,而是一台可以通往局域网外地路由器的某个端口的MAC

地址。于是此后发送主机发送目的和主机的所有帧,都将发往该路由,通过他向外发送。这

种情况成为ARP代理(ARPProxy).

1.3工作的原理每台装有TCP/IP协议的电脑里都有一个ARP缓存表,表里IP与MAC

地址是一一对

应的。

例如,主机A(192.168.1.5)主机B(192.168.1.1)发送数据.当发送数据时,主机A会在

自己的ARP缓存表中查是否有目标IP地址。如果到了,也就知道了目标MAC地址,

直接将目标MAC地址写进帧里发送就可以了;如果缓存表中没有到目标IP地址,主机A

就会在网络上发送一个广播,A主机MAC地址就是“主机A的MAC地址”,”,这表示向

同一网段内的所有主机发出这样的询问:“我是192.168.1.5,我的硬件地址是"主机A的MAC

地址".请问IP地址为192.168.1.1的MAC地址是什么?”网络上其他主机并不响应ARP询问,

只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.1.1的MAC地址是

00-aa-00-62-c6-09”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送

信息了。同时A和B还同时都更新了自己的ARP缓存表(因为A在询问的时候把自己的

IP和MAC地址一起告诉了B),下次A再向主机B或者B向A发送信息时,直接从各自

的ARP缓存表里查就可以了。ARP缓存表采用了老化机制(即设置了生存时间TTL),

在一段时间内(一般15到20分钟)如果表中的某一行没有使用,就会被删除,这样可以大

大减少ARP缓存表的长度,加快查询。

1.4抓包并分析报文

1.4.1抓包

环境搭建方法:用一根网线连接两台主机,不妨记做主机A、主机B。主机A向主机B

通信。

操作步骤如下:

1.测试环境,用一根网线将主机A、主机B连接起来,并进行ping操作(ping对方的IP),

直到ping同为止。

2.打开主机B的“本地连接状态”,查看IP地址,也可以在主机B上进行ipconfig/all操作,

得到IP。

3.在主机A上进行arp-d操作,目的是清空ARP缓存表。

4.在主机A上进行arp–a操作,目的是查看ARP缓存表的内容是否被清空。

5.在主机A上打开抓包软件Wireshark,并正确配置网管。

6在主机A上ping主机B的IP地址。

7.过滤报文,并进行分析。

1.4.2报文分析

如下所示,图1.1是具体的操作命令,图1.2是主机A向网络发出的请求报文,图1.3是

主机B向主机A发出的响应报文。、

从图1.2可以看出,源MAC地址为:44:37:e6:46:e7:98,源IP地址为10.1.22.11;目的MAC

为:00:00:00:00:00:00,目的IP为10.1.11.22。其中源是指主机A,目的是指B主机。

从图1.3可以看出,源MAC地址为:f4:6d:04:c1:0b:de,源IP为:10.1.11.22;目的MAC

地址为:44:37:e6:46:e7:98,目的IP为:10.1.22.11。其中,源是指主机B,目的是指主机A。

从图1.3可以看出,图1.1图1.2

图1.3

的相关学习

的基础概念

DHCP(DynamicHostConfigurationProtolo)是一个局域网协议,使用UDP协议工作,

主要有两个用途:给内部网络或网络服务商自动分配IP地址给用户和给内部网络管理员作

为对所有计算机做中央管理的手段。

2.2DHCP结构介绍DHCP是动态主机配置协议,他的前身是BOOTP。网络主机使用BOOTPOM而不

是磁盘启动,BOOTP则可以自动地为那些主机设定TCP/IP环境。但BOOTP的缺点是,在

设定前必须获得客户端的硬件地址,而且,与IP是相对静止的。换言之,BOOTP缺乏“动

态性”,而DHCP可以说是BOOTP的增强版本,它分为两部分:一个是服务器端,一个是

客户端。所有的IP网络设定数据都由DHCP服务器集中管理,并负责处理客户的DHCP要

求;而客户端则会服从服务器分配下来的IP环境数据。比较BOOTP,DHCP通过“租约”

的概念,有效且动态的分配TCP/IP设定,而且,作为兼容考虑,DHCP完全照顾了BOOTP

Client的需求。DHCP的分配形式,首先,必须至少一台DHCP工作在网络上面,他会监听

网络的DHCP请求,并与客户端磋商TCP/IP的设定环境。

2.3地址分配

IP地址分配方式主要有3中,即手动分配(ManualAllocation)、自动分配(Automatic

Allocation)和动态分配(DynamicAllocation)。

手动分配是指,网络管理员为某些少数特定的Host绑定固定IP地址,且地址不会过期。

自动分配是指,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址之后,

就永远使用这个地址。

动态分配是指,当DHCOP客户端第一次从DHCP服务器租到IP后,就永久使用该地

址,只要租约到期,就释放(release)这个IP地址。

2.4工作原理

下图是首次登陆时,DHCP工作过程。

DHCPdscover

DHCPoffer

客户端DHCP服务器

DHCPrequest

DHCPACK

DHCPdiscover:

功能是:寻DHCP服务器。具体过程如下:当DHCP客户端第一次登录网络的时候,客户发现本机上没有任何IP数据设定,他

会向网络发出一个DHCPDISCOVER封包。因为客户端还不知道自己属于哪一个网络,所

以封包的来源地址会为0.0.0.0,而目的地址则为255.255.255.255,然后再附上DHCPdiscover

的信息,向网络进行广播。在Linux下,DHCPdscover的等待时间设为4秒,也就是,当

客户端将第一个DHCPDiscover封包发送出去后,在4秒内没有得到响应的话,将执行第

二次DHCPdiscover广播。如果一直得不到响应的情况下,再执行第三次、第四次,一共只

能执行4次,他们的等待时间一次为4秒、8秒、16秒、32秒,最大到64,秒,此时,客户

端认为服务器不可达。之后,客户端再等待一段时间(Linux下通常为5m)重新尝试。

DHCPoffer:

功能是:提供IP租约。具体过程如下:当DHCP服务器监听到客户端发出的DHCPdiscover广播后,它会从那些还没有租出去

的地址范围内,选择最前面的空值IP,其他的TCP/IP设定,响应给客户端一个DHCPOFFER

封包。由于客户端在开始的时候还没有IP地址,所以在其DHCPdiscover封包内会带

有其MAC地址信息,DHCP服务器相应的DHCPoffer封包会根据这些资料传递给要求租

约的客户。根据服务器端的设定,DHCPoffer封包会包含一个租约期限的信息。

DHCPrequest:

功能是:接受IP租约。其具体过程如下:如果客户端收到网络上多台DHCP服务器的响应,会挑选其中一个DHCPoffer(通常是最

先抵达的那个),并且向网络中发送一DHCPrequest广播封包,告诉所有的DHCP服务器它

将指定接受哪一台服务器提供的IP地址。同时,客户端还会向网络发送一个ARP封包,查

询网络上面有没有其他机器使用该IP地址;如果发现该IP已被占用,客户端则会发出一个

DHCPDECLIET封包该DHCP服务器,拒绝接受其DHCPoffer,并重新发送DHCPdiscover

信息。客户端也可以发送DHCPrequest向服务器提出DHCP选择。

问题:DHCP服务器提供给客户端的IP都是没有被租出去的,为什么客户端会发现地址冲

突呢?

DHCPACK

功能是:确认租约。其具体过程如下:

当DHCP服务器收到客户端的DHCPresqust之后,会向客户端发送一个DHCPACK响应,

确认租约的正式生效,也就结束了一个完整的DHCP工作过程。

DHCP发送流程第一次登陆之后:一旦DHCP客户端成功的从服务器那里获取DHCP租约

之后,除非其租约已经失效并且IP地址也重新设定回0.0.0.0,否则就无需发送DHCP

discover信息了,而会直接使用已经租用到的IP地址向之前的DHCP服务器发出DHCP

request信息。DHCP服务器会尽量让客户端使用原来的IP地址,如果没有问题的话,直

接响应DHCPARK来确认即可。如果地址已经无效或已被其他机器使用了,服务器则会相

应一个DHCPARK封包给客户端,要求其重新执行DHCPdiscover。至于IP的租约期限

是非常讲究的,在开机时候发出DHCPrequst请求之外,在租约期限一半时也会发出,如果

此时得不到DHCP服务器的确认的话,客户端还是可以继续用的,但当租约期限过了87.5%

的时候,还是无法与当初的DHCP服务器联系不上,他将和其他的DHCP服务器通信,如

果此时没有其他的服务器的话,客户端必须停止使用该IP,并发送一个DHCPdiscover封包开

始。

抓包并分析

抓包步骤:

1.打开Wireshark,选择正确的网关;

ig/all命令操作,查看本机的IP地址、子网掩码、默认网关、DHCP服务器等;

ig/release命令操作,释放本机的Ip地址和子网掩码;

4.对抓的包进行过滤;

5.分析报文。

报文分析:

如图2.2是DHCPrelease封包,户端端给DHCP服务器的。包括的信息有:客户端MAC地

址:44:37:e6:46:e7:98,

客户端IP地址:10.1.95.45,DHCP服务器MAC:00:90:fb:2e:88:85,DHCP服务器的IP:

10.1.95.45。

如图2.3是DHCPdiscover封包,户端端给DHCP服务器的,其目的是,寻DHCPservice

包括的信息有:客户端MAC地址:44:37:e6:46:e7:98,客户端IP地址:0.0.0.0;DHCP

务器MAC:ff:fff:ff:ff:ff:ff,DHCP服务器IP地址:255:255:255:255。由此可以判断,这是

一个广播包。

图2.4是DHCPoffer封包,是DHCP服务器发给客户端的。其目的是,提供IP。包括的信

息有:DHCP服务器的MAC:00:90:fb:2e:88:85,DHCP服务器的IP:10.1.95.45;客户端

MAC地址:44:37:e6:46:e7:98,提供给客户端的IP地址是:10.1.95.45,

但实际上这时端的IP任然为:0.0.0.0。除此之外,DHCPoffer封包里面还包含了IP租约期

限(30minutes)。

图2.5是DHCPrequest封包,是客户端发给DHCP服务器的。其目的是,接受IP。包括

的信息有:客户端的IP:0.0.0.0,客户端MAC是:44:37:e6:46:e7:98;DHCP服务器的MAC:

,DHCP服务器的IP:0.0.0.0。可以判断这是一个广播包。

图2.6是DHCPACK封包,是DHCP服务器发给客户端的。其目的是,确认租约。包括的

信息有:DHCP服务器的MAC:00:90:fb:2e:88:85,DHCP服务器的IP:10.1.95.45;客户端

MAC地址:44:37:e6:46:e7:98,客户端的IP地址是:10.1.95.45。

图2.1

图2.2

图2.3

图2.4

图2.5

图2.6

协议的简单介绍

3.1ICMP协议的简单介绍ICMP是(InternetControlMessageProtocol)Internet控制报文协议。它是TCP/IP协议族

的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主

机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是

对于用户数据的传递起着重要的作用。

ICMP是一个:“错误侦测与回报机制”其目的就是让我们能够监测网路的连接状况,也能

确保连线的准确性。其功能有:侦测远端主机是否存在、建立及维护路由资料、重导路由传

输路径、资料流量控制。ICMP在沟通中透过不同的类别(Type)与代码(code)让机器

来辨别不同的连线状况。

ICMP协议对网络安全有重要的意义。ICMP本身的特点决定了它非常容易用于攻击网

络上的路由器和主机。比如,可以利用操作系统规定的数据包最大尺寸不超过64KB这一规

定,向主机发起“PingofDeath”(死亡之Ping)攻击。“PingofDeath”攻击原理是:如果数据

包的尺寸超过了64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,导致

主机死机。(现在操作系统已经取消了发送ICMP数据包的大小的限制,解决了这个漏洞)

此外,向目标主机长时间、连续、大量地发送ICMP数据包时,也会最终使系统瘫痪。

大量的ICMP数据包会形成“ICMP风暴”,市的目标主机耗费大量的CPU资源处理,疲于

奔命。

3.2ICMP消息类型的过滤规则

EchoRequest和Reply(类型8和0)允许EctoRequest消息出战以便于内部用户能够PIG一个远程主机。阻止入站Ecto

Request和出战EchoReply可以防止外部网络的主机对内部网络进行扫描。如果您使用了位

于外部网络的监视器来监视内部网络,就应该只允许来自特定外部IP的EchoRequest进入

您的网络。限制ICMPEcho包的大小可以组织“PingFloods”的攻击,并且可以阻止那些利

用EchoRequest和Reply来“偷运”数据通过防火墙的木马程序。

Dastinationunreachable(类型3)

允许其入站以便于内部网络可以使用traceroute。需要注意的是,有些攻击者可以使用

它来进行针对绘画的DoS攻击,如果您曾经经历过类似的攻击,也可以阻止它。组追出站

的ICMPDastinationunreachable消息,因为它可能会泄露内部网络的结构。不过有一个例

外,对于那些允许外部网络通过TCP访问的内部主机(如位于DMZ区的Web服务器)发

出来的Dastnationunreachable,应该允许他通过。为了能够支持“PathMTUDiscovery”,您

应该允许出站的“PacketTooBig”消息(类型3,代码4)到达那些主机。

Sourcequench(类型4)阻止其入站,因为他可以作为一种DoS攻击,能够降低发送者的发送速度。允许其

出站以便于内部主机能够控制发送端发出数据的速度。有些防火墙会回略所有直接发送到防

火墙端口的SourceQuench消息,以防止针对于防火墙的DoS攻击。

Reddirect(类型5,9,10):

Redirect(重定向)、Routerannouncement、Routerselection(类型5,9,10):这些消息存

在潜在危险,因为它们可以用来把数据重定向到攻击者的机器。这些消息应该被阻止。

TTLexceeded(类型11):允许其进站以便于内部用户可以使用traceroute。“firewalking”使用很低的TTL值来对

网络进行扫描,甚至可以通过防火墙对内部网络进行扫描,所以就应该禁止其出站。一些防

火墙可以阻止TTL值小于设定值的数据包进入防火墙。

Parameterproblem(类型12)禁止其进站和出站。通常使用一个能用数据包一致性检查的防火墙,错误和恶意的数

据包都会被阻塞。

3.3Ping和traceroute

Ping和traceroute命令都依赖于ICMP。ICMP也可以看做是IP协议的伴随协议。ICMP

报文被封装在IP数据报发送。

一些ICMP报文会请求信息。如:在ping中,一个ICMP回应请求报文会发给远程主机。

如果对方主机存在,期望它们返回一个ICMP回应应答报文。

一些ICMP在网络层发生错误时发送。例如,有一种ICMP报文类型表示目的不可达。

造成不可达的原因很多,ICMP报文确定这一问题。如,可能是主机关闭或整个网络连接断

开。

有时候,主机本身可能没有问题,但不能发送数据报。例如IP

首部有个协议字段,它指

明了什么协议应该处理IP数据包中的数据部分。IAA公布了代表协议的数字的列表。例

如,如果字段是6,代表TCP报文段,IP层会把数据发给TCP层进行处理;如果字段为1,

则代表ICMP报文,IP层会将数据传给IMCP处理。如果操作系统不支持到达数据包中协议

字段的协议号,它将返回一个指明“协议不可达”的ICMP报文。

Traceroute是基于ICMP灵活用法和IP首部的生存时间字段的。发送数据报时生存时间

字段被初始化为能够穿越网络的最大跳数。每经过一个中间点,该数据字减1。

生存时间字段用于避免数据在网络上无休止的传输下去。数据包的发送路径是由中间路

由器决定的。通过与其他路由器交换信息,路由器决定数据包的下一条路径。最好的“下

跳”经常由于网络环境的变化而动态改变。这可能导致路由器形成选路循环也会导致正确路

径冲突。在路由循环中,这种情况时可能发生的。例如,路由器A认为数据报应该发送到

路由器B,而路由器B又认为数据报应该发送给路由器A,这时数据报便处于循环选路中。

生存时间字段长为8位,所以因特网路径的最大长度为2

8

-1即255跳。大多数源主机将

该值初始化为更小的值。将生存时间设置过小可能会使数据报不能达到远程目的主机,而设

置过大有可能导致处于无限循环的选路中。

因为在分组交换网络中发送每个数据包时是独立的,所以有traceroute发送的每个数据报

的路径实际上相同。每个数据包沿着一条路径对中间节点进行取样,因为traceroute可能暗

示一条主机间并不存在的连接。因特网路径经常变动。在不同的日子或一天的不同时间对同

一个主机执行几次traceroute命令来探寻这种变化都会得到不同的结果。

为了体现

Internet路由的有限可见性,许多网路都维护了一个traceroute服务器。Traceroute

服务器将显示出从本地网到一个特定目的地执行traceroute的结果。

3.3.1ping和ICMP

1、打开Windows命令提示符窗口。

2、启动Wireshark协议分析软件,在过滤窗口上输入“icmp”,开始Wireshark分组俘获。

3、输入“ping”。

4、当ping程序停止时,停止俘获。

上述步骤完成后,出现下列命令窗口:

图3.1命令窗口

停止俘获后,出现如图3.2所示的界面:

图3.2:停止俘获后Wireshark的界面

从图上可以得到,这是一个ICMP回应请求报文,本机IP的地址是10.1.95.45,目的主机的

IP是119.75.218.45。ICMP的type和code分别是8和0。

停止俘获后,出现如图3.3所示的界面:

图3.3:停止俘获后Wireshark的界面

从图上可以看出,这是一个ICMP回应应答报文,源主机的IP是119.75.218.45

,目的主机

的IP时10.1.95.45,ICMP的type和code都是0。

3.3.2Traceroute和ICMP

1、打开Windows命令提示符窗口。

2、启动Wireshark协议分析软件,在过滤窗口上输入“icmp”,开始Wireshark分组俘获。

3、输入“tracert”。

4、当程序停止时,停止俘获。

上述步骤完成后,出现下列命令窗口:图3.4命令窗口

图3.4停止俘获后Wireshark界面

协议的简单介绍

HTTP(HyperTextTransferProtocol),即超文本传输协议,是互联网上应用最为广泛的一种网

络协议。所有的www都遵循这个协议。

一次HTTP操作成为一个事务,其工作过程可以分为四步:

首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。

建立连接回购,客户机发送一个请求给服务器,请求方式的格式为:统一资源标示符

(URL)、协议版本号,后面是MIME信息包括请求修饰符、客户机信息和可能的内容。

服务器接到请求后,基于相应的响应信息,其格式为一个状态行,包括信息的协议版本号、

一个成功或错误的代码,后面是MIME信息包括服务器信息、实体信息和可能的内容。客户端接收到服务器返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务

器断开连接。如果以上过程中的某一步出现错误,那么产生错误的信息返回到客户端,由显示屏输出。

对于用户来说,这些过程是由HTTP自己完成的。

许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在原服务器上资源的请

求。最简单的情况可能是用户代理和服务器之间通过一个单独的连接来完成的。在Internet

上,HTTP通讯通常发生在TCP/IP连接之上。缺省端口是TCP80,但他的端口也是可用的。

但这并不预示着HTTP协议在Internet或其他网络的其他协议之上才能完成。HTTP只预示

着一个可靠的传输。

以上介绍了HTTP协议的宏观运作方式,下面还介绍一下HTTP协议的内部操作过程。

在www中,“客户”与服务器是一个相对的概念,只存在于一个特定的转换期间,即在

某个链接中的客户在另一个连接中可能作为服务器。鲫鱼HTTP协议的客户/服务器模式的

信息交换过程,它可以分四个过程:建立连接、发送请求信息、发送相应信息、关闭连接。

其实简单说就是任何服务器除了包括HTML(超文本标记语言)文件以外,还有一个HTTP

驻留程序,用于响应用户请求。你的浏览器是HTTP客户,向服务器发送请求,当浏览器中

输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了HTTP请求,此请

求被送往有IP地址指定的URL(统一资源标示符)。驻留程序接收到请求,在进行必要的

操作后会送所要求的文件。在这一过程中,在网络上发送和接受的数据已经被分成一个或

多个数据包(packet),每个数据包包括:要传送的数据;控制信息,即告诉网络怎样

处理数据包。TCP/IP决定了每个数据包的格式。如果事先不告诉你,你可能不会知道

信息被分成用于传输和再重新组合起来的许多小块。

抓包测试

步骤

1、启动Wireshark协议分析软件,在过滤窗口上输入“http”,开始Wireshark分组俘获。

2、启动IntenetExplorer浏览器,输入。

3、网页打开后,停止俘获。

上述步骤完成后,、

-

用Wireshark抓取arp、snmp、icmp、dhcp等报文的方法

发布时间:2022-04-14 11:28:25
文章版权声明:除非注明,否则均为IT技术网-学习WEB前端开发等IT技术的网络平台原创文章,转载或复制请以超链接形式并注明出处。

发表评论

评论列表 (有 12 条评论,9人围观)