IP地址的获取—分析从连接WiFi到上网的全过程(二)

IP地址的获取—分析从连接WiFi到上网的全过程(二) - 墨天轮

聊一聊IP产生的背景和作用

在介绍获取IP地址进行通信之前,也许会产生这样一个疑问。MAC地址在全球范围内是唯一时,为什么我们不使用它们来端对端地处理流量并完全跳过IP。这可能就得知道设计IP地址的初衷。

可以设想一下这样一种场景,不同的国家和民族使用不同的文字和语言,相互之间要沟通和交流,这要求所有人都得掌握这些语言和文字。想想看这种场景是不是一种灾难——每一个终端设备都需要保存其他所有终端的MAC地址,这需要多大的存储?这可能会达到TB或者EB级。

当然,这种设计存在一定的历史原因,计算机网络是从无到有、从小到大发展起来的,有些网络被创造出来的时候只应用于较小的范围,这些不同的网络之间使用自己的一些协议进行通信,相互之间并不兼容。在尽量减少这些不同的网络内部已经趋于完善的基础设施的改变的基础上,为了实现计算机网络的大一统,就需要向上抽象出一种新的协议,在这些网络之间统一使用这种新的协议(TCP/IP
)通信。分层的目的是再抽象出一个更上层的概念或结构用来屏蔽低层异构网络
的差异。

数据在不同的网络之间进行传输就得依赖 IP层
 ,而IP层进行寻址最为关键的元素就是IP地址,本文的重点在于介绍在网络环境中如何获得IP地址,故IP相关的协议不在讲解的范围,读者可以自行了解。

在本系列的上一篇文章《WiFi认证—分析从连接WiFi到上网的全过程(一)》中通过WireShark抓包分析了终端如何通过802.11协议连接上AP。本文将介绍连接上AP之后如何获取IP地址以访问互联网。

02

如何获得IP地址

连接到互联网的每台终端设备在正常通信之前都需要知道自己的IP地址,此外还需要默认网关、子网掩码等信息。通常这些信息需要保存到介质当中—常见的介质就是硬盘。有了硬盘这种不会因为断电而丢失数据的介质,我们可以通过手动操作的方式为终端静态配置这些必备的信息。但是仍有一种设备无法通过这种静态配置的方式获取持久化的配置信息—盘工作站

最早 RARP(反向ARP)协议
 被用来解决这个问题,通过这种方式,无盘工作站利用硬件广播发送请求,请求中包含了自己的MAC地址;该请求到达RARP服务器之后,服务器以无盘工作站的MAC地址作为索引在本地库中查找到相应的IP地后返回应答。这个过程受到了比较大的限制,RARP依赖于硬件广播,这意味着RARP不能跨路由器使用,需要为每个无盘站所在的网络都设置一台RARP服务器。其次在跨网络通信时除了IP地址还需要知道自己的子网掩码和网关等信息。这就有了 BOOTP协议
 和 DHCP协议
 。

2.1

自举协议BOOTP

BOOTP协议
 基于C/S模型,即客户端(UDP端口号68)向BOOTP服务器(UDP端口号67)请求自己的自举信息,服务器返回响应。由于无盘工作站没有硬盘,所以必须设置一台BOOTP服务器专门存放无盘工作站自举所需的信息,它保存了比RARP服务器更加丰富的信息。BOOTP协议并非本文介绍的重点,关于BOOTP确保可靠性的策略不在本文介绍的范围,这里仅介绍它的基本流程:

  • 客户端请求

BOOTP是一种应用层协议
它不依赖于硬件广播,因此可以跨网络使用。无盘工作站的自举信息保存在BOOTP服务器上,必须通过网络通信请求服务器返回这些信息,但是无盘工作站并不知道服务器的IP地址。那么不通过硬件广播它应该以何种方式获取到这些信息呢?BOOTP客户端在获取本机及本地网络底之前,需要使用有限广播强迫IP(源IP地址字段全0)在本地网络中广播数据报,从而获取到服务器返回的自举信息。

  • 服务器响应

RARP服务器知道客户端的MAC地址,可以构造单播物理帧发送响应。而无盘站此时仍不知道自己的IP地址,那么BOOTP服务器如何响应呢?

一般的,如果BOOTP服务器
使用单播的方式,则响应报文的目标IP地址字段就需要设置为无盘工作站的IP地址,然后交给网络接口层进行数据交付,此时网络接口层需要获取无盘工作站的MAC地址,如果服务器的ARP缓存中还没有MAC地址和IP地址的映射关系,就需要发出ARP请求获取MAC地址,但作站由于不知道自己的IP地址则不会予以应答。

