刚插上网线,电脑怎么知道自己的ip是什么-三牛注册

刚插上网线,电脑怎么知道自己的ip是什么-三牛注册

来源:it之家2022-12-25 13:11

真的震惊了,什么概念1996年,如果我没记错的话,那是个用bp机和手机的年代有多少人会使用电脑有几个人有这个出国深造的机会

刚插上网线,电脑怎么知道自己的ip是什么

这部小说的英雄情节是什么。

即使是现在,这也是一件很强烈的事情。

我这辈子没希望了,也不知道我的儿子或者孙子们还有没有机会做。

换句话说,这个大人物至少比我领先两代。

那一天,我感受到了,那种跨时代的碾压感。

好了,废话不多说,直接开始正题。

我们知道,如果你知道一台电脑的ip,就可以向这个ip发起连接请求,连接建立后,就可以操作收发数据了。

五层网络协议对应的消息体变化分析

要发送的数据将在网络层添加ip报头。

ip报头

这里最重要的是发送方和接收方的ip地址这个ip地址就像门牌号有了它,包就能在这个复杂的网络世界里找到谁应该收到包

所以上面的网络通信离不开ip。

假设我有一台新买的电脑,但是它还没有联网这时候我拿着新买的网线插在网线口,网线插座亮了

然后就可以开始用它上网了。

那么问题来了。

刚插上网线,电脑怎么知道自己的ip是什么怎么会突然上网

从dhcp说起这个话题吧。

什么是dhcp。

插上网线后,获取ip主要有两种方式。

第一种是在电脑中手动匹配如下图所示,是macos的截图选择手动配置后,除ip地址外,还需要添加路由器的子网掩码和地址

手动ip分配

这是非常不科学的电脑不只是卖给程序员对于大多数普通人来说,这些词甚至比赋能人抓闭环的俚语更难理解

大部分人没事就不应该去配这种东西。

有什么方法可以自动获取这些ip信息。

是的,这是第二种获取ip的方式,dhcp。

通过dhcp自动生成ip

通过dhcp,可以在联网后自动获取本机所需的ip地址,子网掩码和路由器地址。

dhcp的工作原理

dhcp的工作原理也很简单。

说白了就是向管理ip分配的服务器,也就是dhcp服务器,申请一个ip地址其实家里用的路由器一般都自带这个功能

整个操作过程分为四个阶段。

dhcp协议

dhcp discover:联网时,这台电脑没有ip,不知道dhcp服务器的ip地址,所以不知道该向谁请求,只是选择广播,向本地网段中的每个人发送消息,询问谁可以使用ip。

dhcp提供:不是dhcp服务器的计算机将忽略您的广播消息dhcp服务器收到消息后,会在自己维护的一个ip池中拿出一个空闲的ip,以广播的形式回馈给你的电脑

dhcp请求:你的电脑拿到ip后,会再次广播说我要这个ip。

dhcp ack:dhcp服务器将在此时用另一个ack回复您,这意味着ok你将正式获得这个ip一段时间的使用权只要后续的ip租约没有到期,就可以一直使用这个ip进行通信

问题来了。

为什么是第三和第四阶段。

有没有注意到,在offer阶段,你的电脑已经拿到ip了,为什么还需要下面的request和ack不是没必要吗

这是因为本地网段中可能有多个dhcp服务器广播后,每个dhcp服务器可能会向您发送一个报价

根据先到先得的原则,您的计算机通常会对第一个要约的dhcp请求做出响应,以便确认要约在你确认报价的这段时间里,dhcp服务器会确认这个ip没有被分配,你可以安心使用这个ip

是不是像你的求职过程。

你投了简历,然后得到了多个offer 。

这个时候,事情还没完你一般会对hr说:你给我两天时间,我和家人商量一下

hr也会对你说:那请你尽快确认,这里还有很多应聘者等着呢。

