網絡接口

(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地址.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章