3(計算機網絡)ifconfig:最熟悉又陌生的命令行

當面試聽到這個問題的時候琉雳,面試者常常會覺得走錯了房間。我面試的是技術崗位啊友瘤,怎么問這么簡單的問題咐吼?

的確,即便沒有專業(yè)學過計算機的人商佑,只要倒騰過電腦锯茄,重裝過系統(tǒng),大多也會知道這個問題的答案:在 Windows 上是 ipconfig茶没,在 Linux 上是 ifconfig肌幽。

那你知道在 Linux 上還有什么其他命令可以查看 IP 地址嗎?答案是 ip addr抓半。如果回答不上來這個問題喂急,那你可能沒怎么用過 Linux。

那你知道 ifconfig 和 ip addr 的區(qū)別嗎笛求?這是一個有關 net-tools 和 iproute2 的“歷史”故事廊移,你剛來到第三節(jié),暫時不用了解這么細探入,但這也是一個辰瓶祝考的知識點。

想象一下蜂嗽,你登錄進入一個被裁剪過的非常小的 Linux 系統(tǒng)中苗膝,發(fā)現既沒有 ifconfig 命令,也沒有 ip addr 命令植旧,你是不是感覺這個系統(tǒng)壓根兒沒法用辱揭?這個時候,你可以自行安裝 net-tools 和 iproute2 這兩個工具病附。當然问窃,大多數時候這兩個命令是系統(tǒng)自帶的。

安裝好后完沪,我們來運行一下 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 地址咕别,當然技健,這不是必須的。在后面的分享中惰拱,我們會遇到沒有 IP 地址的情況雌贱。

IP 地址是一個網卡在網絡世界的通訊地址啊送,相當于我們現實世界的門牌號碼。既然是門牌號碼欣孤,不能大家都一樣馋没,不然就會起沖突。比方說降传,假如大家都叫六單元 1001 號篷朵,那快遞就找不到地方了。所以婆排,有時候咱們的電腦彈出網絡地址沖突声旺,出現上不去網的情況,多半是 IP 地址沖突了段只。

如上輸出的結果腮猖,10.100.122.2 就是一個 IP 地址。這個地址被點分隔為四個部分赞枕,每個部分 8 個 bit澈缺,所以 IP 地址總共是 32 位。這樣產生的 IP 地址的數量很快就不夠用了炕婶。因為當時設計 IP 地址的時候姐赡,哪知道今天會有這么多的計算機啊柠掂!因為不夠用雏吭,于是就有了 IPv6,也就是上面輸出結果里面 inet6 fe80::f816:3eff:fec7:7975/64陪踩。這個有 128 位杖们,現在看來是夠了,但是未來的事情誰知道呢肩狂?

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

image

在網絡地址中审磁,至少在當時設計的時候谈飒,對于 A、B态蒂、 C 類主要分兩部分杭措,前面一部分是網絡號,后面一部分是主機號钾恢。這很好理解手素,大家都是六單元 1001 號鸳址,我是小區(qū) A 的六單元 1001 號,而你是小區(qū) B 的六單元 1001 號泉懦。

下面這個表格稿黍,詳細地展示了 A、B崩哩、C 三類地址所能包含的主機的數量巡球。在后文中,我也會多次借助這個表格來講解邓嘹。

image

這里面有個尷尬的事情辕漂,就是 C 類地址能包含的最大主機數量實在太少了,只有 254 個吴超。當時設計的時候恐怕沒想到钉嘹,現在估計一個網吧都不夠用吧。而 B 類地址能包含的最大主機數量又太多了鲸阻。6 萬多臺機器放在一個網絡下面跋涣,一般的企業(yè)基本達不到這個規(guī)模,閑著的地址就是浪費鸟悴。

無類型域間選路(CIDR)

于是有了一個折中的方式叫作無類型域間選路陈辱,簡稱CIDR。這種方式打破了原來設計的幾類地址的做法细诸,將 32 位的 IP 地址一分為二沛贪,前面是網絡號,后面是主機號震贵。從哪里分呢利赋?你如果注意觀察的話可以看到,10.100.122.2/24猩系,這個 IP 地址中有一個斜杠媚送,斜杠后面有個數字 24。這種地址表示形式寇甸,就是 CIDR塘偎。后面 24 的意思是,32 位中拿霉,前 24 位是網絡號吟秩,后 8 位是主機號。

伴隨著 CIDR 存在的绽淘,一個是廣播地址涵防,10.100.122.255。如果發(fā)送這個地址收恢,所有 10.100.122 網絡里面的機器都可以收到武学。另一個是子網掩碼,255.255.255.0伦意。

將子網掩碼和 IP 地址進行 AND 計算火窒。前面三個 255,轉成二進制都是 1驮肉。1 和任何數值取 AND熏矿,都是原來數值,因而前三個數不變离钝,為 10.100.122票编。后面一個 0,轉換成二進制是 0卵渴,0 和任何數值取 AND慧域,都是 0,因而最后一個數變?yōu)?0浪读,合起來就是 10.100.122.0昔榴。這就是網絡號將子網掩碼和 IP 地址按位計算 AND碘橘,就可得到網絡號互订。

公有 IP 地址和私有 IP 地址

在日常的工作中,幾乎不用劃分 A 類痘拆、B 類或者 C 類仰禽,所以時間長了,很多人就忘記了這個分類纺蛆,而只記得 CIDR吐葵。但是有一點還是要注意的,就是公有 IP 地址和私有 IP 地址桥氏。

image

我們繼續(xù)看上面的表格折联。表格最右列是私有 IP 地址段。平時我們看到的數據中心里识颊,辦公室诚镰、家里或學校的 IP 地址,一般都是私有 IP 地址段祥款。因為這些地址允許組織內部的 IT 人員自己管理清笨、自己分配,而且可以重復刃跛。因此抠艾,你學校的某個私有 IP 地址段和我學校的可以是一樣的。

這就像每個小區(qū)有自己的樓編號和門牌號桨昙,你們小區(qū)可以叫 6 棟检号,我們小區(qū)也叫 6 棟腌歉,沒有任何問題。但是一旦出了小區(qū)齐苛,就需要使用公有 IP 地址翘盖。就像人民路 888 號,是國家統(tǒng)一分配的凹蜂,不能兩個小區(qū)都叫人民路 888 號馍驯。

公有 IP 地址有個組織統(tǒng)一分配,你需要去買玛痊。如果你搭建一個網站汰瘫,給你學校的人使用,讓你們學校的 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 就是廣播地址。一旦發(fā)送這個地址麻汰,整個 192.168.0 網絡里面的所有機器都能收到速客。

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

舉例:一個容易“犯錯”的 CIDR

我們來看 16.158.165.91/22 這個 CIDR。求一下這個網絡的第一個地址浪耘、子網掩碼和廣播地址乱灵。

你要是上來就寫 16.158.165.1,那就大錯特錯了七冲。

/22 不是 8 的整數倍痛倚,不好辦,只能先變成二進制來看癞埠。16.158 的部分不會動状原,它占了前 16 位聋呢。中間的 165苗踪,變?yōu)槎M制為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 類是組播地址赵抢。使用這一類地址,屬于某個組的機器都能收到声功。這有點類似在公司里面大家都加入了一個郵件組烦却。發(fā)送郵件,加入這個組的都能收到先巴。組播地址在后面講述 VXLAN 協(xié)議的時候會提到其爵。

講了這么多,才講了上面的輸出結果中很小的一部分伸蚯,是不是覺得原來并沒有真的理解 ip addr 呢醋闭?我們接著來分析。

在 IP 地址的后面有個 scope朝卒,對于 eth0 這張網卡來講证逻,是 global,說明這張網卡是可以對外的,可以接收來自各個地方的包囚企。對于 lo 來講丈咐,是 host,說明這張網卡僅僅可以供本機相互通信龙宏。

lo 全稱是loopback棵逊,又稱環(huán)回接口,往往會被分配到 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 地址是一個很容易讓人“誤解”的地址翔曲。因為 MAC 地址號稱全局唯一迫像,不會有兩個網卡有相同的 MAC 地址,而且網卡自生產出來瞳遍,就帶著這個地址闻妓。很多人看到這里就會想,既然這樣掠械,整個互聯(lián)網的通信由缆,全部用 MAC 地址好了,只要知道了對方的 MAC 地址份蝴,就可以把信息傳過去犁功。

這樣當然是不行的。 一個網絡包要從一個地方傳到另一個地方婚夫,除了要有確定的地址浸卦,還需要有定位功能。 而有門牌號碼屬性的 IP 地址案糙,才是有遠程定位功能的限嫌。

例如,你去杭州市網商路 599 號 B 樓 6 層找劉超时捌,你在路上問路怒医,可能被問的人不知道 B 樓是哪個,但是可以給你指網商路怎么去奢讨。但是如果你問一個人稚叹,你知道這個身份證號的人在哪里嗎?可想而知,沒有人知道扒袖。

MAC 地址更像是身份證塞茅,是一個唯一的標識。它的唯一性設計是為了組網的時候季率,不同的網卡放在一個網絡里面的時候野瘦,可以不用擔心沖突。從硬件角度飒泻,保證不同的網卡有不同的標識鞭光。

