成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

剛插上網線,電腦怎么知道自己的IP是什么?

網絡 通信技術
DHCP分為四個階段,分別是 Discover,Offer, Request和ACK。如果曾經連過這個網,機器會記錄你上次使用的IP,再次連接時優先使用原來的那個IP,因此只需要經歷第三第四階段。

今天這篇文章,很有意思,它來源于我曾經的一次真實面試里的其中一個小問題。當時是終面,面我的是那家公司的技術顧問,在面試前hr還讓我看了他的履歷,是一位1996年就進了麻省理工計算機系的大佬。

屬實有被震驚到,什么概念?1996年,沒記錯的話那是個用BP機和大哥大的年代?有幾個人能用上電腦?又有幾個人有這種機會能出國深造。

這是哪部爽文小說的主人公劇情?

就算放到現在,這也是非常強的事情。

我這輩子是沒希望了,也不知道我的兒子或者孫子輩有沒有機會能做到。

也就是說,這位大佬,至少領先了我兩代人。

那一天,我感受到了,那種跨越時代的碾壓感。

好了,不講騷話了,直接開始主題吧。

我們知道,如果你知道某臺電腦的IP,就可以向這個IP發起連接請求,建立連接后就可以操作收發數據。

圖片

五層網絡協議對應的消息體變化分析

要發送的數據,會在網絡層里加入IP頭。

圖片

     ip報頭

這里面最重要的是發送端和接收端的IP地址。這個IP地址就像是一個門牌號一樣,有了它,數據包就能在這個紛繁復雜的網絡世界里找到該由誰來接收這個數據包。

所以說上面的網絡通信離不開IP。

假設我有一臺新買的電腦,還沒聯網呢,這時候拿著新買的網線,插入網線口,網線插口亮起來了。

然后就可以開始用它上網了。

那么問題來了。

剛插上網線,電腦怎么知道自己的IP是什么?怎么就突然能上網了呢?

這個話題,我們從DHCP聊起吧。

DHCP是什么

插上網線之后,獲得IP的方式主要有兩種。

第一種是,自己手動在電腦里配。像下圖那樣,是macOS的一個截圖,在選擇手動配置之后,除了IP地址還需要配上子網掩碼和路由器的地址。

圖片

手動配IP

這就很不科學了,電腦又不只是賣給程序員,這幾個詞對于大部分普通人來說,比賦能抓手閉環這種黑話還要難理解。

大部分人沒事都不應該去配這玩意。

有沒有辦法可以讓這些IP信息自動獲得?

有,這就是第二種獲取IP的方式,DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)。

圖片

DHCP自動生成IP

通過DHCP,在聯網之后可以自動獲取到本機需要的IP地址,子網掩碼還有路由器地址

DHCP的工作原理

DHCP的工作原理也非常簡單。

說白了,就是向某個管IP分配的服務器,也就是DHCP服務器,申請IP地址。其實一般家里用的路由器就自帶這個功能。

整個操作流程分為4個階段。

圖片

DHCP協議

  • DHC?P Discover:在聯網時,本機由于沒有IP,也不知道DHCP服務器的IP地址是多少,所以根本不知道該向誰發起請求,于是索性選擇廣播,向本地網段內所有人發出消息,詢問"誰能給個IP用用"。
  • DHCP Offer:不是DHCP服務器的機子會忽略你的廣播消息,而DHCP服務器收到消息后,會在自己維護的一個IP池里拿出一個空閑IP,通過廣播的形式給回你的電腦。
  • DHCP Request:你的電腦在拿到IP后,再次發起廣播,就說"這個IP我要了"。
  • DHCP ACK:DHCP服務器此時再回復你一個ACK,意思是"ok的"。你就正式獲得這個IP在一段時間(比如24小時)里的使用權了。后續只要IP租約不過期,就可以一直用這個IP進行通信了。

到這里,問題來了

