掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引 言
隨著通信技術(shù)和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,特別是近年來(lái),IPv4協(xié)議面臨著一些難以解決的問(wèn)題,如地址短缺、缺乏服務(wù)質(zhì)量控制Qos和安全性差等。為了應(yīng)對(duì)這一挑戰(zhàn),IETF(Internet Engineer Task Force)組織提出了為適應(yīng)未來(lái)對(duì)于網(wǎng)絡(luò)基礎(chǔ)設(shè)施數(shù)量和質(zhì)量需求而設(shè)計(jì)的下一代互聯(lián)網(wǎng)協(xié)議IPv6。IPv6繼承了IPv4的優(yōu)點(diǎn),并根據(jù)IPv4多年來(lái)運(yùn)行的經(jīng)驗(yàn)進(jìn)行了大幅度的修改和功能擴(kuò)充,其擴(kuò)展性、路由、安全性、配置和可靠性都有明顯改進(jìn)。
l IPv6相對(duì)于IPv4 WinSock的改變
1.1 IPv6中新增加的常量
為了支持IPv6,需要定義一個(gè)新的地址族名,以便正確地識(shí)別和解析IPv6的地址結(jié)構(gòu)。同樣,還需要定義一個(gè)新的協(xié)議簇名(與地址族名具有相同的值),這樣就可以使用合適的協(xié)議創(chuàng)建一個(gè)套接字。新定義的IPv6地址簇名和協(xié)議簇名常量為:AF_INET6和PF_INET6。
1.2 IPV6中新增加的地址結(jié)構(gòu)
IPv6的地址結(jié)構(gòu)通過(guò)struct in6_addr和structockaddr_in6定義,結(jié)構(gòu)定義分別如下:
1.3 IPV6中新增加的域名解析函數(shù)
IPv6引入了名為getaddrinfo()和getnameinfo()的新的API。這兩個(gè)API是與協(xié)議無(wú)關(guān)的,且既可用于IPv4,也可用于IPv6的名稱解析。getaddrinfo()函數(shù)的返回值是addrinfo的結(jié)構(gòu)指針。
getaddrinfo()函數(shù)可以把主機(jī)名或服務(wù)名轉(zhuǎn)換成一組socket地址。hints相當(dāng)于一個(gè)過(guò)濾器,只有符合hints結(jié)構(gòu)的內(nèi)容才會(huì)返回到res指針中。執(zhí)行成功后,參數(shù)res以鏈表的形式返回解析出來(lái)的地址,可以將這些地址直接傳遞給bind(),connect(),sendto()等函數(shù)。
地址到名稱的轉(zhuǎn)換可以通過(guò)另一個(gè)新的套接字函數(shù)getnamein{o()進(jìn)行。getnameinfo()函數(shù)的功能與getaddrinfo()函數(shù)相反,該函數(shù)接受已經(jīng)初始化的套接字結(jié)構(gòu),并返回與地址及端口信息對(duì)應(yīng)的主機(jī)和服務(wù).
2 兼容IPv4與IPv6的WinSock網(wǎng)絡(luò)編程規(guī)則
2.1 使用sockaddr_storage結(jié)構(gòu)
sockaddr_storage結(jié)構(gòu)是新的套接字結(jié)構(gòu),它與協(xié)議無(wú)關(guān),并擁有充分的地址空間容納IPv4或者IPv6地址信息,且可以很方便地轉(zhuǎn)換成sockaddr_in結(jié)構(gòu)和sockaddr_in6結(jié)構(gòu)。同時(shí),這個(gè)結(jié)構(gòu)還具有針對(duì)64位對(duì)齊問(wèn)題的填充項(xiàng),使用這個(gè)結(jié)構(gòu)可以很容易地寫出與地址協(xié)議簇?zé)o關(guān)和跨平臺(tái)的程序代碼,因此編寫兼容IPv4與IPv6的網(wǎng)絡(luò)程序時(shí)要使用這個(gè)結(jié)構(gòu)表示網(wǎng)絡(luò)地址。
2.2 使用新的名稱解析函數(shù)getaddrinfo()和getnam-einfo()
這兩個(gè)函數(shù)是隨IPv6引進(jìn)的新的名稱解析函數(shù),與地址協(xié)議簇?zé)o關(guān),隱藏了名字到地址轉(zhuǎn)換和地址到名字轉(zhuǎn)換的大量細(xì)節(jié),既能夠處理IPv6地址,也能處理IPv4地址。它們也替代性地實(shí)現(xiàn)了下列函數(shù)接口的功能:gethostbyname(),gethostbyaddr(),inet_ntoa(),inet_aton(),getservbyname(),getservbyport()??梢栽诤?jiǎn)化程序的同時(shí)實(shí)現(xiàn)與地址協(xié)議簇?zé)o關(guān)的編程,還可以提高程序的可移植性。
3 IPv4與IPv6雙協(xié)議試驗(yàn)平臺(tái)的搭建
由于大部分用戶的操作系統(tǒng)都是Windows XP,所以在此僅介紹Windows XP下IPv6的安裝與配置。
Windows XP操作系統(tǒng)內(nèi)置了IPv6協(xié)議棧,提供了一組命令行方式的IPv6檢測(cè)配置工具。在XP下安裝IPv6協(xié)議后,對(duì)原IPv4協(xié)議的使用不產(chǎn)生任何影響,整個(gè)網(wǎng)絡(luò)上各終端設(shè)備能夠在一個(gè)物理網(wǎng)絡(luò)上共享IPv4和IPv6協(xié)議,并支持2種協(xié)議的數(shù)據(jù)傳輸,即:所謂的雙棧(DualStack)共享。
安裝IPv6協(xié)議和配置地址及默認(rèn)網(wǎng)關(guān)的過(guò)程如下:
4 VC環(huán)境下Daytime協(xié)議的實(shí)現(xiàn)
根據(jù)以上所述,下面開(kāi)發(fā)一個(gè)可同時(shí)應(yīng)用于IPv4和IPv6的實(shí)現(xiàn)Daytime協(xié)議的程序。該程序基于c/s結(jié)構(gòu),客戶端使用TCP協(xié)議連接到服務(wù)器端,向服務(wù)器發(fā)送請(qǐng)求;服務(wù)器收到請(qǐng)求后,將當(dāng)前的時(shí)間發(fā)回客戶端。
4.1 服務(wù)器端程序設(shè)計(jì)
服務(wù)器端首先啟動(dòng),通過(guò)調(diào)用socket()建立一個(gè)Socket,然后調(diào)用bind()將該Socket和本地網(wǎng)絡(luò)地址聯(lián)系在一起,再調(diào)用listen()使Socket做好偵聽(tīng)的準(zhǔn)備,并規(guī)定請(qǐng)求隊(duì)列的長(zhǎng)度,之后就調(diào)用accept()接收連接。連接建立后,服務(wù)器端創(chuàng)建一個(gè)通信用的’Sock-et,把當(dāng)前時(shí)間發(fā)回給客戶端。最后,在數(shù)據(jù)傳送結(jié)束后,調(diào)用close()關(guān)閉Socket。
服務(wù)器端設(shè)計(jì)過(guò)程如下:
(1)創(chuàng)建服務(wù)器端套接字
(3)監(jiān)聽(tīng)并接收連接
4.2 客戶端程序設(shè)計(jì)
客戶端創(chuàng)建一個(gè)Socket,并調(diào)用connect()和服務(wù)器建立連接。連接建立后,客戶端等待服務(wù)器返回的當(dāng)前時(shí)間。最后,待數(shù)據(jù)傳送結(jié)束后,調(diào)用close()關(guān)閉Socket。
客戶端設(shè)計(jì)過(guò)程如下。
(1)創(chuàng)建客戶端套接字
5 程序運(yùn)行后的結(jié)果
當(dāng)服務(wù)器運(yùn)行后,可同時(shí)在IPv4和IPv6地址監(jiān)聽(tīng),客戶端向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器接到請(qǐng)求后,向客戶端返回一個(gè)當(dāng)前時(shí)間。此實(shí)驗(yàn)達(dá)到了預(yù)期效果。
服務(wù)器端運(yùn)行結(jié)果如圖1所示。
6 結(jié) 語(yǔ)
雖然IPv6網(wǎng)絡(luò)已經(jīng)開(kāi)始實(shí)驗(yàn)性部署,但是IPv4網(wǎng)絡(luò)向IPv6網(wǎng)絡(luò)的過(guò)渡和互通仍有一定難度,IPv4和IPv6網(wǎng)絡(luò)還需共存一段時(shí)間,因此開(kāi)發(fā)能夠同時(shí)支持IPv4和IPv6的網(wǎng)絡(luò)應(yīng)用程序會(huì)變得越來(lái)越重要。
在此編寫了一個(gè)能夠同時(shí)支持IPv4和IPv6協(xié)議的程序,此程序可以方便地進(jìn)行今后其他應(yīng)用協(xié)議及軟件的移植,需在服務(wù)器端設(shè)計(jì)過(guò)程(4)及客戶端設(shè)計(jì)過(guò)程(3)中根據(jù)其具體協(xié)議及軟件進(jìn)行相應(yīng)改變。
中東迪拜2022年10月13日 /美通社/ -- 在華為全聯(lián)接大會(huì)2022迪拜站“深耕油氣數(shù)字化,助推多場(chǎng)景智慧化進(jìn)程”主題論壇上,華為企業(yè)BG油氣系統(tǒng)部首席代表李陽(yáng)明提出,數(shù)字技術(shù)是實(shí)現(xiàn)“向數(shù)據(jù)要石油、向智能要發(fā)展”的...
關(guān)鍵字: 華為 數(shù)字化 網(wǎng)絡(luò)架構(gòu) IPv6濟(jì)南2022年9月27日 /美通社/ -- 8月24日,2022無(wú)錫創(chuàng)建"IPv6+"創(chuàng)新之城啟動(dòng)儀式暨互聯(lián)網(wǎng)大會(huì)在無(wú)錫市院士小鎮(zhèn)舉辦。中國(guó)工程院院士、推進(jìn)IPv6規(guī)模部署專家委員會(huì)主任鄔賀銓、江蘇省...
關(guān)鍵字: 互聯(lián)網(wǎng) TOP 大數(shù)據(jù) IPv69月9日,全球IPv6峰會(huì)如期舉行,本次會(huì)議匯聚全球頂尖產(chǎn)業(yè)專家,分享行業(yè)動(dòng)態(tài)、探討前沿趨勢(shì)和應(yīng)用部署,共研IPv6下一代互聯(lián)網(wǎng)新技術(shù)、新生態(tài)。紫光股份旗下新華三集團(tuán)受邀出席,并從IPv6發(fā)展趨勢(shì)洞察、行業(yè)應(yīng)用、技術(shù)落地...
關(guān)鍵字: 新華三 IPv6 互聯(lián)網(wǎng)作為全球最早布局NB-IoT(窄帶互聯(lián)網(wǎng))業(yè)務(wù)的運(yùn)營(yíng)商之一,中國(guó)電信NB-IoT連接規(guī)模超1.6億,是全球首個(gè)NB-IoT連接數(shù)破億的運(yùn)營(yíng)商,并且中國(guó)電信在物聯(lián)網(wǎng)領(lǐng)域打造了一個(gè)又一個(gè)標(biāo)桿案例,為物聯(lián)網(wǎng)產(chǎn)業(yè)應(yīng)用落地注入新動(dòng)...
關(guān)鍵字: 物聯(lián)網(wǎng) 天翼物聯(lián) IPv6從“最多跑一次”到“一次不用跑”,從“一網(wǎng)通辦”到“一網(wǎng)統(tǒng)管”,我們?cè)絹?lái)越能感受到城市智慧化建設(shè)為我們工作、生活帶來(lái)的極大便利,這背后是數(shù)字化變革帶來(lái)的數(shù)字惠民的強(qiáng)大推動(dòng)。
關(guān)鍵字: IPv6 城市智慧化 物聯(lián)網(wǎng)近期,中央網(wǎng)信辦信發(fā)展局負(fù)責(zé)人表示,自從統(tǒng)籌推動(dòng)數(shù)字化建設(shè)以來(lái),取得了非常明顯的成果,截至到目前,在全國(guó)范圍內(nèi)已建成并開(kāi)始使用的5G基站超過(guò)197萬(wàn)個(gè),幾乎所有地級(jí)市,以及超過(guò)96%的鄉(xiāng)鎮(zhèn)已經(jīng)實(shí)現(xiàn)5G全網(wǎng)絡(luò)覆蓋,5G移動(dòng)...
關(guān)鍵字: 網(wǎng)信辦 5G IPv6 基站 雙千兆網(wǎng)絡(luò)摘 要:隨著互聯(lián)網(wǎng)高速發(fā)展,IPv4地址枯竭問(wèn)題已經(jīng)變得越來(lái)越嚴(yán)峻,在我國(guó),IPv4地址枯竭問(wèn)題已經(jīng)開(kāi)始制約中國(guó) 互聯(lián)網(wǎng)的發(fā)展。IPv6替代IPv4成為下一代互聯(lián)網(wǎng)協(xié)議已經(jīng)是大勢(shì)所趨,迫在眉睫。同時(shí),下一代互聯(lián)網(wǎng)的演進(jìn)部...
關(guān)鍵字: 下一代互聯(lián)網(wǎng) IPv6 雙棧 智能小區(qū)