你想了想,觉得不错,就告诉hr接受这个offerhr看到这个职位还在,第二天就可以确认你来上班了如果该公司的职位已经招聘了其他候选人,第四阶段消息将改为发送dhcp nak,这意味着您的聘用请求已被拒绝

dhcp数据包捕获

光看原理有点无聊我们可以试着抓一个包看看数据

在命令行执行下面的命令,可以强制电脑的en0网卡重新进行dhcp进程。

sudoipconfigseten0dhcp

en0可以换成其他网卡,比如eth0什么的。

这时就可以捕捉到相关的数据包。

我们可以看到四个蓝色的数据包,它们对应于上面提到的四个dhcp阶段。

在第二阶段,dhcp报价将返回我们需要的ip,子网掩码,路由器地址和dns服务器地址。

报价阶段

另外,通过抓包可以发现,dhcp是应用层的协议,数据传输是基于传输层的udp协议。

那么问题又来了。

dhcp为什么要用udp它能用tcp代替吗

原则上udp能做到的,tcp一般都能做到但这次不是

主要原因是tcp是面向连接的,而udp是无连接的。

通过连接,他只有发送者和接收者,就像水管一样。

但是dhcp一开始不知道和谁连接,只能以广播的形式发送消息,笔记,小细节,广播。

dhcp服务器的广播。绘图

同样广播消息在本地网段发送,udp只需要发送到255.255.255.255其实并不是值一个具体的机器,而是一个特殊的地址,有着特殊的意义只要设置了这个目的地址,就会在某个本地网段进行广播

而tcp则需要先建立连接,但实际上255.255.255.255对应的机器并不存在,所以无法建立连接想要达到同样的广播效果,需要先获取本地网段内所有机器的ip,然后逐个建立连接,再逐个发送消息这是非常低效的

所以dhcp选择了udp而不是tcp。

为什么第二阶段不是广播,而是单播。

不知道大家有没有注意到另外一个小细节上面提到dhcp offer阶段时,提到dhcp服务器会以广播的形式回复但是当我抢到一个包的时候,发现不是广播,而是单播

其实这是对dhcp协议的一个小优化原则上大家在dhcp offer阶段用广播,肯定是最稳定的目标机收到后,自然会进入第三阶段dhcp请求非目标机,在接收到数据包并解包后,发现目标机的mac地址与自己的不同,也会将数据包丢弃

但问题在于,这个非目的机每次都需要接收网卡里的包,解包,才发现这不是给它的消息真的,我很不安

如果这样的数据包在本地网段上满天飞,也会浪费机器性能。

如果可以用单播,那当然是最好的但此时,目的机器实际上没有ip地址在这种情况下,一些系统可以接收单播数据包,而其他系统则认为不能这和制度的执行有关所以对于可以接收单播包的系统,在dhcp discover阶段会设置broadcast flag = 0的标志位告诉服务器支持单播回复,所以在dhcp offer阶段服务器会以单播的形式回复

发现需要单播回复是不是每次上网都要经过dhcp的四个阶段

只要你想连接互联网,你就需要ip如果要用ip,就得用dhcp协议来分配

可是,也发现dhcp的第一和第二阶段都可以发送广播消息家用电脑,插个网线,然后就不行了但是,像手机这样的移动设备是要随身携带的坐地铁,进电梯,在公司里走来走去,都可能涉及到网络切换

每次到了完整的四个阶段,各种播报新闻满天飞,其实对网络环境不太友好。

那么问题来了,每次上网都要经历dhcp的四个阶段吗。

当然不是。

我们会发现,每次wifi断开后再打开,电脑都会经历一个从无网到有网的过程。

这时候抓个包,你会发现。

实际上只发生了dhcp的第三和第四阶段这是因为计算机记录它使用了192.168.31.170的ip重新连接后,它会优先再次请求这个ip,这样就省去了播出的第一,第二阶段