这个问题的解决方案有两种,一是户端请求时携带自己的MAC地址信息,这样服务器可以将该MAC地址和相应的IP地址写入到ARP缓存当中,然后以单播的形式予以响应。而对于某些不能直接操作ARP缓存的系统,就需要使用广播的方式响应,服务器将目标IP地址设置为广播地址,该响应会落到该网络下的所有计算机,是否接收该报文由BOOTP客户端自行决定,客户端通过响应中的目标MAC地址判断该报文是否由自己接收。

2.2

DHCP(动态主机配置协议)

BOOTP协议被设计的初衷是引导无盘工作站
或者第一次启动的计算机获取网络配置信息,无盘工作站使用 BOOT ROM 而不是磁盘启动并连接上网络,BOOTP 自动地为那些主机设定 TCP/IP 环境,它适用于相对静态的环境
BOOTP Client的物理地址和IP地址的绑定关系是初始化的时候就人为地配置在BOOTP Server中,后期不再改变。

随着无线网络和包括笔记本和手机在内的终端设备的普及,由于BOOTP协议“静态”的特性,BOOTP服务器上为每一台终端设备保存一组静态的配置显然不现实。并且由于IPv4设计的缺陷,为每一个设备都分配一个IP地址是不可能的,所以需要在主机外连时动态的分配IP地址,于是IETF定义DHCP。

DHCP
本质是BOOTP的拓展,它的工作原理和BOOTP协议类似,最重要的加强部分在于它能快速并且自动的分配IP地址。在网络内必须配置一台DHCP服务器,客户端请求DHCP服务器分配一个IP地址。它支持3种配置方式:

  1. 手动配置
    。可以为某些特定的计算机配置一个永久的IP地址。

  2. 自动配置
    。为某一个第一次加入网络的终端分配一个永久IP地址

  3. 动态配置
    。为上网的终端设备分配一个临时的IP地址,这个地址会根据使用情况进行续租或释放。

动态配置是DHCP最关键的功能,在实现自动配置之前,需要为DHCP服务器配置一组可用的IP地址供分配时使用,但是终端设备通过DHCP动态获得的IP地址并不是永久的。DHCP服务对于分配的地址有租期的概念,在租期内服务器不会将该地址分配给其他的设备,并且在租期快结束的时候客户端必须更新租期或者释放该地址。DHCP的报文格式在《WiFi认证—分析从连接WiFi到上网的全过程(一)》 一章3.2节有介绍,本文不再赘述。DHCP续租基本流程如下:

  1. 当到了租期的一半时,客户端向服务端提交续租请求。

  2. 如果服务端同意续租,那么将会更新该地址的租期;如果拒绝将停止租用,该地址将被释放;如果服务器未响应,那么客户端将继续使用该地址。

  3. 当租期一半时服务器未响应续租请求,那么在租用期的87.5%时将会再次请求续租。

  4. 服务端如果同意延长,更新该地址的租期;如果拒绝则该地址被释放;若此时服务器仍无响应,客户端将继续使用该地址。

  5. 直到租期结束,释放该地址。

03

抓包分析DHCP报文

由于本机之前已经分配过 IP 地址并且还在租用期之内,为方便看到 DHCP 服务全过程,故使用 release 操作还原配置信息,抓包内容及相关分析如下:

由上图可知,在本机没有获得 DHCP 服务器动态分配的 IP 地址时,首先要做的就是在局域网内部发送 DHCP 广播包(Discover
)。参考图中内容,此时,客户机并不知道本机的 IP 地址、网关地址、DHCP 服务器地址。唯一所知的就是本机的 MAC 地址。当DHCP服务器接收到该广播报文时,将会返回(Offer
)报文:

由上图所示内容可知,该报文(Offer)的源地址是 192.168.43.1,且该地址是本局域网内的DHCP 服务器的 IP 地址。该报文指出可以给请求 IP 地址的客户机的 IP 地址为 192.168.43.57 。但此时客户机的仍不算获得 IP 地址。

客户机接收到 DHCP 服务器的 Offer 包之后在局域网内部做出的回应,此时发送的仍然是广播包,包内携带对 DHCP 服务器请求 IP 地址 192.168.43.57 的信息,并且意在告知本网段内部的其他 DHCP 服务器不要再发送相关 DHCP 服务报文,报文信息如下:

  DHCP 服务器接收到客户机的 Request 之后给客户机发送的确认消息,告知客户机可以使用该 IP 地址。并且在此之后,客户机将使用该地址,并且在以上的四个过程当中,均已获取包括网关 IP 地址等信息。报文信息如下:

04

小结     

本文属于分析从连接WiFi到上网的全过程的第二个章节,介绍了IP产生的背景和历史原因。重点描述了BOOTP和DHCP的原理、作用、区别和联系,并且通过WireShark重点分析了DHCP的工作原理和工作流程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值