為什么要有第三和第四階段

大家有沒有發現,在Offer階段,其實你的機子就已經拿到了IP了,為什么還要有后面的Request和ACK呢?是不是有些多此一舉?

這是因為本地網段內,可能有不止一臺DHCP服務器,在你廣播之后,每個DHCP服務器都有可能給你發Offer。

本著先到先得的原則,你的機子一般會對第一個到的Offer響應DHCP Request,目的是為了確認offer,在你確認Offer這段時間內,DHCP服務器確認這個IP還沒被分出去,你才可以安心使用這個IP。

像不像你找工作的過程?

你海投簡歷(DHCP Discover),然后拿到了多個offer(DHCP Offer)。

這時候事情還沒完,你一般會跟HR說:"你給我兩天時間,我要跟家里人商量下"。

HR也會對你說:"那你盡快確認,我這邊還有不少候選人等著"。

之后你考慮下來覺得不錯,跟HR說要接這個Offer(DHCP Request),HR看了下這個崗位還在,才能確認讓你第二天來上班(DHCP ACK)。如果這個公司的崗位已經招到其他候選人了,第四階段的消息就會改為發DHCP NAK,意思是拒絕了你的接Offer請求。

DHCP抓包

光看原理是有些枯燥,我們可以嘗試下抓包看下數據。

在命令行里執行下面的命令,可以強行讓電腦的en0網卡重新走一遍DHCP流程。

sudo ipconfig set en0 DHCP

en0可以替換成其他網卡,比如eth0啥的。

這時候就可以抓到相關的數據包。

圖片

我們可以看到藍色的四個數據包,分別對應上面提到的四個DHCP階段。

其中第二階段中的DHCP Offer里會返回給我們需要的IP、子網掩碼、路由器地址以及DNS服務器地址。

圖片

offer階段

另外,通過抓包,我們可以發現DHCP是應用層的協議,基于傳輸層UDP協議進行數據傳輸。

圖片

那么問題又來了。

為什么DHCP用UDP,能不能改用TCP?

按道理說,UDP能做到的,TCP一般也能做到。但這次真不行。

主要原因還是因為TCP是面向連接的,而UDP是無連接的。

所謂"連接",他就只有一個發送端和一個接收端,就跟水管一樣。

而DHCP由于一開始并不知道要跟誰建立連接,所以只能通過廣播的形式發送消息,注意,小細節,廣播。

圖片

廣播尋找DHCP服務器.drawio

同樣是在本地網段內發廣播消息,UDP只需要發給255.255.255.255。它實際上并不是值某個具體的機器,而是一個特殊地址,這個地址有特殊含義,只要設了這個目的地址,就會在一定本地網段內進行廣播。

而TCP卻不同,它需要先建立連接,但實際上255.255.255.255對應的機器并不存在,因此也不能建立連接。如果同樣要做到廣播的效果,就需要先得到本地網段內所有機器的IP,然后挨個建立連接,再挨個發消息。這就很低效了。

因此DHCP選擇了UDP,而不是TCP。

為什么第二階段不是廣播,而是單播。

圖片

另外一個小細節不知道大家注意到沒,上面在提到 DHCP Offer 階段時,提到的是DHCP服務器會使用廣播的形式回復。但抓個包下來卻發現并不是廣播,而是單播。

其實,這是DHCP協議的一個小優化。原則上大家在DHCP offer階段,都用廣播,那肯定是最穩的,目標機器收到后自然就會進入第三階段DHCP Request。而非目標機器,收到后解包后發現目的機器的mac地址跟自己的不同,也會丟掉這個包。

但是問題就出在,這個非目的機器需要每次都在網卡收到包,并解完包,才發現原來這不是給它的消息,這。。。真,有被打擾到。

如果本地網段內這樣的包滿天飛,也浪費機器性能。

如果能用單播,那當然是最好的。但這時候目的機器其實并沒有IP地址,有些系統在這種情況下能收單播包,有些則認為不能收,這個跟系統的實現有關。因此,對于能收單播包的系統,會在發DHCP Discover階段設一個 Broadcast flag = 0 (unicast) 的標志位,告訴服務器,支持單播回復,于是服務器就會在DHCP Offer階段以單播的形式進行回復。

圖片

Discover要求使用單播回復

是不是每次聯網都要經歷DHCP四個階段?

只要想聯網,就需要IP,要用IP,就得走DHCP協議去分配。

但大家也發現了,DHCP第一階段和第二階段都可能會發廣播消息。對于家用電腦還好,插個網線,之后就雷打不動。但像手機這樣的移動設備,是要帶著到處跑的,坐個地鐵,進個電梯,公司里到處走走,都可能會涉及到網絡切換。

這每次都要來一個完整的四階段,各種廣播消息滿天飛,其實對網絡環境不太友好。

于是問題叒來了,是不是每次聯網都要經歷DHCP四個階段?

當然不需要。

我們會發現每次斷開wifi再打開wifi時,機子會經歷一個從沒網到有網的過程。

這時候去抓個包,會發現。

圖片

其實只發生了DHCP的第三和第四階段。這是因為機子記錄了曾經使用過 192.168.31.170這個IP,重新聯網后,會優先再次請求這個IP,這樣就省下了第一第二階段的廣播了。

另外需要注意的是,抓包圖里DHCP Request之所以出現兩次,是因為第一次Request發出后太久沒得到回應,因此重發。

DHCP分配下來的IP一定不會重復嗎?

一般來說DHCP服務器會在它維護的IP池里找到一個沒人用的IP分配給機子,

這個IP如果重復分配了,那本地網段內就會出現兩個同樣的IP,這個IP下面卻對應兩個不同的mac地址。但其他機器上的ARP緩存中卻只會記錄其中一條mac地址到IP的映射關系。

于是,數據在傳遞的過程中就會出錯。

因此本地網段內IP必須唯一。

那么DHCP分配下來的IP有沒有可能跟別的IP是重復的?

都這么問了,那肯定是可能的。

有兩個常見的情況會出現IP重復。

  • 文章開頭提到,IP是可以自己手動配的,自己配的IP是有可能跟其他DHCP分配下來的IP是相同的。解決方案也很簡單,盡量不要手動去配IP,統一走DHCP?;蛘咴贒HCP服務器里維護的IP范圍里,將這條IP剔除。
  • 一個本地網段內,是可以有多個DHCP服務器的,而他們維護的IP地址范圍是有?可能重疊的,于是就有可能將相同的IP給到不同的機子。解決方案也很簡單,修改兩臺DHCP服務器的維護的IP地址范圍,讓它們不重疊就行了。

不過吧,上面的解決方案,都需要有權限去修改DHCP服務器。

得到DHCP ACK之后立馬就能使用這個IP了嗎?

這就好像在問,拿到offer之后你是第一時間就去上班嗎?

不。

你會先告訴你的同事同學朋友,甚至會發朋友圈。

你的機子也一樣。

在得到DHCP ACK之后,機子不會立刻就用這個IP。

而是會先發三條ARP消息。

圖片

大家知道ARP消息的目的是通過IP地址去獲得mac地址。所以普通的ARP消息里,是填了IP地址,不填mac地址的。

但這三條ARP協議,比較特殊,它們叫無償ARP(Gratuitous ARP),特點是它會把IP和mac地址都填好了,而且填的還是自己的IP和mac地址。

目的有兩個。

  • 一個是為了告訴本地網段內所有機子,從現在起,xx IP地址屬于xx mac地址,讓大家記錄在ARP緩存中。
  • 另一個就是看下本地網段里有沒有其他機子也用了這個IP,如果有沖突的話,那需要重新再走一次DHCP流程。

