ipconfig你知道隙咸?那ifconfig呢沐悦?一個熟悉又陌生的命令

上一節(jié)結(jié)尾給你留的一個思考題是,你知道怎么查看 IP 地址嗎五督?

當(dāng)面試聽到這個問題的時候藏否,面試者常常會覺得走錯了房間。我面試的是技術(shù)崗位啊充包,怎么問這么簡單的問題副签?

的確,即便沒有專業(yè)學(xué)過計算機的人基矮,只要倒騰過電腦淆储,重裝過系統(tǒng),大多也會知道這個問題的答案:在 Windows 上是 ipconfig家浇,在 Linux 上是 ifconfig本砰。

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

那你知道 ifconfig 和 ip addr 的區(qū)別嗎?這是一個有關(guān) net-tools 和 iproute2 的“歷史”故事还棱,你剛來到第三節(jié)载慈,暫時不用了解這么細,但這也是一個秤栈撸考的知識點娃肿。

想象一下,你登錄進入一個被裁剪過的非常小的 Linux 系統(tǒng)中珠十,發(fā)現(xiàn)既沒有 ifconfig 命令料扰,也沒有 ip addr 命令,你是不是感覺這個系統(tǒng)壓根兒沒法用焙蹭?這個時候晒杈,你可以自行安裝 net-tools 和 iproute2 這兩個工具。當(dāng)然孔厉,大多數(shù)時候這兩個命令是系統(tǒng)自帶的拯钻。

安裝好后,我們來運行一下 ip addr撰豺。不出意外粪般,應(yīng)該會輸出下面的內(nèi)容。


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

這個命令顯示了這臺機器上所有的網(wǎng)卡污桦。大部分的網(wǎng)卡都會有一個 IP 地址亩歹,當(dāng)然,這不是必須的凡橱。在后面的分享中小作,我們會遇到?jīng)]有 IP 地址的情況。

IP 地址是一個網(wǎng)卡在網(wǎng)絡(luò)世界的通訊地址稼钩,相當(dāng)于我們現(xiàn)實世界的門牌號碼顾稀。既然是門牌號碼,不能大家都一樣坝撑,不然就會起沖突静秆。比方說,假如大家都叫六單元 1001 號巡李,那快遞就找不到地方了抚笔。所以,有時候咱們的電腦彈出網(wǎng)絡(luò)地址沖突击儡,出現(xiàn)上不去網(wǎng)的情況塔沃,多半是 IP 地址沖突了蝠引。

如上輸出的結(jié)果阳谍,10.100.122.2 就是一個 IP 地址蛀柴。這個地址被點分隔為四個部分,每個部分 8 個 bit矫夯,所以 IP 地址總共是 32 位鸽疾。這樣產(chǎn)生的 IP 地址的數(shù)量很快就不夠用了。因為當(dāng)時設(shè)計 IP 地址的時候训貌,哪知道今天會有這么多的計算機爸瓢埂!因為不夠用递沪,于是就有了 IPv6豺鼻,也就是上面輸出結(jié)果里面 inet6 fe80::f816:3eff:fec7:7975/64。這個有 128 位款慨,現(xiàn)在看來是夠了儒飒,但是未來的事情誰知道呢?

本來 32 位的 IP 地址就不夠檩奠,還被分成了 5 類∽耍現(xiàn)在想想,當(dāng)時分配地址的時候埠戳,真是太奢侈了井誉。

在網(wǎng)絡(luò)地址中,至少在當(dāng)時設(shè)計的時候整胃,對于 A颗圣、B、 C 類主要分兩部分爪模,前面一部分是網(wǎng)絡(luò)號欠啤,后面一部分是主機號。這很好理解屋灌,大家都是六單元 1001 號洁段,我是小區(qū) A 的六單元 1001 號,而你是小區(qū) B 的六單元 1001 號共郭。

