go語言檢測ipv6沖突,ipv6沖突檢測報文

Golang 網(wǎng)絡編程絲綢之路 - TCP/UDP 地址解析

TL;DR 在使用 Golang 編寫 TCP/UDP socket 的時候,第一步做的就是地址解析。

湞江網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)建站于2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)建站。

該函數(shù)返回的地址包含的信息如下:

TCPAddr 里, IP 既可以是 IPv4 地址,也可以是 IPv6 地址。 Port 就是端口了。 Zone 是 IPv6 本地地址所在的區(qū)域。

從返回結(jié)果看該函數(shù)的參數(shù), network 指 address 的網(wǎng)絡類型; address 指要解析的地址,會從中解析出我們想要的 IP , Port 和 Zone 。

從源碼中可以看出,參數(shù) network 只能是如下四個值,否則會得到一個錯誤。

解析過程跟 ResolveTCPAddr 的一樣,不過得到的是 *UDPAddr 。

UDPAddr 包含的信息如下:

在 Go 中實現(xiàn)一個支持并發(fā)的 TCP 服務端

TCP 和 UDP 服務端隨處可見,它們基于 TCP/IP 協(xié)議棧,通過網(wǎng)絡為客戶端提供服務。在這篇文章中,我將介紹如何使用 Go 語言開發(fā)一個用于返回隨機數(shù)、支持并發(fā)的 TCP 服務端。對于每一個來自 TCP 客戶端的連接,它都會啟動一個新的 goroutine(輕量級線程)來處理相應的請求。

你可以在 GitHub 上找到本項目的源碼:concTcp.go。

這個程序的主要邏輯在 handleConnection 函數(shù)中,具體實現(xiàn)如下:

在 main 函數(shù)的實現(xiàn)部分,每當 TCP 服務端收到 TCP 客戶端的連接請求,它都會啟動一個新的 goroutine 來為這個請求提供服務。

首先, main 確保程序至少有一個命令行參數(shù)。注意,現(xiàn)有代碼并沒有檢查這個參數(shù)是否為有效的 TCP 端口號。不過,如果它是一個無效的 TCP 端口號, net.Listen 就會調(diào)用失敗,并返回一個錯誤信息,類似下面這樣:

net.Listen 函數(shù)用于告訴 Go 接受網(wǎng)絡連接,因而承擔了服務端的角色。它的返回值類型是 net.Conn ,后者實現(xiàn)了 io.Reader 和 io.Writer 接口。此外, main 函數(shù)中還調(diào)用了 rand.Seed 函數(shù),用于初始化隨機數(shù)生成器。最后, for 循環(huán)允許程序一直使用 Accept 函數(shù)來接受 TCP 客戶端的連接請求,并以 goroutine 的方式來運行 handleConnection(c) 函數(shù),處理客戶端的后續(xù)請求。

net.Listen 函數(shù)的第一個參數(shù)定義了使用的網(wǎng)絡類型,而第二個參數(shù)定義了服務端監(jiān)聽的地址和端口號。第一個參數(shù)的有效值為 tcp 、 tcp4 、 tcp6 、 udp 、 udp4 、 udp6 、 ip 、 ip4 、 ip6 、 Unix (Unix 套接字)、 Unixgram 和 Unixpacket ,其中: tcp4 、 udp4 和 ip4 只接受 IPv4 地址,而 tcp6 、 udp6 和 ip6 只接受 IPv6 地址。

concTCP.go 需要一個命令行參數(shù),來指定監(jiān)聽的端口號。當它開始服務 TCP 客戶端時,你會得到類似下面的輸出:

netstat 的輸出可以確認 congTCP.go 正在為多個 TCP 客戶端提供服務,并且仍在繼續(xù)監(jiān)聽建立連接的請求:

在上面輸出中,最后一行顯示了有一個進程正在監(jiān)聽 8001 端口,這意味著你可以繼續(xù)連接 TCP 的 8001 端口。第一行和第二行顯示了有一個已建立的 TCP 網(wǎng)絡連接,它占用了 8001 和 62556 端口。相似地,第三行和第四行顯示了有另一個已建立的 TCP 連接,它占用了 8001 和 62554 端口。

下面這張圖片顯示了 concTCP.go 在服務多個 TCP 客戶端時的輸出:

類似地,下面這張圖片顯示了兩個 TCP 客戶端的輸出(使用了 nc 工具):

你可以在 維基百科上找到更多關于 nc (即 netcat )的信息。

現(xiàn)在,你學會了如何用大約 65 行 Go 代碼來開發(fā)一個生成隨機數(shù)、支持并發(fā)的 TCP 服務端,這真是太棒了!如果你想要讓你的 TCP 服務端執(zhí)行別的任務,只需要修改 handleConnection 函數(shù)即可。

via:

作者:Mihalis Tsoukalos選題:lkxed譯者:lkxed校對:wxy

關于IPV6的問題

NAT64是一種有狀態(tài)的網(wǎng)絡地址與協(xié)議轉(zhuǎn)換技術,一般只支持通過IPv6網(wǎng)絡側(cè)用戶發(fā)起連接訪問IPv4側(cè)網(wǎng)絡資源。但NAT64也支持通過手工配置靜態(tài)映射關系,實現(xiàn)IPv4網(wǎng)絡主動發(fā)起連接訪問IPv6網(wǎng)絡。NAT64可實現(xiàn)TCP、UDP、ICMP協(xié)議下的IPv6與IPv4網(wǎng)絡地址和協(xié)議轉(zhuǎn)換。

DNS64則主要是配合NAT64工作,主要是將DNS查詢信息中的A記錄(IPv4地址)合成到AAAA記錄(IPv6地址)中,返回合成的AAAA記錄用戶給IPv6側(cè)用戶。

沒怎么看明白,我的理解就是利用那些dns解析你訪問的地址,如果是ipv4網(wǎng)絡,則訪問,并將信息發(fā)給你的。代理的一般都是國外代理,建議嘗試goagent,不知道是否有用。

當前文章:go語言檢測ipv6沖突,ipv6沖突檢測報文
網(wǎng)站地址:http://muchs.cn/article16/hschdg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設、網(wǎng)站維護、網(wǎng)站收錄、外貿(mào)網(wǎng)站建設、標簽優(yōu)化、品牌網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站