另外需要注意的是,dhcp请求在数据包捕获图中出现了两次,因为第一次请求发送时间太长没有响应,所以再次发送。

dhcp分配的ip不会重复吗。

一般来说,dhcp服务器会在其维护的ip池中找到一个未使用的ip,并将其分配给计算机,

如果这个ip被重复分配,那么本地网段中会有两个相同的ip,但是这个ip下有两个不同的mac地址而其他机器上的arp缓存只记录了一个mac地址和ip的映射关系

这样一来,数据在传输的过程中就会出错。

因此,本地网段中的ip必须是唯一的。

那么dhcp分配的ip有没有可能和其他ip重复。

毕竟问题,肯定是有可能的。

出现ip重复有两种常见情况。

文章开头提到ip可以自己手动分配,自己分配的ip可能和其他dhcp分配的一样解决方法也很简单尽量不要手动分配ip,采用dhcp或者从dhcp服务器维护的ip范围中删除此ip

一个本地网段中可以有多个dhcp服务器,它们维护的ip地址范围可能会重叠,因此有可能将同一个ip赋予不同的计算机三牛注册的解决方案也很简单,只需修改两台dhcp服务器维护的ip地址范围,使它们不重叠

但是,以上所有三牛注册的解决方案都需要修改dhcp服务器的权限。

得到dhcp ack后可以立即使用这个ip吗。

这就好比问,你一拿到offer就去上班了吗。

号码

你会先告诉你的同事,同学,朋友,甚至发朋友圈。

你的电脑也是。

得到dhcp ack后,计算机不会立即使用这个ip。

相反,将首先发送三条arp消息。

大家都知道arp报文的目的是通过ip地址获取mac地址所以在普通的arp报文中,ip地址填了,mac地址没填

但是这三个arp协议比较特殊它们被称为无偿arp,其特点是会同时填写ip和mac地址,并填写自己的ip和mac地址

有两个目的。

一种是告诉本地网段内的所有电脑,从现在开始,xx ip地址属于xx mac地址,这样大家都可以记录在arp缓存中。

另一个是看本地网段内的其他电脑是否也使用过这个ip如果有冲突,您需要再次经历dhcp过程

三次免费arp报文后,确认没有冲突,会使用这个ip地址进行通信。

这种行为其实和你拿了offer之后发这样的朋友圈没什么区别。

而且连续发了三篇。

别骂了,图是p的,我没这么发过。

展示要约,要约冲突并不可怕当对象显示冲突时,这是很可怕的

如果你的朋友圈里有这样的人,答应我删掉。

摘要

电脑插上网线,联网后会通过dhcp协议动态申请一个ip,同时获取子网掩码,路由器地址等信息。

dhcp分为四个阶段,即发现,提供,请求和确认如果你曾经连接过这个网络,机器会记录你上次使用的ip再连接的时候会优先考虑原ip,所以只需要经过第三第四阶段

dhcp是应用层协议考虑到需要支持广播功能,底层使用udp协议代替tcp协议

dhcp分配的ip可能与手动配置的ip地址重复。

从dhcp获取ip后,会发送三次免费arp公告,确认没有冲突后开始使用这个ip。

让我们留给你最后一个问题以上ip是从dhcp服务器申请的当服务器返回dhcp offer时,可以看到上面写着dhcp服务器的ip比如192.168.31.1,明明是一个局域网内的ip,但这就意味着你的dhcp服务器一定在这个局域网内吗

参考数据

图解tcpip

关键词:

责任编辑:笑笑

三牛注册的版权与免责声明:

1 本网注明“来源:×××”(非中国商业周刊网)的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,本网不承担此类稿件侵权行为的连带责任。

2 在本网的新闻页面或bbs上进行跟帖或发表言论者,文责自负。

3 相关信息并未经过本网站证实,不对您构成任何投资建议,据此操作,风险自担。

4 如涉及作品内容、三牛注册的版权等其它问题,请在30日内同本网联系。