在linux中,lo是local的簡寫,是指本地環回接口;利用這個接口可以實現系統內部發送和接收數據,主要作用是檢測本機的網絡配置、提供某些應用程序在運行時需調用服務器上的資源。
本教程操作環境:linux7.3系統、Dell G3電腦。
linux中lo是什么
lo: local的簡寫,一般指本地環回接口。
lo接口的作用
本地一個進程發起連接,到一個本地的daemon監聽的內網IP地址(eth1: 10.1.1.1)的端口(8085),此時在eth1上是抓不到包的,在 lo 上抓到,說明使用的是本地回環接口lo,而網絡層的IP地址則是內網IP地址.
lo其實是一個系統虛擬的環回接口,它的IP地址是127.0.0.1,利用這個接口可以實現系統內部發送和接收數據,所以一般情況下我們使用:ping 127.0.0.1 是可以ping通的,因為這其實就是系統內部建立連接。
127.0.0.1,通常被稱為本地回環地址(Loop back address),不屬于任何一個有類別地址類。它代表設備的本地虛擬接口,所以默認被看作是永遠不會宕掉的接口。通常在不安裝網卡前就可以ping通這個本地回環地址。一般都會用來檢查本地網絡協議、基本數據接口等是否正常的。
其主要作用有兩個:
一是測試本機的網絡配置,能PING通127.0.0.1說明本機的網卡和IP協議安裝都沒有問題;
另一個作用是某些SERVER/CLIENT的應用程序在運行時需調用服務器上的資源
1.網絡接口的命名
這里并不存在一定的命名規范,但網絡接口名字的定義一般都是要有意義的。例如:
eth0: ethernet的簡寫,一般用于以太網接口。
wifi0:wifi是無線局域網,因此wifi0一般指無線網絡接口。
ath0: Atheros的簡寫,一般指Atheros芯片所包含的無線網絡接口。
lo: local的簡寫,一般指本地環回接口。
2.網絡接口如何工作
網絡接口是用來發送和接受數據包的基本設備。
系統中的所有網絡接口組成一個鏈狀結構,應用層程序使用時按名稱調用。
每個網絡接口在linux系統中對應于一個struct net_device結構體,包含name,mac,mask,mtu…信息。
每個硬件網卡(一個MAC)對應一個網絡接口,其工作完全由相應的驅動程序控制。
3.虛擬網絡接口
虛擬網絡接口的應用范圍非常廣泛。最著名的當屬“lo”了,基本上每個linux系統都有這個接口。
虛擬網絡接口并不真實地從外界接收和發送數據包,而是在系統內部接收和發送數據包,因此虛擬網絡接口不需要驅動程序。
虛擬網絡接口和真實存在的網絡接口在使用上是一致的。
4.網絡接口的創建
硬件網卡的網絡接口由驅動程序創建。而虛擬的網絡接口由系統創建或通過應用層程序創建。
驅動中創建網絡接口的函數是:register_netdev(struct net_device *)或者register_netdevice(struct net_device *)。
這兩個函數的區別是:register_netdev(…)會自動生成以”eth”作為打頭名稱的接口,而register_netdevice(…)需要提前指定接口名稱.事實上,register_netdev(…)也是通過調用register_netdevice(…)實現的。