wireshark抓包——DHCP 篇

wireshark抓包——DHCP 篇,第1张

简介:为了更好地观察DHCP续租等过程,利用windows server 2012 搭建DHCP服务器

        (1)我准备了一台windows server 2012虚拟机、一台windows10,2012搭建服务器,win 10测试。
        (2)搭建DHCP服务器必须要有静态的ip地址,这里咱们没有就随便填写即可

            右击电脑右下角小电脑的图标,点击“打开网络和共享中心”

        (3)在d出的窗口上选择“更改适配器设置”

        (4)右击小电脑,点击属性
      (5)点击ipv4 的Internet 协议版本
        (6)配置ip地址
        (7)接下来就是安装DHCP服务,打开仪表板,点击添加角色和功能
            (8)服务器选择本机
              (9)选择dhcp服务器添加功能,如果没有配置静态的ip就会收到提醒
            (10)下一步即可
                    (11)安装完成后点击工具中的 DHCP
                    (12)点击新建作用域
                   下一步
                       填写信息(随便填)

                    填写想要分配的ip段
                    依情况而(起始和结束打同样的地址,表示这个地址不会分配出去,或者一个范围,按需要来,如下),下一步
                   默认就好
                        选择如下图选项
                    填写之前配好的网关即可
                这里dns,wins,暂时不配置,默认就好
            下一步
          完成
        现在就可以看到咱们新建的作用域了
       打开windows 测试,网络的获取形式为自动,把网络放在同一网段内,这里我们把网络放在VMnet8网卡上,最好把虚拟机的DHCP也关掉
            查看2012 就可以看到已经分配了(没有的刷新一下)

window10 端
DHCP搭建完成
(1)打开wireshark并过滤dhcp包
可以看到红色部分为咱们创建的DHCP服务

DHCP续租过程通常被称为DORA过程,因为它使用了四种类型的DHCP数据包 ,发现(discover)、提供(offer)、请求(request)、确认(acknowledge)
1)第一阶段discover
第一个包从0000的68端口发往255255255255的67端口,客服端使用的是0000,是因为它目前还有没有ip地址。数据包发往255255255255,是因为这是一个独立于网络的广播地址,从而确保这个数据包发送到它所在网络上的每个设备,简单来说就是某计算机A大喊我没ip地址,DHCP 看到后就会响应

1)第二阶段offer
范围内的DHCP服务器接收到discover 请求后,会向客户端发出DHCP Offer 报文作为回应,该报文包含该DHCP服务器可向DHCP客户端提供的IP地址以及该DHCP服务器自己的IP地址信息

ip 地址的租期为8天

子网掩码为:2552552550

这里理论上还有DNS ,router等信息,因为咱们没有配置,所以没有
3)第三阶段request
这个文件依然是从ip地址0000发出,因为还没有完成获取ip地址的过程,以广播的形式发送DHCP Request 报文,该报文会加入对应DHCP服务器的地址以及所需要的IP。
4)第四阶段 ack确认
被选择的DHCP服务器通过ack报文把在offer报文中准备的ip地址租约给对应客户端。这时客服端就有ip地址了。

1.[Packet size limited during capture]

         当你看到这个提示,说明被标记的那个包没有抓全。以图1的4号包为例,它全长有171字节,但只有前96个字节被抓到了,因此Wireshark给了此提示。

        这种情况一般是由抓包方式引起的。在有些 *** 作系统中,tcpdump默认只抓每个帧的前96个字节,我们可以用“-s”参数来指定想要抓到的字节数,比如下面这条命令可以抓到1000字节。      

  [root @ ubuntu]#tcpdump -i eth0 -s 1000 -w /tmp/tcpdumpcap

2.[TCPPrevious segment not captured]

        在TCP传输过程中,同一台主机发出的数据段应该是连续的,即后一个包的 Seq 号等于前一个包的 Seq Len (三次握手和四次挥手是例外)。如果Wireshark发现后一个包的Seq号大于前一个包的Seq Len,就知道中间缺失了一段数据。假如缺失的那段数据在整个网络包中都找不到(即排除了乱序),就会提示[TCPPrevious segment not captured]。比如在图2这个例子中,6号包的Seq号1449大于5号包的Seq Len=1 0=1,说明中间有个携带1448字节的包没被抓到,它就是“Seq=1, Len=1448”。

         网络包没被抓到还分两种情况:一种是真的丢了;另一种是实际上没有丢,但被抓包工具漏掉了。在Wireshark中如何区分这两种情况呢?只要看对方回复的确认(Ack)就行了。如果该确认包含了没抓到的那个包,那就是抓包工具漏掉而已,否则就是真的丢了。

        顺便分析一下图2这个网络包,它是>wireshark为什么抓不到dns数据包:
1因为响应问题: 1、大量重传: 重传很久对方才响应,正常的时候没有重传:可能是由于网络不稳定,在中间设备抓包查看丢包位置 大量重传和dup ack,链路中应该是有丢包,镜像流量方便排查 2、响应慢:查对方 TCP
2
建立连接失败: (以在负载均衡设备上抓包为例) 1、服务器无响应:(Performance L4类型VS,6-9号包客户端>F5
3
DOS问题: 由于当时受到单个用户同一源端口发的DNS包,高峰期在每秒125krps


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zz/13506992.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-21
下一篇 2023-08-21

发表评论

登录后才能评论

评论列表(0条)

保存