电脑的 ip 是怎么来的呢?我又没有配置过

作者:帅地个人简介:一个热爱编程的在校生,我的世界不只有coding,还有writing。目前维护订阅号「苦逼的码农」,专注于写「算法与数据结构」,「Java」,「计算机网络」。对于我们平时上网的电脑的 ip 是如何来的呢?一种简单的方法就是我们自己来配置了

显然,这里有两种配置方式,一种是自动获取 ip 地址,一种是我们手动来设置,我相信大部分人都是通过自动获取的方式来得到 ip 的,那么问题来了,它是如何自动获得到的呢?客户端请求 ip可能很多人都知道,是通过 DHCP 服务器来获取 ip 的,那么问题来了,你要给 DHCP 服务器发报文来获取 ip,那么你知道 DHCP 服务器的 ip 是多少吗?自己客户端的源 ip 又是多少呢?现在啥也不知道,该如何发送报文呢?为了解决这个问题,客户端会发送一个广播,我们知道,广播报文是会发送局域网内的所有其他主机的,广播的目的 ip 是 255.255.255.255,目的端口是 67,为了让别人知道它是来请求一个 ip 的,我们的客户端会把 0.0.0.0 作为自己的源 ip,源端口是 68。意在告诉别人:我现在啥也没有,急需一个 ip,哪位老铁能给我提供一个 ip。

我们把这个请求 ip 的报文称之为 discover 报文。这里提醒一些,这里发送的报文都是采用 UDP 报文,而不是 TCP 报文哈,下同。DHCP响应当 DHCP 服务器收到这个报文之后,一看源地址是 0.0.0.0,就知道生意来了,知道这是一个请求 ip 的报文,DHCP 服务器就会给它提供一个 ip,包括 ip 地址,子码掩码,网关,ip 的有效期等信息。有人可能会问,只有源 ip 为 0.0.0.0 的信息,我们怎么把报文发送到它的手里呢?这不,我们每台电脑不都有 Mac 地址吗?在 discover 报文中,就会包含它的 MAC 地址了,DHCP 服务器,只需要发一个广播报文就可以了,广播报文的源ip是 DHCP  服务器自己的 ip,源端口是 67,目的地址是 255.255.255.255,目的端口是 68

我们把 DHCP 提供 ip 地址的报文称之为offer报文。客户端挑选 ip 地址我们知道,有可能不止一台 DHCP 服务器收到了 discover 请求报文,也就是说,我们的主机可能会收到多个 offer 报文,所以呢,我们的主机会选择其中一个心仪的 offer 报文来作为自己的 ip,一般是选择最先收到的 offer 报文,选择好之后,会给对应的 DHCP 服务器次发送一个 request 报文,意在告诉它,我看中了你的报文。DHCP 收到 request 报文之后,会给它回复一个 ACK 报文,并且把这个分配出去的 ip 进行登记(例如把这个 ip 标记为已使用状态)。当我们的主机收到 ACK 报文之后,就可以开始冲浪在网上冲浪了。

几点说明这里可能有人会说,如果 DHCP 服务器没有在我们所在的局域网里怎么办?这个时候,这个 discover 报文 就会通过我们的网关来进行传递,并且会把源 ip 替换成网络的 ip,源端口是 68,这里涉及到 NAT 地址到转换,不懂的可以看我之前的一篇文章。谈谈NAT:什么?全球IP和私有IP是什么鬼?DHCP 服务器收到报文之后,就可以根据源端口 68 来判断这是一个 discover 请求报文了。就会把 offer 发给网关,网关再发给我们的主机。租期在DHCP客户端的租约时间到达 1/2 时,客户端会向为它分配 IP 地址的DHCP服务器发送 request 单播报文,以进行 IP 租约的更新。如果服务器判断客户端可以继续使用这个 IP 地址,就回复 ACK 报文,通知客户端更新租约成功。如果此IP地址不能再分配给客户端,则回复 NAK 报文,通知客户端续约失败。如果客户端在租约到达 1/2 时续约失败,客户端会在租约到 7/8 时间时,广播发送 request 报文进行续约。DHCP服务器处理同首次分配 IP 地址的流程。最后这个过程中,涉及到听多种报文,为了篇幅不要太长,我有些报文没有详细说,这里为了方便大家查看,我把所有报文都总结了一下报文类型描述DiscoveDHCP客户端请求地址时,会在本地网络内以广播方式发送请求报文,这个报文成为Discover报文。OfferDHCP服务器收到Discover报文后,会构造一个Offer报文(包括各种所需要的各种),发送给用户RequestDHCP客户端可能会收到很多Offer,所以必须在这些回应中选择一个。Client通常选择第一个回应Offer报文的服务器作为自己的目标服务器,并回应一个广播Request报文,通告选择的服务器ACKDHCP服务器收到Request报文后,根据Request报文中携带的用户MAC来查找有没有相应的租约记录,如果有则发送ACK报文作为回应,通知用户可以使用分配的IP地址NAK如果DHCP服务器收到Request报文后,没有发现有相应的租约记录或者由于某些原因无法正常分配IP地址,则发送NAK报文作为回应,通知用户无法分配合适的IP地址。Release当用户不再需要使用分配IP地址时,就会主动向DHCP服务器发送Release报文,告知服务器用户不再需要分配IP地址,DHCP服务器会释放被绑定的租约。DeclineDHCP客户端收到DHCP服务器回应的ACK报文后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则发送Decline报文,通知服务器所分配的IP地址不可用。InformDHCP客户端如果需要从DHCP服务器端获取更为详细的配置信息,则发送Inform报文向服务器进行请求,服务器收到该报文后,将根据租约进行查找,找到相应的配置信息后,发送ACK报文回应DHCP客户端如果大家对计算机网络这块感兴趣的话,后续会算法和计算机网络穿插讲勒。如果有哪里说错了,欢迎指点出来!--- EOF ---

