1. 程式人生 > >【網路協議】筆記三 | ifconfig:最熟悉又陌生的命令列

【網路協議】筆記三 | ifconfig:最熟悉又陌生的命令列

知識點

  • 檢視IP地址
  • IP地址五大類
  • CIDR
  • 私有與公有地址

怎麼檢視IP地址?

通常Windows是ipconfig,linux是ifconfig,而linux還可以使用ip addr檢視

例如執行ip addr

root@test:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1
/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff inet 10.100.122.2/24 brd 10.100.122.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80
::f816:3eff:fec7:7975/64 scope link valid_lft forever preferred_lft forever

IP 地址是一個網絡卡在網路世界的通訊地址,相當於我們現實世界的門牌號碼。
既然是門牌號碼,就不能一樣起衝突,好比大家都是六單元1001號,那快遞就找不到地方了。
如上輸出的結果,10.100.122.2 就是一個 IP 地址。這個地址被點分隔為四個部分,每個部分 8 個 bit,所以 IP 地址總共是 32 位。但其實根本不夠用,於是就有了IPv6地址,也就是上面輸出結果裡面 inet6 fe80::f816:3eff:fec7:7975/64,這個有 128 ,而位前面說32位的是IPv4


本來IPv4地址就不夠,還被分成5大類

IP地址5大類

網路號 :用於識別主機所在的網路; 主機號 :用於識別該網路中的主機。

  • A類,保留給政府機構
  • B類,分配給中等規模的公司
  • C類,分配給任何需要的人
  • D類,用於組播
  • E類,用於實驗,各類可容納的地址數目不同

在網路地址中,至少在當時設計的時候,對於 A、B、 C 類主要分兩部分,前面一部分是網路號,後面一部分是主機號。這很好理解,大家都是六單元 1001 號,我是小區 A 的六單元 1001 號,而你是小區 B 的六單元 1001 號。

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

這裡拿C類地址說明,C類地址主機號是8位,也就2的8次方應該是256個主機,但能連卻只有254,這是因為還有一個是廣播地址,一個是路由地址,所以少了2個!比如192.168.0.255用於192.168.0.段的廣播了,而192.168.0.0分配成你的路由器地址了,所以機子少了2個。
但C類的主機太少,而D類的太多,於是就有了現在折中的CIDR

無型別域間選路(CIDR)

特點

  • CIDR主要是為了更有效分配和管理IPv4地址,CIDR使IP地址又回到無分類的兩級編碼。記法:IP地址::={<<網路字首>,<<主機號>}。CIDR還使用“斜線記法”即在IP地址後面加上“/”然後寫網路字首所佔的位數。
  • CIDR把網路字首都相同的連續IP地址組成一個“CIDR地址塊”,即強化路由聚合(構成超網)。

伴隨著 CIDR 存在的,一個是廣播地址,10.100.122.255。如果傳送這個地址,所有10.100.122 網路裡面的機器都可以收到。
另一個是子網掩碼 255.255.255.0。

A類的預設子網掩碼 255.0.0.0 
B類的預設子網掩碼 255.255.0.0 
C類的預設子網掩碼 255.255.255.0 

IP地址和子網掩碼都轉換為二進位制做邏輯與運算的結果為本網段的網路號,是區分不同網段的方法

例:
192.168.1.1(11000000.10101000.00000001.00000001)
255.255.255.0(11111111.11111111.11111111.00000000)
兩個做與運算:
11000000.10101000.00000001.00000000(192.168.1.0)
即192.168.1.0為本網段的網路號

公有 IP 地址和私有 IP 地址

IP地址由IANA(Internet地址分配機構)管理和分配,任何一個IP地址要能夠在Internet上使用就必須由IANA分配,IANA 分配的能夠在Internet上正常使用的IP地址稱之為公共IP地址;IANA保留了一部份IP地址沒有分配給任何機構和個人,這部份IP地址不能在 Internet上使用,此類IP地址就稱之為私有IP地址。為什麼私有IP地址不能在Internet上使用呢?因為Internet上沒有私有IP地 址的路由。

我們繼續看上面的表格。表格最右列是私有 IP 地址段。平時我們看到的資料中心裡,辦公室、家裡或學校的 IP 地址,一般都是私有 IP 地址段。因為這些地址允許組織內部的 IT 人員自己管理、自己分配,而且可以重複。因此,你學校的某個私有 IP 地址段和我學校的可以是一樣的。
這就像每個小區有自己的樓編號和門牌號,你們小區可以叫 6 棟,我們小區也叫 6 棟,沒有任何問題。但是一旦出了小區,就需要使用公有 IP 地址。就像人民路 888 號,是國家統一分配的,不能兩個小區都叫人民路 888 號。

如何得出網路號、掩碼、廣播地址?

