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介面使用指導
- Linux學習/TCP程式設計學習筆記LinuxTCP程式設計筆記
- Linux虛擬網路卡TUN和TAPLinux
- 網路程式設計學習筆記程式設計筆記
- golang 學習筆記Golang筆記
- spark學習筆記--進階程式設計Spark筆記程式設計
- Javascript高階程式設計 學習筆記JavaScript程式設計筆記
- ROS串列埠程式設計學習筆記ROS串列埠程式設計筆記
- 結構化程式設計--學習筆記程式設計筆記
- goLang學習筆記(一)Golang筆記
- goLang學習筆記(二)Golang筆記
- goLang學習筆記(三)Golang筆記
- goLang學習筆記(四)Golang筆記
- 【學習筆記】Golang 切片筆記Golang
- GOLang 學習筆記(一)Golang筆記
- golang 學習筆記1Golang筆記
- 四. 文字程式設計--Windows程式設計課程學習筆記程式設計Windows筆記
- 好程式設計師web前端培訓學習筆記Vue學習筆記一程式設計師Web前端筆記Vue
- Vue學習筆記(九):元件化程式設計Vue筆記元件化程式設計
- python程式設計學習筆記⑦-1函式Python程式設計筆記函式
- 好程式設計師學習筆記:函式程式設計師筆記函式
- 設計模式學習筆記設計模式筆記
- 學習筆記-設計模式筆記設計模式
- 好程式設計師web前端培訓學習筆記Vue學習筆記之二程式設計師Web前端筆記Vue
- Node.js 設計模式 學習筆記 之 流程式設計Node.js設計模式筆記程式設計
- JavaScript DOM 程式設計藝術 學習筆記01JavaScript程式設計筆記
- JavaScript DOM 程式設計藝術 學習筆記 02JavaScript程式設計筆記
- freeRTOS核心學習筆記(1)-程式設計標準筆記程式設計
- shell指令碼程式設計學習筆記-運算子指令碼程式設計筆記
- shell指令碼程式設計學習筆記——變數指令碼程式設計筆記變數
- CUDA學習筆記-1: CUDA程式設計概覽筆記程式設計
- php設計模式學習筆記PHP設計模式筆記
- JavaScript設計模式學習筆記JavaScript設計模式筆記
- Linux程式設計學習筆記 | Linux IO學習[2] – 標準IOLinux程式設計筆記
- Golang學習筆記之方法(method)Golang筆記
- Golang學習筆記-1.6 函式Golang筆記函式
- Golang學習筆記(1):包管理Golang筆記
- 隨筆-學習程式設計有沒有必要做筆記?如何做筆記?程式設計筆記