下面這個表格祠丝,詳細地展示了 A、B除嘹、C 三類地址所能包含的主機的數(shù)量写半。在后文中,我也會多次借助這個表格來講解尉咕。


這里面有個尷尬的事情叠蝇,就是 C 類地址能包含的最大主機數(shù)量實在太少了,只有 254 個年缎。當(dāng)時設(shè)計的時候恐怕沒想到悔捶,現(xiàn)在估計一個網(wǎng)吧都不夠用吧铃慷。而 B 類地址能包含的最大主機數(shù)量又太多了。6 萬多臺機器放在一個網(wǎng)絡(luò)下面蜕该,一般的企業(yè)基本達不到這個規(guī)模犁柜,閑著的地址就是浪費。

無類型域間選路(CIDR)

于是有了一個折中的方式叫作無類型域間選路堂淡,簡稱 CIDR馋缅。這種方式打破了原來設(shè)計的幾類地址的做法,將 32 位的 IP 地址一分為二绢淀,前面是網(wǎng)絡(luò)號萤悴,后面是主機號。從哪里分呢皆的?你如果注意觀察的話可以看到稚疹,10.100.122.2/24,這個 IP 地址中有一個斜杠祭务,斜杠后面有個數(shù)字 24内狗。這種地址表示形式,就是 CIDR义锥。后面 24 的意思是柳沙,32 位中,前 24 位是網(wǎng)絡(luò)號拌倍,后 8 位是主機號赂鲤。

伴隨著 CIDR 存在的,一個是廣播地址柱恤,10.100.122.255数初。如果發(fā)送這個地址,所有 10.100.122 網(wǎng)絡(luò)里面的機器都可以收到梗顺。另一個是子網(wǎng)掩碼泡孩,255.255.255.0。

將子網(wǎng)掩碼和 IP 地址進行 AND 計算寺谤。前面三個 255仑鸥,轉(zhuǎn)成二進制都是 1。1 和任何數(shù)值取 AND变屁,都是原來數(shù)值眼俊,因而前三個數(shù)不變,為 10.100.122粟关。后面一個 0疮胖,轉(zhuǎn)換成二進制是 0,0 和任何數(shù)值取 AND,都是 0澎灸,因而最后一個數(shù)變?yōu)?0谷市,合起來就是 10.100.122.0。這就是網(wǎng)絡(luò)號击孩。將子網(wǎng)掩碼和 IP 地址按位計算 AND,就可得到網(wǎng)絡(luò)號鹏漆。

公有 IP 地址和私有 IP 地址

在日常的工作中巩梢,幾乎不用劃分 A 類、B 類或者 C 類艺玲,所以時間長了括蝠,很多人就忘記了這個分類,而只記得 CIDR饭聚。但是有一點還是要注意的忌警,就是公有 IP 地址和私有 IP 地址。

我們繼續(xù)看上面的表格秒梳。表格最右列是私有 IP 地址段法绵。平時我們看到的數(shù)據(jù)中心里,辦公室酪碘、家里或?qū)W校的 IP 地址朋譬,一般都是私有 IP 地址段。因為這些地址允許組織內(nèi)部的 IT 人員自己管理兴垦、自己分配徙赢,而且可以重復(fù)。因此探越,你學(xué)校的某個私有 IP 地址段和我學(xué)校的可以是一樣的狡赐。

這就像每個小區(qū)有自己的樓編號和門牌號,你們小區(qū)可以叫 6 棟钦幔,我們小區(qū)也叫 6 棟枕屉,沒有任何問題。但是一旦出了小區(qū)鲤氢,就需要使用公有 IP 地址搀庶。就像人民路 888 號,是國家統(tǒng)一分配的铜异,不能兩個小區(qū)都叫人民路 888 號哥倔。

公有 IP 地址有個組織統(tǒng)一分配,你需要去買揍庄。如果你搭建一個網(wǎng)站咆蒿,給你學(xué)校的人使用,讓你們學(xué)校的 IT 人員給你一個 IP 地址就行。但是假如你要做一個類似網(wǎng)易 163 這樣的網(wǎng)站沃测,就需要有公有 IP 地址缭黔,這樣全世界的人才能訪問。

