ip地址和子網掩碼


作者:百哥 
本期分享:系列15點到16點半-技術熱訊
感謝大家關注-百哥,請大家持續關注就可以了哦!
眾元教育技術公開課:更多認證知識
眾元教育技術交流裙:414605852

提到“地址”,我們會想到快遞,收發快遞時候,得有發件人地址和收件人地址,才能保證快遞能正確的送達目的地,比如這樣

 

 

 

ip地址其實就是互聯網上的地址,全稱Internet Protocol Address,我們在網上刷知乎啊,刷美劇啊,和師妹聊天啊,其實就是一個一個數據包在互聯網上收發的過程。

知乎有個ip,我們電腦有個ip,這篇回答就從知乎發到了電腦上。

b站有個ip,我們電腦有個ip,后浪就從b站發到了電腦上。

師妹手機有個ip,我們電腦有個ip,師妹消息總是不來,不知道為什么。

 

那么,我們電腦的ip地址是什么樣呢

 

 

 

百度一下,怎么查看ip地址,我們能看到這樣的內容

ip地址分為ipv4和ipv6,當前主流是ipv4

可以看出現在這台電腦的ip地址是192.168.11.165

 

那么這個地址是怎么來的呢,我們打開電腦就開始刷知乎刷b站和師妹聊天,並沒有設置地址呀

在我們網絡里有個“dhcp服務器”,dhcp服務器的作用就是給各個電腦(或手機)自動分配ip地址。

 

第一步,電腦開機,沒地址,會發出一個請求地址的數據包。這個數據包叫dhcp discover,是要發給dhcp服務器的,向dhcp服務器請求地址。

現在問題來了,是先有雞還是先有蛋的問題。

 

雞是由蛋孵出來的,所以得先有蛋。

蛋是雞下的,所以得先有雞。

 

互聯網上的報文必須有源地址和目標地址,所以得先有地址才能把數據包發出去。

現在要發個包給dhcp服務器,但是沒有地址,這個包怎么發出去呢?

 

雞和蛋的千古難題,無法考證

但是dhcp是這么做的

 

電腦發出的包,沒地址沒關系,就把源地址寫成0.0.0.0,所以數據包中看到這個地址,說明源主機暫時還沒有地址,但是為了遵循互聯網協議標准,先把地址寫上0.0.0.0

 

目標地址應該是dhcp服務器,但是dhcp服務器是誰也不知道呀,這里就把目標地址寫成255.255.255.255,這個特殊地址代表“廣播”,顧名思義,就是給所有人都發。

 

數據包的內容也很簡單,意思就是“請dhcp服務器回答,我需要個地址”

 

那么無關主機收到,就會丟棄這個包,因為自己不是dhcp服務器,不回答。

dhcp服務器收到,那么就會履行他的職責,給電腦分配一個地址。

 

 

 

如圖,通過抓包工具捕獲的dhcp discover包,源地址是0.0.0.0,目標地址是255.255.255.255

 

現在看dhcp工作的第二步,發offer

dhcp服務器收到請求后,會給電腦分配地址,這也是通過一個數據包返回給電腦的。電腦收到這個包,就會根據dhcp協議為自己配上地址。

 

等下,問題又來了,剛才說了電腦還沒地址,那么dhcp服務器是怎么把這個包發給電腦的的呢?

 

雖然電腦沒ip地址,但是電腦有另外一個地址,“mac地址”,也就是前面那張圖片上的“物理地址”,dhcp服務器也可以通過mac地址將數據包發給電腦,這樣電腦收到后,就會給自己配上ip地址了。

 

聽起來很復雜,既然用mac地址就可以,為什么非得配ip地址,這么麻煩

 

答案是這樣的,雖然可以用mac地址通信,但是只限於本地通信,也就是一個很小的局域網,沒辦法加入互聯網,所以也沒辦法刷知乎,看b站,和師妹聊天了。所以還是得有ip地址。

 

現在來看dhcp工作的第二步,也就是dhcp服務器給電腦發的dhcp offer包。

 

 

 

這里看到目標mac地址

 

 

 

 

 

打開offer包,會看到服務器准備給電腦分配的地址。

 

然后第三步,電腦會通過發送dhcp request包,確定使用這個地址。

服務器明明都把地址發過來了,為什么電腦還要再申請一次呢?

