《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 兼容IPv4與IPv6的Winsock網絡編程研究
兼容IPv4與IPv6的Winsock網絡編程研究
維庫開發網
摘要: 隨著通信技術和網絡技術的飛速發展,特別是近年來,IPv4協議面臨著一些難以解決的問題,如地址短缺 ...
Abstract:
Key words :

      0 引 言

      隨著通信技術和網絡技術的飛速發展,特別是近年來,IPv4協議面臨著一些難以解決的問題,如地址短缺、缺乏服務質量控制Qos和安全性差等。為了應對這一挑戰,IETF(Internet Engineer Task Force)組織提出了為適應未來對于網絡基礎設施數量和質量需求而設計的下一代互聯網協議IPv6。IPv6繼承了IPv4的優點,并根據IPv4多年來運行的經驗進行了大幅度的修改和功能擴充,其擴展性、路由、安全性、配置和可靠性都有明顯改進。

      l IPv6相對于IPv4 WinSock的改變

      1.1 IPv6中新增加的常量

      為了支持IPv6,需要定義一個新的地址族名,以便正確地識別和解析IPv6的地址結構。同樣,還需要定義一個新的協議簇名(與地址族名具有相同的值),這樣就可以使用合適的協議創建一個套接字。新定義的IPv6地址簇名和協議簇名常量為:AF_INET6和PF_INET6。

      1.2 IPV6中新增加的地址結構

      IPv6的地址結構通過struct in6_addr和structockaddr_in6定義,結構定義分別如下:

      1.3 IPV6中新增加的域名解析函數

      IPv6引入了名為getaddrinfo()和getnameinfo()的新的API。這兩個API是與協議無關的,且既可用于IPv4,也可用于IPv6的名稱解析。getaddrinfo()函數的返回值是addrinfo的結構指針。


 

      getaddrinfo()函數可以把主機名或服務名轉換成一組socket地址。hints相當于一個過濾器,只有符合hints結構的內容才會返回到res指針中。執行成功后,參數res以鏈表的形式返回解析出來的地址,可以將這些地址直接傳遞給bind(),connect(),sendto()等函數。

      地址到名稱的轉換可以通過另一個新的套接字函數getnamein{o()進行。getnameinfo()函數的功能與getaddrinfo()函數相反,該函數接受已經初始化的套接字結構,并返回與地址及端口信息對應的主機和服務.

      2 兼容IPv4與IPv6的WinSock網絡編程規則

      2.1 使用sockaddr_storage結構

      sockaddr_storage結構是新的套接字結構,它與協議無關,并擁有充分的地址空間容納IPv4或者IPv6地址信息,且可以很方便地轉換成sockaddr_in結構和sockaddr_in6結構。同時,這個結構還具有針對64位對齊問題的填充項,使用這個結構可以很容易地寫出與地址協議簇無關和跨平臺的程序代碼,因此編寫兼容IPv4與IPv6的網絡程序時要使用這個結構表示網絡地址。

      2.2 使用新的名稱解析函數getaddrinfo()和getnam-einfo()

這兩個函數是隨IPv6引進的新的名稱解析函數,與地址協議簇無關,隱藏了名字到地址轉換和地址到名字轉換的大量細節,既能夠處理IPv6地址,也能處理IPv4地址。它們也替代性地實現了下列函數接口的功能:gethostbyname(),gethostbyaddr(),inet_ntoa(),inet_aton(),getservbyname(),getservbyport()。可以在簡化程序的同時實現與地址協議簇無關的編程,還可以提高程序的可移植性。

      3 IPv4與IPv6雙協議試驗平臺的搭建

      由于大部分用戶的操作系統都是Windows XP,所以在此僅介紹Windows XP下IPv6的安裝與配置。

      Windows XP操作系統內置了IPv6協議棧,提供了一組命令行方式的IPv6檢測配置工具。在XP下安裝IPv6協議后,對原IPv4協議的使用不產生任何影響,整個網絡上各終端設備能夠在一個物理網絡上共享IPv4和IPv6協議,并支持2種協議的數據傳輸,即:所謂的雙棧(DualStack)共享。

      安裝IPv6協議和配置地址及默認網關的過程如下:

      4 VC環境下Daytime協議的實現

      根據以上所述,下面開發一個可同時應用于IPv4和IPv6的實現Daytime協議的程序。該程序基于c/s結構,客戶端使用TCP協議連接到服務器端,向服務器發送請求;服務器收到請求后,將當前的時間發回客戶端。

      4.1 服務器端程序設計

      服務器端首先啟動,通過調用socket()建立一個Socket,然后調用bind()將該Socket和本地網絡地址聯系在一起,再調用listen()使Socket做好偵聽的準備,并規定請求隊列的長度,之后就調用accept()接收連接。連接建立后,服務器端創建一個通信用的’Sock-et,把當前時間發回給客戶端。最后,在數據傳送結束后,調用close()關閉Socket。

      服務器端設計過程如下:

      (1)創建服務器端套接字

      (3)*并接收連接

      4.2 客戶端程序設計

      客戶端創建一個Socket,并調用connect()和服務器建立連接。連接建立后,客戶端等待服務器返回的當前時間。最后,待數據傳送結束后,調用close()關閉Socket。

      客戶端設計過程如下。

      (1)創建客戶端套接字

      5 程序運行后的結果

      當服務器運行后,可同時在IPv4和IPv6地址*,客戶端向服務器發送請求,服務器接到請求后,向客戶端返回一個當前時間。此實驗達到了預期效果。

      服務器端運行結果如圖1所示。

      6 結 語

      雖然IPv6網絡已經開始實驗性部署,但是IPv4網絡向IPv6網絡的過渡和互通仍有一定難度,IPv4和IPv6網絡還需共存一段時間,因此開發能夠同時支持IPv4和IPv6的網絡應用程序會變得越來越重要。

      在此編寫了一個能夠同時支持IPv4和IPv6協議的程序,此程序可以方便地進行今后其他應用協議及軟件的移植,需在服務器端設計過程及客戶端設計過程中根據其具體協議及軟件進行相應改變。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲激情视频| 久久高清一区| 欧美国产综合一区二区| 欧美一区激情视频在线观看| 亚洲线精品一区二区三区八戒| 亚洲欧洲视频在线| 久久精品一区二区三区四区 | 亚洲一区久久久| 日韩亚洲精品电影| 亚洲乱码国产乱码精品精98午夜| 亚洲高清不卡在线| 亚洲经典视频在线观看| 亚洲人成人77777线观看| 亚洲二区免费| 亚洲精品久久久久久久久久久久久| 亚洲国产精品女人久久久| 久久黄金**| 亚洲电影免费观看高清完整版| 久久精品日韩欧美| 99人久久精品视频最新地址| 在线激情影院一区| 亚洲国产婷婷综合在线精品 | 欧美精品三级日韩久久| 欧美伦理在线观看| 欧美日韩精品免费观看视一区二区 | 亚洲欧美日韩中文视频| 亚洲一区二区动漫| 亚洲一区二区三区欧美| 亚洲尤物影院| 羞羞视频在线观看欧美| 久久国产精品一区二区三区| 亚洲国产精品一区二区三区| 亚洲精品国产精品久久清纯直播| 日韩一区二区精品在线观看| 亚洲一区成人| 久久国产天堂福利天堂| 麻豆成人在线观看| 欧美另类人妖| 国产精品一区二区三区久久| 狠狠爱综合网| 亚洲人成网站影音先锋播放| 中国女人久久久| 欧美一区二区三区四区在线观看| 亚洲大胆视频| 亚洲视频视频在线| 欧美在线亚洲| 美女久久网站| 国产精品国产a级| 国产一区二区三区电影在线观看| 影音先锋在线一区| 99精品欧美一区二区蜜桃免费| 亚洲一区二区三区四区在线观看| 久久国产精品一区二区| 一区二区免费在线播放| 亚洲人体影院| 久久成人这里只有精品| 亚洲六月丁香色婷婷综合久久| 亚洲欧美美女| 久久综合久色欧美综合狠狠| 欧美日韩大片| 国产欧美一区二区三区在线老狼 | 亚洲欧美国产制服动漫| 亚洲国产精品成人久久综合一区| 中国成人黄色视屏| 久久天天躁夜夜躁狠狠躁2022| 欧美日韩国产色综合一二三四 | 91久久国产综合久久91精品网站| 一区二区高清视频在线观看| 久久成人精品无人区| 欧美精品二区三区四区免费看视频| 国产精品网站在线播放| 亚洲国产天堂久久综合| 午夜精品久久久久| 一本色道久久综合亚洲精品不卡 | 欧美美女bb生活片| 国产一区二区成人久久免费影院| 亚洲精品久久久一区二区三区| 欧美亚洲日本一区| 一区二区三区高清| 久久综合伊人| 国产乱肥老妇国产一区二| 91久久中文字幕| 亚洲观看高清完整版在线观看| 亚洲香蕉网站| 欧美激情一区二区三区在线视频 | 欧美一区影院| 亚洲欧美国产毛片在线| 欧美激情第4页| 韩国久久久久| 先锋影音国产一区| 亚洲一级网站| 欧美激情欧美激情在线五月| 国产一区二区三区久久久久久久久| 一本色道久久综合亚洲精品不 | 国产精品系列在线播放| 日韩一级精品视频在线观看| 亚洲国产综合91精品麻豆| 午夜精品在线| 欧美日韩在线三区| 亚洲国产精品一区在线观看不卡| 亚洲欧美日本精品| 亚洲视频欧美在线| 欧美黄色网络| 在线精品福利| 亚洲国产成人av| 久久一区视频| 久久久免费av| 国产精品日韩欧美| 一本色道久久综合| av成人老司机| 欧美美女操人视频| 亚洲欧洲在线看| 最新成人在线| 欧美成人精品不卡视频在线观看| 国产日韩欧美一区在线| 亚洲视频免费在线| 亚洲一区二区三区激情| 欧美日韩另类一区| 日韩一二三区视频| 一本久久综合亚洲鲁鲁五月天| 欧美成人综合| 亚洲国产欧美日韩| 亚洲精品午夜| 欧美成人在线影院| 亚洲国产成人在线视频| 亚洲韩日在线| 欧美国产第二页| 91久久极品少妇xxxxⅹ软件| 亚洲精品少妇网址| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美激情亚洲一区| 亚洲国产欧美一区二区三区丁香婷| 亚洲国产激情| 免费欧美视频| 亚洲国产成人午夜在线一区 | 久久亚洲不卡| 在线看国产一区| 亚洲精品影院在线观看| 欧美久久久久久久久久| 亚洲三级免费| 亚洲一区影音先锋| 国产精品男人爽免费视频1| 亚洲视频一区二区免费在线观看| 亚洲在线中文字幕| 国产伦精品免费视频| 欧美专区第一页| 美女精品自拍一二三四| 亚洲人永久免费| 中文国产一区| 国产精品一二三四| 欧美一区深夜视频| 你懂的亚洲视频| 在线一区欧美| 久久精品123| 在线看片欧美| 中文一区二区| 国产欧美视频一区二区三区| 久久大香伊蕉在人线观看热2| 免费在线亚洲欧美| 日韩网站在线| 欧美在线精品一区| 在线成人激情黄色| 99re66热这里只有精品4| 欧美午夜激情小视频| 亚洲欧美日韩在线高清直播| 欧美激情亚洲激情| 国产日韩欧美精品| 亚洲片区在线| 欧美视频在线一区二区三区| 亚洲在线观看视频| 久久亚洲欧洲| 一本色道久久99精品综合| 欧美一区在线视频| 黑丝一区二区三区| 亚洲欧美激情视频| 在线观看欧美视频| 亚洲欧美国产精品va在线观看| 国内精品久久久| 在线一区二区三区四区| 国产视频亚洲精品| 日韩西西人体444www| 国产视频久久网| 中文在线不卡| 国内偷自视频区视频综合| av不卡在线| 国产亚洲a∨片在线观看| 99精品久久久| 国产亚洲欧美一区在线观看 | 免费高清在线一区| 国语自产精品视频在线看8查询8| 正在播放亚洲一区| 好吊妞**欧美| 亚洲一区视频| 亚洲观看高清完整版在线观看| 香蕉久久久久久久av网站| 亚洲大胆美女视频| 欧美一级视频免费在线观看| 亚洲夫妻自拍| 久久精品人人做人人爽电影蜜月| 日韩视频精品在线|