MAC 地址是有一定定位功能的,只不過范圍非常有限泞遗。你可以根據 IP 地址惰许,找到杭州市網商路 599 號 B 樓 6 層,但是依然找不到我刹孔,你就可以靠吼了啡省,大聲喊身份證 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 地址起作用了。

網絡設備的狀態(tài)標識

解析完了 MAC 地址霹肝,我們再來看 <BROADCAST,MULTICAST,UP,LOWER_UP> 是干什么的估蹄?這個叫作net_device flags網絡設備的狀態(tài)標識沫换。

UP 表示網卡處于啟動的狀態(tài)臭蚁;BROADCAST 表示這個網卡有廣播地址,可以發(fā)送廣播包;MULTICAST 表示網卡可以發(fā)送多播包垮兑;LOWER_UP 表示 L1 是啟動的炭晒,也即網線插著呢。MTU1500 是指什么意思呢甥角?是哪一層的概念呢网严?最大傳輸單元 MTU 為 1500,這是以太網的默認值嗤无。

上一節(jié)震束,我們講過網絡包是層層封裝的。MTU 是二層 MAC 層的概念当犯。MAC 層有 MAC 的頭垢村,以太網規(guī)定連 MAC 頭帶正文合起來,不允許超過 1500 個字節(jié)嚎卫。正文里面有 IP 的頭嘉栓、TCP 的頭、HTTP 的頭拓诸。如果放不下侵佃,就需要分片來傳輸。

qdisc pfifo_fast 是什么意思呢奠支?qdisc 全稱是queueing discipline馋辈,中文叫排隊規(guī)則。內核如果需要通過某個網絡接口發(fā)送數據包倍谜,它都需要按照為這個接口配置的 qdisc(排隊規(guī)則)把數據包加入隊列迈螟。

最簡單的 qdisc 是 pfifo啦粹,它不對進入的數據包做任何的處理摔寨,數據包采用先入先出的方式通過隊列氧秘。pfifo_fast 稍微復雜一些露泊,它的隊列包括三個波段(band)斗塘。在每個波段里面蜻牢,使用先進先出規(guī)則荆永。

三個波段(band)的優(yōu)先級也不相同召耘。band 0 的優(yōu)先級最高鹤盒,band 2 的最低蚕脏。如果 band 0 里面有數據包,系統(tǒng)就不會處理 band 1 里面的數據包侦锯,band 1 和 band 2 之間也是一樣驼鞭。

數據包是按照服務類型(Type of Service,TOS)被分配到三個波段(band)里面的尺碰。TOS 是 IP 頭里面的一個字段挣棕,代表了當前的包是高優(yōu)先級的译隘,還是低優(yōu)先級的。

小結

  • IP 是地址洛心,有定位功能固耘;MAC 是身份證,無定位功能词身;
  • CIDR 可以用來判斷是不是本地人厅目;
  • IP 分公有的 IP 和私有的 IP。后面的章節(jié)中我會談到“出國門”法严,就與這個有關损敷。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市深啤,隨后出現的幾起案子拗馒,更是在濱河造成了極大的恐慌,老刑警劉巖溯街,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诱桂,死亡現場離奇詭異,居然都是意外死亡呈昔,警方通過查閱死者的電腦和手機挥等,發(fā)現死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來韩肝,“玉大人触菜,你說我怎么就攤上這事九榔“Ь” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵哲泊,是天一觀的道長剩蟀。 經常有香客問我,道長切威,這世上最難降的妖魔是什么育特? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮先朦,結果婚禮上缰冤,老公的妹妹穿的比我還像新娘。我一直安慰自己喳魏,他們只是感情好棉浸,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刺彩,像睡著了一般迷郑。 火紅的嫁衣襯著肌膚如雪枝恋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天嗡害,我揣著相機與錄音焚碌,去河邊找鬼。 笑死霸妹,一個胖子當著我的面吹牛十电,可吹牛的內容都是我干的。 我是一名探鬼主播叹螟,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼摆出,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了首妖?” 一聲冷哼從身側響起偎漫,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎有缆,沒想到半個月后象踊,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡棚壁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年杯矩,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片袖外。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡史隆,死狀恐怖,靈堂內的尸體忽然破棺而出曼验,到底是詐尸還是另有隱情泌射,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布鬓照,位于F島的核電站熔酷,受9級特大地震影響,放射性物質發(fā)生泄漏豺裆。R本人自食惡果不足惜拒秘,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望臭猜。 院中可真熱鬧躺酒,春花似錦、人聲如沸蔑歌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丐膝。三九已至量愧,卻和暖如春钾菊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背偎肃。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工煞烫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人累颂。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓滞详,卻偏偏與公主長得像,于是被迫代替她去往敵國和親紊馏。 傳聞我的和親對象是個殘疾皇子料饥,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內容