表格中的 192.168.0.x 是最常用的私有 IP 地址蒂破。你家里有 Wi-Fi馏谨,對應(yīng)就會有一個 IP 地址。一般你家里地上網(wǎng)設(shè)備不會超過 256 個附迷,所以 /24 基本就夠了惧互。有時候我們也能見到 /16 的 CIDR,這兩種是最常見的喇伯,也是最容易理解的喊儡。

不需要將十進制轉(zhuǎn)換為二進制 32 位,就能明顯看出 192.168.0 是網(wǎng)絡(luò)號稻据,后面是主機號艾猜。而整個網(wǎng)絡(luò)里面的第一個地址 192.168.0.1,往往就是你這個私有網(wǎng)絡(luò)的出口地址捻悯。例如匆赃,你家里的電腦連接 Wi-Fi,Wi-Fi 路由器的地址就是 192.168.0.1今缚,而 192.168.0.255 就是廣播地址炸庞。一旦發(fā)送這個地址,整個 192.168.0 網(wǎng)絡(luò)里面的所有機器都能收到荚斯。

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

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

我們來看 16.158.165.91/22 這個 CIDR。求一下這個網(wǎng)絡(luò)的第一個地址兽泣、子網(wǎng)掩碼和廣播地址绎橘。

你要是上來就寫 16.158.165.1,那就大錯特錯了唠倦。

/22 不是 8 的整數(shù)倍称鳞,不好辦,只能先變成二進制來看稠鼻。16.158 的部分不會動冈止,它占了前 16 位。中間的 165候齿,變?yōu)槎M制為10100101熙暴。除了前面的 16 位闺属,還剩 6 位。所以周霉,這 8 位中前 6 位是網(wǎng)絡(luò)號掂器,16.158.<101001>,而 <01>.91 是機器號俱箱。

第一個地址是 16.158.<101001><00>.1国瓮,即 16.158.164.1。子網(wǎng)掩碼是 255.255.<111111><00>.0狞谱,即 255.255.252.0乃摹。廣播地址為 16.158.<101001><11>.255,即 16.158.167.255芋簿。

這五類地址中,還有一類 D 類是組播地址璃饱。使用這一類地址与斤,屬于某個組的機器都能收到。這有點類似在公司里面大家都加入了一個郵件組荚恶。發(fā)送郵件撩穿,加入這個組的都能收到。組播地址在后面講述 VXLAN 協(xié)議的時候會提到谒撼。

講了這么多食寡,才講了上面的輸出結(jié)果中很小的一部分,是不是覺得原來并沒有真的理解 ip addr 呢廓潜?我們接著來分析抵皱。

在 IP 地址的后面有個 scope,對于 eth0 這張網(wǎng)卡來講辩蛋,是 global呻畸,說明這張網(wǎng)卡是可以對外的,可以接收來自各個地方的包悼院。對于 lo 來講伤为,是 host,說明這張網(wǎng)卡僅僅可以供本機相互通信据途。

lo 全稱是 loopback绞愚,又稱環(huán)回接口,往往會被分配到 127.0.0.1 這個地址颖医。這個地址用于本機通信位衩,經(jīng)過內(nèi)核處理后直接返回,不會在任何網(wǎng)絡(luò)中出現(xiàn)熔萧。

MAC 地址

在 IP 地址的上一行是 link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff蚂四,這個被稱為 MAC 地址光戈,是一個網(wǎng)卡的物理地址,用十六進制遂赠,6 個 byte 表示久妆。

MAC 地址是一個很容易讓人“誤解”的地址。因為 MAC 地址號稱全局唯一跷睦,不會有兩個網(wǎng)卡有相同的 MAC 地址筷弦,而且網(wǎng)卡自生產(chǎn)出來,就帶著這個地址抑诸。很多人看到這里就會想烂琴,既然這樣,整個互聯(lián)網(wǎng)的通信蜕乡,全部用 MAC 地址好了奸绷,只要知道了對方的 MAC 地址,就可以把信息傳過去层玲。