是因為網絡中為了可靠性,可能會部署多台dhcp服務器,這樣電腦可能會收到多個offer,到底使用哪個地址,則需要再發一個dhcp request來確認。服務器也是收到dhcp request后,才會真正的把這個地址分配出去。

 

最后一步,dhcp服務器通過ack包,真正的把地址分配給電腦

 

那么ip地址中的“子網掩碼”是做什么用的呢,配置地址時,子網掩碼是必不可少的

舉個熟悉的例子

小明是大一新生,小明的學號是05510050433

小明看到另一個學號,立即可以知道另一個同學和自己是不是同班同學。

比如好看的女生小紅05510050435是同班同學

好看的男生小藍05510030313不是同班同學

怎么看出的呢,學號前面部分數字相同就是同班同學

學號大致分為兩部分,前面部分是班級編號,后面部分是個人編號。

 

現在回到ip地址和子網掩碼

電腦(或者手機、ipad、小愛同學)都要聯網,聯網就會有ip地址,ip地址一般是自動獲取的,但是如果用手動配置的話,會發現必須填寫子網掩碼,否則是不讓確認的。

 

 

 

 

 

子網掩碼的作用,是確定ip地址所在的網段。

小明必須知道自己的班級,電腦也必須知道自己的網段。

小明學號的前9位代表班級編號,這個是學校制定的

那么ip地址的前多少位代表網段呢,這個就得看子網掩碼了。

 

ip地址分為兩部分,前面部分叫“網絡位”,類似於學號中的班級編號,只要兩個ip的網絡位相同,那么他們就是同網段。

ip地址后面的部分叫“主機位”,代表這個主機的個體編號,類似學號中老師每次點名喊的數字。

 

那么兩個ip是否同網段,要看他們的網絡位是否相同

 

192.168.1.199

255.255.255.0

這樣的掩碼,代表192.168.1.是網絡位,另一個地址只要也是192.168.1開頭,就是同網段了

 

192.168.1.199

255.255.0.0

這樣的掩碼,代表192.168.是網絡位,另一個地址只要192.168開頭就是同網段了

 

看到這里,應該已經發現規律了,子網掩碼幾個255,那ip地址的前幾段就是網絡位

 

可是實際情況往往錯綜復雜。

比如蘋果手機熱點給電腦分配的地址是這樣的

 

 

 

 

 

發現掩碼是3個255還帶個240

在實際的工程項目中,也會做類似的網絡規划,那么后面這個240又是怎么回事呢

 

這里需要把ip地址換成二進制來看,用win10 自帶的計算器可以換算,先算完再來看原理。

 

打開打算器,選擇“程序員”,輸入172,可以得到172對應的二進制,然后再得到其他幾個數的二進制。

 

 

 

 

 

172=10101100

20=00010100‬

10=00001010

8=00001000

注意,每個數字都要湊齊8位的二進制,不夠8位前面寫0

 

換算完后,ip地址172.20.10.8變成了

10101100. 00010100‬. 00001010. 00001000

 

然后再換算掩碼

255.255.255.240變成了

11111111.11111111.11111111.11110000

發現掩碼非常整齊,前面全是1后面全是0

 

那這里怎么從掩碼來得出網絡位,其實非常簡單,掩碼有多少個1,ip地址的前多少位就是網絡位,那么這個ip的網絡位就是前28位

也就是10101100. 00010100‬. 00001010. 0000

如果另一個ip的二進制,前28位也是這樣,那么就是同網段

 

當然,二進制很不友好,所以我們還可以計算出自己所在的網段的范圍

那就是網絡位固定下來,主機位從全0到全1就可以

10101100. 00010100‬. 00001010. 00000000到10101100. 00010100‬. 00001010. 00001111

換回十進制就是

172.20.10.0到172.20.10.15

所以,超過15的都不是同網段了。

 

用掩碼算了半天的網段,那么問題來了,為什么要算網段?

 

因為對電腦老說,訪問同網段的目標,和訪問不同網段的目標,采取的通信方法不一樣,他得先知道是否同網段,才能做下一步的動作。

如果目標是同網段,那么可以直接通信,直接發數據就好了。

如果目標不是同網段,那么不能直接通信,必須先交給一個中間人,也就是網關設備,由網關設備幫忙轉發。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM