刚插上网线,电脑怎么知道自己的IP?

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

刚插上网线,电脑怎么知道自己的IP?

文章插图
要发送的数据,会在网络层里加入IP头 。
刚插上网线,电脑怎么知道自己的IP?

文章插图
这里面最重要的是发送端和接收端的IP地址 。这个IP地址就像是一个门牌号一样,有了它,数据包就能在这个纷繁复杂的网络世界里找到该由谁来接收这个数据包 。
所以说上面的网络通信离不开IP 。
假设我有一台新买的电脑,还没联网呢,这时候拿着新买的网线,插入网线口,网线插口亮起来了 。
然后就可以开始用它上网了 。
那么问题来了 。
刚插上网线,电脑怎么知道自己的IP是什么?怎么就突然能上网了呢?
这个话题,我们从DHCP聊起吧 。
DHCP是什么
插上网线之后,获得IP的方式主要有两种 。
第一种是,自己手动在电脑里配 。像下图那样,是macOS的一个截图,在选择手动配置之后,除了IP地址还需要配上子网掩码和路由器的地址 。
刚插上网线,电脑怎么知道自己的IP?

文章插图
这就很不科学了,电脑又不只是卖给程序员,这几个词对于大部分普通人来说,比赋能抓手闭环这种黑话还要难理解 。
大部分人没事都不应该去配这玩意 。
有没有办法可以让这些IP信息自动获得?
有,这就是第二种获取IP的方式,DHCP( Host,动态主机配置协议) 。
刚插上网线,电脑怎么知道自己的IP?

文章插图
通过DHCP,在联网之后可以自动获取到本机需要的IP地址,子网掩码还有路由器地址 。
DHCP的工作原理
DHCP的工作原理也非常简单 。
说白了,就是向某个管IP分配的服务器,也就是DHCP服务器,申请IP地址 。其实一般家里用的路由器就自带这个功能 。
整个操作流程分为4个阶段 。
刚插上网线,电脑怎么知道自己的IP?

文章插图
到这里,问题来了
为什么要有第三和第四阶段
大家有没有发现,在Offer阶段,其实你的机子就已经拿到了IP了,为什么还要有后面的和ACK呢?是不是有些多此一举?
这是因为本地网段内,可能有不止一台DHCP服务器,在你广播之后,每个DHCP服务器都有可能给你发Offer 。
本着先到先得的原则,你的机子一般会对第一个到的Offer响应DHCP ,目的是为了确认offer,在你确认Offer这段时间内,DHCP服务器确认这个IP还没被分出去,你才可以安心使用这个IP 。
像不像你找工作的过程?
你海投简历(DHCP ),然后拿到了多个offer(DHCP Offer) 。
这时候事情还没完,你一般会跟HR说:"你给我两天时间,我要跟家里人商量下" 。
刚插上网线,电脑怎么知道自己的IP?

文章插图
HR也会对你说:"那你尽快确认,我这边还有不少候选人等着" 。
之后你考虑下来觉得不错,跟HR说要接这个Offer(DHCP ),HR看了下这个岗位还在,才能确认让你第二天来上班(DHCP ACK) 。如果这个公司的岗位已经招到其他候选人了,第四阶段的消息就会改为发DHCP NAK,意思是拒绝了你的接Offer请求 。
DHCP抓包
光看原理是有些枯燥,我们可以尝试下抓包看下数据 。
【刚插上网线,电脑怎么知道自己的IP?】在命令行里执行下面的命令,可以强行让电脑的en0网卡重新走一遍DHCP流程 。
sudo ipconfig set en0 DHCP复制代码