(0)

相关推荐

  • windows2003使用DHCP服务器(注意不是客户端是服务器)

    表白:接受我的膝盖,原谅我的伤害 讲解对象:windows2003使用DHCP服务器(注意不是客户端是服务器)  作者:融水公子 rsgz 首先这边我们打开所有程序. 然后打开管理工具,这个最上面就有 ...

  • 数据湾干货分享——搭建DHCP服务器的详细步骤

    什么是DHCP服务器? 指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码. 所以DHCP服务器分为以下三点: IP地址(例:192.168.1.0) ...

  • 请问电脑有ip地址,为啥还要网关地址呢?网关的ip地址是路由器的地址吗?

    请问电脑有IP地址,为啥还要网关地址呢?网关的IP地址是路由器的地址吗? ★寓乐于教,普及一下网络知识:首先了解什么是IP地址,它就是互联网协议,自从互联网诞生以后,每一个独立的设备之间可以通过网络相 ...

  • 公司电脑换ip的优势是什么?

    伴随着科技进步兴盛以及创新技术,越来越多奇特古怪的app已经踏入大伙儿的在日常生活中,尤其是在网络营销监管这些方面,很多能够 促进网络营销监管这些方面以及效率高的app也渐渐地进到大伙儿的视野.代理i ...

  • 关于Mac电脑更新IP地址的解决方法!

    关于Mac会向DHCP服务器(通常是Wi-Fi路由器)询问新的IP地址,并使用相同的地址或新的地址进行连接,具体取决于路由器提供的详细信息.接下来跟小编一起来看看具体步骤吧! 1.要找到这些设置,请单 ...

  • 电脑查看IP是否冲突的方法

    问题: 在电脑查看IP是否冲突. 解决方法: Windows系统中按win+r打开运行窗口(Mac系统则是打开终端),然后输入ARP -a. 如果在运行窗口的输出结果中找到两个具有相同IP地址的设备, ...

  • 模拟器多开换IP与电脑配置的关系

    一.一定要保证模拟器分辨率一致 不要拖动外侧边缘改变模拟器大小,模拟器分辨率可以通过 模拟器右上角设置-高级设置-分辨率设置进行调节. 接下来分享一下模拟器多开的硬件要求,因为我自己用的夜神模拟器,就 ...

  • Mac小知识——MAC电脑如何查看IP

    说说为什么今天会分享这个小知识吧! 因为自己的邮箱今天提醒我有一个账号异地登陆了,显示了一个IP,正好我不知道自己电脑的IP,就说查一下吧,然后就想着把这个小知识跟大家分享一下吧- 1⃣️打开设置 2 ...

  • 猫连接路由器路由下连七台电脑,为啥每台电脑手动设ip才有网?

    现在是用路由器联网很普遍!目前各大运营商的光猫都呗配置为路由模式,也就是光猫除了进行广电转换的工作以外,还和路由器一样的负责拨号和地址分配! 光猫和路由器的连接虽然可以有两种模式,但是一般只是用一种方 ...

  • 同一局域网手机输入电脑IP,不能访问页面,教你如何实现互相访问

    同一局域网手机输入电脑IP,不能访问页面,教你如何实现互相访问

  • 电脑实现单窗口单进程单IP的原理是什么

    什么是单窗口进程单IP技术? 单窗口流程单IP是指在计算机上运行的每个游戏窗口流程分配不同的IP进行游戏. 这项技术有什么用呢? 该技术通常用于许多方面,但最多用于工作室多开游戏. 对游戏工作室而言, ...