重學計算機網絡(二) - 曾記否,查IP地址

先獻上幾個梗

  • 1.1.1.1 不是測試用的,原來一直沒分配,現在被用來做一個DNS了,宣傳是比谷歌等公司的dns服務

更保護用戶隱私。

  • IP地址255.255.255.255,代表有限廣播,它的目標是網絡中的所有主機。
  • IP地址0.0.0.0,通常代表未知的源主機。當主機採用DHCP動態獲取IP地址而無法獲得合法IP地址時,會用IP地址0.0.0.0來表示源主機IP地址未知。
  • NID不能以數字127開頭。NID 127被保留給內部回送函數,作爲本機循環測試使用。

例如,使用命令ping 127.0.0.1測試TCP/IP協議棧是否正確安裝。在路由器中,同樣支持循環測試地址的使用。1 查ip

  • Windows - ipconfig
  • Linux上- ifconfig

還有--- ip addr

ifconfig & ip addr的區別

net-tools起源於BSD,自2001年起,Linux社區已經對其停止維護,而iproute2旨在取代net-tools,並提供了一些新功能。一些Linux發行版已經停止支持net-tools,只支持iproute2。

net-tools通過procfs(/proc)和ioctl系統調用去訪問和改變內核網絡配置,而iproute2則通過netlink套接字接口與內核通訊。

net-tools中工具的名字比較雜亂,而iproute2則相對整齊和直觀,基本是ip命令加後面的子命令。

雖然取代意圖很明顯,但是這麼多年過去了,net-tool依然還在被廣泛使用,最好還是兩套命令都掌握吧。

想象你登錄進入一個非常小的Linux系統,發現既沒有_ifconfig_命令,也沒有_ip addr_命令,

是不是感覺這個系統沒法用?

可以自行安裝net-tools和iproute2這兩個工具

  • 運行ip addr。不出意外,應該會輸出下面的內容

該命令顯示這臺機器上所有的網卡

大部分的網卡都有一個IP地址

IP地址是一個網卡在網絡世界的通訊地址,相當於我們現實世界的門牌號碼

既然是門牌號,不能大家都一樣,不然就會衝突,快遞就找不到地方了

所以,有時候咱們的電腦彈出網絡地址衝突,出現上不去網的情況,多半是IP地址衝突

如上輸出的結果,192.168.10.208就是一個IP地址

地址被點分隔爲四個部分,每個部分8bit,總共32位

這樣產生的IP地址的數量很快就不夠用了

於是就有了IPv6,也就是上面輸出結果裏面inet6 fe80::...

這個有128位,現在看來是夠夠的

本來32位的IP地址就不夠,還被分成了5類。現在想想,當時分配地址的時候,真是太奢侈了

在網絡地址中,至少在當時設計的時候,對於A、B、 C類主要分兩部分

  • 前面一部分是網絡號
  • 後面一部分是主機號

這很好理解,大家都是六單元1001號

我是小區A的六單元1001號

而你是小區B的六單元1001號。

  • 下面這個表格,詳細地展示了A、B、C三類地址所能包含的主機的數量


這裏面有個尷尬的事情,就是C類地址能包含的最大主機數量實在太少了,只有254個
當時設計的時候恐怕沒想到,現在估計一個網吧都不夠用吧
而B類地址能包含的最大主機數量又太多了。6萬多臺機器放在一個網絡下面,一般的企業基本達不到這個規模,閒着的地址就是浪費。

2 無類型域間選路(CIDR)

這打破了原來設計的幾類地址的做法,將32位的IP地址一分爲二

  • 前面是網絡號
  • 後面是主機號

10.100.122.2/24,這個IP地址中有一個斜槓,斜槓後面有個數字24

這種地址表示形式,就是CIDR

後面24的意32位中前24是網絡號,後8位是主機號

伴隨着CIDR存在的

  • 一個是廣播地址

10.100.122.255 如果發送這個地址,所有10.100.122網絡裏面的機器都可以收到

  • 另一個是子網掩碼

255.255.255.0

將子網掩碼和IP地址進行AND計算,就可得到網絡號

  • 前面三個255,轉成二進制都是1

1和任何數值取AND,都是原來數值,因而前三個數不變,爲10.100.122

  • 後面一個0,轉換成二進制是0

0和任何數值取AND,都是0,因而最後一個數變爲0,合起來就是10.100.122.0

3 公/私有IP地址

日常工作,幾乎不用劃分A類、B類或者C類,很多人就忘記了這個分類,只記得CIDR

但是有一點還是要注意的,就是公有IP地址和私有IP地址

上面的表格。表格最右列是私有IP地址段

平時看到的數據中心裏,辦公室/家/學校的IP地址,一般都是私有IP地址段

因爲這些地址允許組織內部的IT人員自己管理、分配,而且可重複

因此,你學校的某個私有IP地址段和我學校的可以是一樣的。

這就像每個小區有自己的樓編號和門牌號,你們小區可以叫6棟,我們小區也叫6棟,沒有任何問題
但是一旦出了小區,就需要使用公有IP地址。就像人民路888號,是國家統一分配的,不能兩個小區都叫人民路888號。

公有IP地址有個組織統一分配,你需要去買

如果你搭建一個網站,給你學校的人使用,讓你們學校的IT人員給你一個IP地址就行

但是假如你要做一個類似網易163這樣的網站,就需要有公有IP地址,這樣全世界的人才能訪問。

表格中的192.168.0.x是最常用的私有IP地址

你家裏有Wi-Fi,對應就會有一個IP地址。一般你家裏地上網設備不會超過256個,所以/24基本就夠了

有時候我們也能見到/16的CIDR,這兩種是最常見的,也是最容易理解的。

不需要將十進制轉換爲二進制32位,就能明顯看出192.168.0是網絡號,後面是主機號