這樣當(dāng)然是不行的号醉。 一個網(wǎng)絡(luò)包要從一個地方傳到另一個地方,除了要有確定的地址辛块,還需要有定位功能畔派。 而有門牌號碼屬性的 IP 地址,才是有遠程定位功能的润绵。

例如线椰,你去杭州市網(wǎng)商路 599 號 B 樓 6 層找劉超,你在路上問路尘盼,可能被問的人不知道 B 樓是哪個憨愉,但是可以給你指網(wǎng)商路怎么去。但是如果你問一個人卿捎,你知道這個身份證號的人在哪里嗎莱衩?可想而知,沒有人知道娇澎。

MAC 地址更像是身份證笨蚁,是一個唯一的標識。它的唯一性設(shè)計是為了組網(wǎng)的時候趟庄,不同的網(wǎng)卡放在一個網(wǎng)絡(luò)里面的時候括细,可以不用擔(dān)心沖突。從硬件角度戚啥,保證不同的網(wǎng)卡有不同的標識奋单。

MAC 地址是有一定定位功能的,只不過范圍非常有限猫十。你可以根據(jù) IP 地址览濒,找到杭州市網(wǎng)商路 599 號 B 樓 6 層呆盖,但是依然找不到我,你就可以靠吼了贷笛,大聲喊身份證 XXXX 的是哪位应又?我聽到了,我就會站起來說乏苦,是我啊株扛。但是如果你在上海,到處喊身份證 XXXX 的是哪位汇荐,我不在現(xiàn)場洞就,當(dāng)然不會回答,因為我在杭州不在上海掀淘。

所以旬蟋,MAC 地址的通信范圍比較小,局限在一個子網(wǎng)里面革娄。例如倾贰,從 192.168.0.2/24 訪問 192.168.0.3/24 是可以用 MAC 地址的。一旦跨子網(wǎng)稠腊,即從 192.168.0.2/24 到 192.168.1.2/24躁染,MAC 地址就不行了鸣哀,需要 IP 地址起作用了架忌。

網(wǎng)絡(luò)設(shè)備的狀態(tài)標識

解析完了 MAC 地址,我們再來看 <BROADCAST,MULTICAST,UP,LOWER_UP> 是干什么的我衬?這個叫做 net_device flags叹放,網(wǎng)絡(luò)設(shè)備的狀態(tài)標識。

UP 表示網(wǎng)卡處于啟動的狀態(tài)挠羔;BROADCAST 表示這個網(wǎng)卡有廣播地址井仰,可以發(fā)送廣播包;MULTICAST 表示網(wǎng)卡可以發(fā)送多播包破加;LOWER_UP 表示 L1 是啟動的俱恶,也即網(wǎng)線插著呢。MTU1500 是指什么意思呢范舀?是哪一層的概念呢合是?最大傳輸單元 MTU 為 1500,這是以太網(wǎng)的默認值锭环。

上一節(jié)聪全,我們講過網(wǎng)絡(luò)包是層層封裝的。MTU 是二層 MAC 層的概念辅辩。MAC 層有 MAC 的頭难礼,以太網(wǎng)規(guī)定正文部分不允許超過 1500 個字節(jié)娃圆。正文里面有 IP 的頭、TCP 的頭蛾茉、HTTP 的頭讼呢。如果放不下,就需要分片來傳輸臀稚。

qdisc pfifo_fast 是什么意思呢吝岭?qdisc 全稱是 queueing discipline,中文叫排隊規(guī)則吧寺。內(nèi)核如果需要通過某個網(wǎng)絡(luò)接口發(fā)送數(shù)據(jù)包窜管,它都需要按照為這個接口配置的 qdisc(排隊規(guī)則)把數(shù)據(jù)包加入隊列。

