Golang 學習筆記——tun/tap 程式設計
tun/tap 是作業系統核心中的虛擬網路裝置。tap 等同於一個乙太網裝置,它操作第二層資料包如乙太網資料幀。tun 模擬了網路層裝置,操作第三層資料包比如IP資料封包。
tun 裝置
- linux 下建立命令:
# add tun
sudo ip tuntap add tun0 mode tun
# del tun
sudo ip tuntap del tun0 mode tun
- golang 建立
import (
"fmt"
"github.com/songgao/packets/ethernet"
"github.com/songgao/water"
"time"
)
func main() {
tapconfig := water.Config{
DeviceType: water.TAP,
PlatformSpecificParams: water.PlatformSpecificParams{
Name: "tun0",
},
}
ifce, err := water.New(tapconfig)
if err != nil {
fmt.Printf("建立失敗:%v n", err)
return
}
var buf ethernet.Frame
for {
_, err := ifce.Read(buf)
if err != nil {
fmt.Printf("讀取資料:%v n", err)
return
}
time.Sleep(time.Second)
}
}
tap 裝置
- linux 下建立命令:
# add tap
sudo ip tuntap add tap0 mode tap
# del tap
sudo ip tuntap del tap0 mode tap
- golang 建立
import (
"fmt"
"github.com/songgao/packets/ethernet"
"github.com/songgao/water"
"time"
)
func main() {
tapconfig := water.Config{
DeviceType: water.TAP,
PlatformSpecificParams: water.PlatformSpecificParams{
Name: "tap0",
Persist: true,
},
}
ifce, err := water.New(tapconfig)
if err != nil {
fmt.Printf("建立失敗:%v n", err)
return
}
var buf ethernet.Frame
for {
_, err := ifce.Read(buf)
if err != nil {
fmt.Printf("讀取資料:%v n", err)
return
}
time.Sleep(time.Second)
}
}
tun 和 tap 建立除了型別其他基本一樣,引數 water.PlatformSpecificParams.Persist 表示持久化,預設為 false,程式停止,虛擬網路卡自動刪除,如果設定為 true,虛擬網路卡不會自動刪除。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2618/viewspace-2818176/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Tun/Tap介面使用指導
- golang 學習筆記Golang筆記
- 網路程式設計學習筆記程式設計筆記
- 系統程式設計學習筆記程式設計筆記
- Linux學習/TCP程式設計學習筆記LinuxTCP程式設計筆記
- Linux虛擬網路卡TUN和TAPLinux
- 【學習筆記】Golang 切片筆記Golang
- GOLang 學習筆記(一)Golang筆記
- goLang學習筆記(三)Golang筆記
- goLang學習筆記(四)Golang筆記
- goLang學習筆記(一)Golang筆記
- goLang學習筆記(二)Golang筆記
- golang 學習筆記1Golang筆記
- 結構化程式設計--學習筆記程式設計筆記
- Javascript高階程式設計 學習筆記JavaScript程式設計筆記
- ROS串列埠程式設計學習筆記ROS串列埠程式設計筆記
- spark學習筆記--進階程式設計Spark筆記程式設計
- Linux Shell 程式設計學習筆記Linux程式設計筆記
- 《Windows 程式設計》學習筆記(五) (轉)Windows程式設計筆記
- 《Windows 程式設計》學習筆記(四) (轉)Windows程式設計筆記
- 《Windows 程式設計》學習筆記(三) (轉)Windows程式設計筆記
- 四. 文字程式設計--Windows程式設計課程學習筆記程式設計Windows筆記
- 設計模式學習筆記設計模式筆記
- 學習筆記-設計模式筆記設計模式
- 好程式設計師web前端培訓學習筆記Vue學習筆記一程式設計師Web前端筆記Vue
- 好程式設計師學習筆記:函式程式設計師筆記函式
- Vue學習筆記(九):元件化程式設計Vue筆記元件化程式設計
- nginx學習筆記(6):程式模型的設計Nginx筆記模型
- Java學習筆記--網路程式設計SocketJava筆記程式設計
- 好程式設計師web前端培訓學習筆記Vue學習筆記之二程式設計師Web前端筆記Vue
- Golang學習筆記之方法(method)Golang筆記
- Golang學習筆記-1.6 函式Golang筆記函式
- golang入門學習筆記(一)Golang筆記
- Golang學習筆記(1):包管理Golang筆記
- Node.js 設計模式 學習筆記 之 流程式設計Node.js設計模式筆記程式設計
- 黑馬程式設計師——Java學習筆記之⑦——“網路程式設計”程式設計師Java筆記
- JavaScript設計模式學習筆記JavaScript設計模式筆記
- php設計模式學習筆記PHP設計模式筆記