而整個網絡裏面的第一個地址192.168.0.1,往往就是你這個私有網絡的出口地址

例如,你家裏的電腦連接Wi-Fi,Wi-Fi路由器的地址就是192.168.0.1

而192.168.0.255就是廣播地址。一旦發送這個地址,整個192.168.0網絡裏面的所有機器都能收到。

但是也不總都是這樣的情況。因此,其他情況往往就會很難理解,還容易出錯。

4 一個容易“犯錯”的CIDR

我們來看16.158.165.91/22這個CIDR

求一下這個網絡的第一個地址、子網掩碼和廣播地址

你要是上來就寫16.158.165.1,那就大錯特錯!!!

/22不是8的整數倍,不好辦,只能先變成二進制來看

  • 16.158的部分不會動,它佔了前16位
  • 中間的165,變爲二進制爲‭10100101‬。除了前面的16位,還剩6位。所以,這8位中前6位是網絡號,16.158.<101001>,而<01>.91是機器號。

第一個地址是16.158.<101001><00>.1,即16.158.164.1

子網掩碼是255.255.<111111><00>.0,即255.255.252.0

廣播地址爲16.158.<101001><11>.255,即16.158.167.255。

D類是組播地址

使用這一類地址,屬於某個組的機器都能收到

這有點類似在公司裏面大家都加入了一個郵件組。發送郵件,加入這個組的都能收到

在IP地址的後面有個scope

  • 對於eth0這張網卡來講,是global,說明這張網卡是可以對外的,可以接收來自各個地方的包
  • 對於lo來講,是host,說明僅可以供本機相互通信。

lo全稱是loopback,又稱環回接口,往往會被分配到127.0.0.1這個地址
這個地址用於本機通信,經過內核處理後直接返回,不會在任何網絡中出現。

5 MAC地址

在IP地址的上一行是link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff

這個被稱爲MAC地址

是一個網卡的物理地址,用十六進制,6個byte表示

MAC地址號稱全局唯一,不會有兩個網卡有相同的MAC地址,而且網卡自生產出來,就帶着這個地址

很多人看到這裏就會想,既然這樣,整個互聯網的通信,全部用MAC地址好了,只要知道了對方的MAC地址,就可以把信息傳過去。

這樣當然是不行的

一個網絡包要從一個地方傳到另一個地方,除了要有確定的地址,還需要有定位功能

而有門牌號碼屬性的IP地址,纔是有遠程定位功能

例如,你去XX市XX路XX號X樓X層找XX,你在路上問路,可能被問的人不知道X樓是哪個,但是可以給你指網商路怎麼去
但是如果你問一個人,你知道這個身份證號的人在哪裏嗎?可想而知,沒有人知道。

MAC地址更像是身份證,是一個唯一的標識

它的唯一性設計是爲了組網的時候,不同的網卡放在一個網絡裏面的時候,可以不用擔心衝突

從硬件角度,保證不同的網卡有不同的標識。

MAC地址是有一定定位功能的,只不過範圍非常有限

你可以根據IP地址,找到XX市XX路XX號X樓X層,但是依然找不到我,你就可以靠吼了,大聲喊身份證XXXX的是哪位?我聽到了,我就會站起來說,是我啊
但是如果你在上海,到處喊身份證XXXX的是哪位,我不在現場,當然不會回答,因爲我在杭州不在上海。

所以,MAC地址的通信範圍比較小,侷限在一個子網裏面

例如,從192.168.0.2/24訪問192.168.0.3/24是可以用MAC地址的

一旦跨子網,即從192.168.0.2/24到192.168.1.2/24,MAC地址就不行了,需要IP地址起作用了

6 網絡設備的狀態標識

<BROADCAST,MULTICAST,UP,LOWER_UP>net_device flags,網絡設備的狀態標識

  • UP

網卡處於啓動的狀態

  • BROADCAST

網卡有廣播地址,可以發送廣播包

  • MULTICAST

網卡可以發送多播包

  • LOWER_UP

L1是啓動的,也即網線插着呢

  • MTU1500

最大傳輸單元MTU爲1500,這是以太網的默認值。

網絡包是層層封裝的

MTU是二層MAC層的概念。MAC層有MAC的頭,以太網規定連MAC頭帶正文合起來,不允許超過1500個字節。正文裏面有IP的頭、TCP的頭、HTTP的頭。如果放不下,就需要分片來傳輸。

  • qdisc pfifo_fast (queueing discipline,排隊規則)

內核如果需要通過某個網絡接口發送數據包,它都需要按照爲這個接口配置的qdisc(排隊規則)把數據包加入隊列。

最簡單的qdisc是pfifo,它不對進入的數據包做任何的處理,數據包採用先入先出的方式通過隊列

pfifo_fast稍微複雜一些,它的隊列包括三個波段(band)。在每個波段裏面,使用先進先出規則。

三個波段(band)的優先級也不相同。band 0的優先級最高,band 2的最低。如果band 0裏面有數據包,系統就不會處理band 1裏面的數據包,band 1和band 2之間也是一樣。

數據包是按照服務類型(Type of Service,TOS) 被分配到三個波段(band)裏面的

TOS是IP頭裏面的一個字段,代表了當前的包是高優先級的,還是低優先級的。

隊列是個好東西,後面我們講雲計算中的網絡的時候,會有很多用戶共享一個網絡出口的情況,這個時候如何排隊,每個隊列有多粗,隊列處理速度應該怎麼提升,我都會詳細爲你講解。

7 總結

  • IP是地址,有定位功能;MAC是身份證,無定位功能
  • CIDR可以用來判斷是不是本地人
  • IP分公有的IP和私有的IP

參考

  • 趣談網絡協議
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章