最簡單的 qdisc 是 pfifo稚机,它不對進入的數(shù)據(jù)包做任何的處理幕帆,數(shù)據(jù)包采用先入先出的方式通過隊列。pfifo_fast 稍微復(fù)雜一些赖条,它的隊列包括三個波段(band)失乾。在每個波段里面,使用先進先出規(guī)則纬乍。

三個波段(band)的優(yōu)先級也不相同碱茁。band 0 的優(yōu)先級最高,band 2 的最低仿贬。如果 band 0 里面有數(shù)據(jù)包纽竣,系統(tǒng)就不會處理 band 1 里面的數(shù)據(jù)包,band 1 和 band 2 之間也是一樣茧泪。

數(shù)據(jù)包是按照服務(wù)類型(Type of Service蜓氨,TOS)被分配到三個波段(band)里面的。TOS 是 IP 頭里面的一個字段队伟,代表了當(dāng)前的包是高優(yōu)先級的穴吹,還是低優(yōu)先級的。

隊列是個好東西嗜侮,后面我們講云計算中的網(wǎng)絡(luò)的時候港令,會有很多用戶共享一個網(wǎng)絡(luò)出口的情況,這個時候如何排隊锈颗,每個隊列有多粗顷霹,隊列處理速度應(yīng)該怎么提升,我都會詳細為你講解宜猜。

小結(jié)

怎么樣泼返,看起來很簡單的一個命令,里面學(xué)問很大吧姨拥?通過這一節(jié)绅喉,希望你能記住以下的知識點渠鸽,后面都能用得上:

IP 是地址,有定位功能柴罐;MAC 是身份證徽缚,無定位功能;

CIDR 可以用來判斷是不是本地人革屠;

IP 分公有的 IP 和私有的 IP凿试。后面的章節(jié)中我會談到“出國門”,就與這個有關(guān)似芝。

最后那婉,給你留兩個思考題。

你知道 net-tools 和 iproute2 的“歷史”故事嗎党瓮?

這一節(jié)講的是如何查看 IP 地址详炬,那你知道 IP 地址是怎么來的嗎?

歡迎你留言和我討論寞奸。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呛谜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子枪萄,更是在濱河造成了極大的恐慌隐岛,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓷翻,死亡現(xiàn)場離奇詭異聚凹,居然都是意外死亡,警方通過查閱死者的電腦和手機逻悠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門元践,熙熙樓的掌柜王于貴愁眉苦臉地迎上來韭脊,“玉大人童谒,你說我怎么就攤上這事』Ω幔” “怎么了饥伊?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蔫饰。 經(jīng)常有香客問我琅豆,道長,這世上最難降的妖魔是什么篓吁? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任茫因,我火速辦了婚禮,結(jié)果婚禮上杖剪,老公的妹妹穿的比我還像新娘冻押。我一直安慰自己驰贷,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布洛巢。 她就那樣靜靜地躺著括袒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪稿茉。 梳的紋絲不亂的頭發(fā)上锹锰,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音漓库,去河邊找鬼恃慧。 笑死,一個胖子當(dāng)著我的面吹牛渺蒿,可吹牛的內(nèi)容都是我干的糕伐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蘸嘶,長吁一口氣:“原來是場噩夢啊……” “哼良瞧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起训唱,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤褥蚯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后况增,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赞庶,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年澳骤,在試婚紗的時候發(fā)現(xiàn)自己被綠了歧强。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡为肮,死狀恐怖摊册,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情颊艳,我是刑警寧澤茅特,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站棋枕,受9級特大地震影響白修,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜重斑,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一兵睛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦祖很、人聲如沸累盗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽若债。三九已至,卻和暖如春拆融,著一層夾襖步出監(jiān)牢的瞬間蠢琳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工镜豹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留傲须,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓趟脂,卻偏偏與公主長得像泰讽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子昔期,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容