在三次無償ARP消息之后,確認沒有沖突了,才會開始使用這個IP地址進行通信。

這種行為,實際上就跟你拿了offer之后發了這么個朋友圈沒啥區別。

而且,還連發了三條。

別罵了,圖是P的,我沒這么發過

秀offer,offer沖突了不可怕。秀對象秀沖突了才可怕。

如果你朋友圈里有這種人,答應我,刪了吧。

總結

  • 電腦插上網線,聯網后會通過DHCP協議動態申請一個IP,同時獲得子網掩碼,路由器地址等信息。
  • DHCP分為四個階段,分別是 Discover,Offer, Request和ACK。如果曾經連過這個網,機器會記錄你上次使用的IP,再次連接時優先使用原來的那個IP,因此只需要經歷第三第四階段。
  • DHCP是應用層協議,考慮到需要支持廣播功能,底層使用的是UDP協議,而不是TCP協議。
  • DHCP分配下來的IP是有可能跟某臺手動配置的IP地址重復的。
  • DHCP得到IP之后還會發3次無償ARP通告,在確認沒有沖突后開始使用這個IP。

最后給大家留個問題吧。我們上面的IP都是從DHCP服務器上申請的,在服務器返回DHCP Offer的時候,可以看到上面寫了DHCP服務器的IP。比如192.168.31.1,這明顯是個局域網內的IP,但這能說明,你的DHCP服務器一定在這個局域網里嗎?

圖片

責任編輯:姜華 來源: 小白debug
相關推薦

2013-04-08 09:55:50

光纖網絡光纖上網光纖網吧

2015-07-02 09:21:16

路由器IP地址

2011-04-13 10:06:50

網關路由器寬帶路由器

2012-07-25 09:10:23

VDI中國首個云電腦服務

2012-07-26 09:24:48

Wi-Fi聯通

2009-01-18 09:14:00

2021-08-26 21:55:38

DPU架構數據

2009-12-07 16:46:56

Windows SDK

2010-04-15 18:18:49

筆記本電腦無線上網

2019-06-05 15:20:00

MongoDBNoSQL數據庫

2018-02-07 07:28:02

網線布線雙絞線

2009-12-02 16:40:48

路由器怎么安裝

2010-08-05 10:19:28

路由器配置

2024-04-30 09:02:48

2021-03-03 09:15:12

電腦上網速度操作系統

2010-04-14 17:02:50

兩臺電腦無線上網

2019-01-17 14:35:01

2021-05-04 23:34:02

Windows 10Windows微軟

2024-10-10 16:53:53

守護線程編程

2024-08-20 08:29:55

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品麻豆日日躁夜夜躁 | 国产午夜三级一区二区三 | 一区二区在线 | 人人射人人| 亚洲 中文 欧美 日韩 在线观看 | 免费a级毛片在线播放 | 天天射网站 | 久久精品欧美电影 | 久久成人在线视频 | 国产精品国产精品国产专区不片 | 黄色免费看| 国产精品一区二区精品 | 偷拍自拍网 | 午夜电影网| av片免费 | 欧美精品在线视频 | 午夜视频在线 | 男人视频网站 | 国产日韩欧美在线播放 | 成人久久18免费网站图片 | 日本不卡一区 | 狠狠涩 | 亚洲视频中文字幕 | 免费黄色成人 | 一级女毛片 | 日韩高清一区二区 | 请别相信他免费喜剧电影在线观看 | 亚洲国产精品99久久久久久久久 | 中国美女av| 亚洲欧美综合 | 丝袜 亚洲 另类 欧美 综合 | 免费看黄色国产 | 中文字幕一区二区三区日韩精品 | 精品一区二区三区在线观看 | 精品一区二区三区在线观看国产 | 日韩免费一区二区 | 毛片一区二区 | 国产在线观看不卡一区二区三区 | 久久大全| 久久亚洲免费 | 久久久久久久国产精品视频 |