Linux中的lo回環接口詳細介紹


1、linux的網絡接口之掃盲

  (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(…)實現的。

  2、LINUX中的lo(回環接口)

  1) 什么是LO接口?

  在LINUX系統中,除了網絡接口eth0,還可以有別的接口,比如lo(本地環路接口)。

  2) LO接口的作用是什么?

  假如包是由一個本地進程為另一個本地進程產生的, 它們將通過外出鏈的’lo’接口,然后返回進入鏈的’lo’接口.具體參考包過濾器的相關內容。

  PART2 實驗:

  本地一個進程發起連接,到一個本地的daemon監聽的內網IP地址(eth1: 10.1.1.1)的端口(8085),此時在eth1上是抓不到包的,在 lo 上抓到,說明使用的是本地回環接口lo,而網絡層的IP地址則是內網IP地址.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM