1. 程式人生 > 實用技巧 >ifconfig講解(ip地址)

ifconfig講解(ip地址)

如果檢視ip地址,window上是ipconfig,linux上是ifconfig

linux上還有其他命令檢視ip地址嗎,答案是ip addr

ifconfig和ipaddr區別

這是一個有關 net-tools 和 iproute2 的“歷史”故事

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依然還在被廣泛使用

ipaddr輸出介紹

[[email protected]:~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 18:66:da:4d:26:f9 brd ff:ff:ff:ff:ff:ff
    inet 221.228.75.244/25 brd 221.228.75.255 scope global em1
3: em2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 18:66:da:4d:26:fa brd ff:ff:ff:ff:ff:ff
    inet 172.16.20.244/16 brd 172.16.255.255 scope global em2
4: em3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 18:66:da:4d:26:fb brd ff:ff:ff:ff:ff:ff
5: em4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 18:66:da:4d:26:fc brd ff:ff:ff:ff:ff:ff

 這個命令顯示了這臺機器上所有的網絡卡。大部分的網絡卡都會有一個 IP 地址,當然,這不是必須的。可參考上面輸出

inet:ip地址+網路號位數

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

link/ether:mac地址,用十六進位制,6 個 byte 表示

網路裝置狀態標識(net_device flags)

:<BROADCAST,MULTICAST,UP,LOWER_UP>

UP 表示網絡卡處於啟動的狀態;BROADCAST 表示這個網絡卡有廣播地址,可以傳送廣播包;MULTICAST 表示網絡卡可以傳送多播包;LOWER_UP 表示 L1 是啟動的,也即網線插著呢。MTU1500 是指什麼意思呢?是哪一層的概念呢?最大傳輸單元 MTU 為 1500,這是乙太網的預設值

網路包是層層封裝的。MTU 是二層 MAC 層的概念。MAC 層有 MAC 的頭,乙太網規定連 MAC 頭帶正文合起來,不允許超過 1500 個位元組。正文裡面有 IP 的頭、TCP 的頭、HTTP 的頭。如果放不下,就需要分片來傳輸

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 頭裡面的一個欄位,代表了當前的包是高優先順序的,還是低優先順序的