我需要檢查和修改IPv6擴展報頭。所以我設置了一個原始套接字來監聽本地地址上的所有IP數據包。IPv6數據包報頭操作
package main
import (
"log"
"net"
)
func main() {
c, err := net.ListenIP("ip6:tcp", &net.IPAddr{
IP: net.IPv6loopback,
Zone: "",
})
if err != nil {
panic(err)
}
buf := make([]byte, 1024)
for {
numRead, ipaddr, err := c.ReadFromIP(buf)
log.Print(numRead, ipaddr, err)
log.Printf("% X\n", buf[:numRead])
}
}
我嘗試了所有的連接上Read*()
方法,但是好像他們剛剛回歸的有效載荷沒有頭。 所以我的問題是:如何訪問數據包的IPv6標頭?
有一點要注意的是,IPv6擴展頭很少被使用,並且,不幸的是,路徑中的許多ISP會阻止或剝離擴展頭,因爲它們可用於攻擊。 –