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