例如CIDR 10.100.122.2/24,後面 24 的意思是,32 位中,前 24 位是網路號,後 8 位是主機號;32位子網掩碼前24位是1,後8位是0。

  • 由子網掩碼和IP地址的進行二進位制“與”運算,算出網路地址;
  • 網路地址二進位制後連續的0棟變成1就是廣播地址;
  • 網路地址+1就是第一個主機二進位制地址,廣播低價-1即為最後一個主機地址
  • 可用主機的數量=2^二進位制位數的主機-2
  • 減2是因為主機不包括網路地址和廣播地址。

繼續瞭解ip addr

在 IP 地址的後面有個 scope,對於 eth0 這張網絡卡來講,是 global,說明這張網絡卡是可以對外的,可以接收來自各個地方的包。對於 lo 來講,是 host,說明這張網絡卡僅僅可以供本機相互通訊。
lo 全稱是loopback,又稱環回介面,往往會被分配到 127.0.0.1 這個地址。這個地址用於本機通訊,經過核心處理後直接返回,不會在任何網路中出現。

MAC地址

在 IP 地址的上一行是 link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff,這個被稱為MAC地址,是一個網絡卡的實體地址,用十六進位制,6 個 byte 表示。

網路裝置的狀態標識

解析完了 MAC 地址,我們再來看 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 是什麼意思呢?qdisc 全稱是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 頭裡面的一個欄位,代表了當前的包是高優先順序的,還是低優先順序的。

知識覆盤

IP地址五大類作用於何處?

A類保留給政府機構,B類分配給中等規模的公司,C類分配給任何需要的人,D類用於組播,E類用於實驗,各類可容納的地址數目不同。

IP設計時犯的錯誤?

低估了未來網路的發展,32位地址不夠用。於是有了現在IPv6(128位) 分類錯誤。分成了5類。C類太少,B類太多。C類254個,網路都不夠;D類6萬多,給企業都太多。

那後來者如何彌補IP設計者犯的錯誤呢?

CIDR,無型別域間選路。
打破原來幾類地址設計的做法,將32位IP地址一分二,前者網路號,後者主機號。 如何分呢?
例子:10.100.122.2/24 前24位是網路號,那麼後8位就是主機號。 那如何用? 如傳送行資訊給 10.100.122.255 所有以 10.100.122… 開頭的機器都能收到。
於是有了兩個概念:
廣播地址:10.100.122.255 子網掩碼:255.255.255.0。

每一個城市都有人民廣場,IP設計是如何解決的?

公有IP地址和私有IP地址
搭建世界人民都可以訪問的網站,需要共有IP地址 搭建只有學校同學使用餓的網站,只要私有IP地址
例子1: Wi-Fi 192.168.0.x 是最常用的私有 IP 地址 192.168.0 是網路號 192.168.0.1,往往就是你這個私有網路的出口地址 192.168.0.255 就是廣播地址。一旦傳送這個地址,整個 192.168.0 網路裡面的所有機器都能收到。

如何理解MAC地址?

IP是地址,有定位功能;Mac就是身份證,唯一識別

IP地址scope是什麼意思?

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

lo是什麼意思?

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

BROADCAST,MULTICAST,UP,LOWER_UP > 是幹什麼的?

  • net_device flags,網路裝置的狀態標識
  • UP 表示網絡卡處於啟動的狀態
  • BROADCAST 表示這個網絡卡有廣播地址,可以傳送廣播包
  • MULTICAST 表示網絡卡可以傳送多播包
  • LOWER_UP 表示 L1 是啟動的,也即網線插著

MTU1500 是指什麼意思呢?是哪一層的概念?

  • 最大傳輸單元 MTU 為 1500,這是乙太網的預設值。

  • MTU 是二層 MAC 層的概念。

  • MAC 層有 MAC 的頭,乙太網規定連 MAC 頭帶正文合起來,不允許超過 1500 個位元組。

  • qdisc pfifo_fast 是什麼意思呢?
    排隊規則。規定資料包如何進出的。有pfifo, pfifo_fast.

額外知識

一個C類地址最大能表示256個IP地址,為什麼最多能連254臺主機?

因為存在廣播地址網路地址(不可用)

如何得出網路地址、廣播地址?

  • 子網掩碼和IP地址的進行二進位制“與”運算,得出出網路地址
  • 網路地址二進位制後連續的0棟變成1就是廣播地址

如何計運算元網數、主機數?

  • 子網數=2^(實際網路號位數 – 地址型別網路號位數)
  • 主機數=2^主機號

為什麼 子網掩碼 必須由連續的 1 和 0 組成?

小結

  • 可以使用ifconfig或ip addr檢視地址
  • IP地址分為五大類,後使用CIDR重構規則,以解決地址耗盡
  • CIDR聚合多個子網地址合成一個超網地址以減少核心路由器運載,使能夠更自由的分配主機數
  • 根據子網掩碼可以得出IP地址的網路號和主機號,在CIDR中還能得出網路地址、廣播地址、子網數和主機數等
  • scope表示一個範圍,它是ip地址的屬性,後面要是global表示該網絡卡對外通訊,host對內通訊