《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 兼容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亚洲国产精品_日韩亚洲一区二区
亚洲欧美另类在线| 99精品欧美一区二区三区| 亚洲国产精品t66y| 国产真实久久| 国产日本亚洲高清| 国产精品美女一区二区| 欧美调教视频| 欧美一区在线视频| 亚洲国产综合视频在线观看| 黄色一区二区三区| 国内精品一区二区三区| 国产一区欧美| 激情成人中文字幕| 在线播放不卡| 亚洲黄色视屏| 亚洲激情午夜| 日韩午夜中文字幕| 一区二区高清视频在线观看| 日韩视频中文| 在线一区二区三区四区| 正在播放欧美一区| 午夜欧美精品| 亚洲电影专区| 亚洲精品欧美日韩| 9l国产精品久久久久麻豆| 亚洲午夜电影在线观看| 亚洲专区国产精品| 香蕉国产精品偷在线观看不卡| 欧美一区二区三区在| 久久精品亚洲一区| 欧美91大片| 欧美午夜视频网站| 国产欧美一区二区三区久久 | 欧美一级专区| 久久久精品性| 欧美99久久| 欧美色区777第一页| 国产精品日韩精品欧美精品| 国产亚洲一区二区三区| 亚洲国产精品免费| 亚洲视频在线免费观看| 欧美亚洲色图校园春色| 91久久中文字幕| 亚洲小视频在线观看| 欧美在线视频一区二区| 蜜臀久久99精品久久久画质超高清| 欧美国产一区二区| 国产精品久久久一本精品| 国产日韩综合一区二区性色av| 136国产福利精品导航| 亚洲老板91色精品久久| 欧美一区二区视频97| 亚洲福利av| 国产精品99久久久久久久久| 欧美一区二区三区日韩| 欧美黑人多人双交| 国产精品久久久久久模特| 国产一区二区三区在线观看网站 | 亚洲伦理中文字幕| 午夜精品电影| 99re66热这里只有精品3直播| 性感少妇一区| 欧美精品一区二| 欧美福利影院| 亚洲视频精品| 久久久99国产精品免费| 欧美精选在线| 国产亚洲一级| av成人免费| 亚洲福利小视频| 午夜精品久久久久久久99热浪潮| 媚黑女一区二区| 国产欧美三级| 99精品视频网| 亚洲区一区二区三区| 欧美一区二区三区在线| 欧美精品一区二区三区蜜臀| 国产综合久久久久久| 正在播放亚洲一区| 日韩午夜高潮| 久久综合成人精品亚洲另类欧美 | 亚洲一区二区欧美日韩| 亚洲美女福利视频网站| 久久精品国产99国产精品澳门| 欧美日韩国产高清视频| 激情五月综合色婷婷一区二区| 亚洲深夜福利视频| 亚洲另类在线视频| 久久久久欧美精品| 国产精品日韩精品| 夜夜嗨av一区二区三区网站四季av | 久久中文字幕导航| 国产欧美在线| 一区二区三区产品免费精品久久75 | 亚洲美女诱惑| 麻豆久久久9性大片| 国产嫩草影院久久久久| 蜜乳av另类精品一区二区| 久久久久久亚洲精品杨幂换脸| 欧美性事在线| 亚洲美女av在线播放| 亚洲老板91色精品久久| 噜噜噜91成人网| 国产亚洲欧洲| 亚洲自拍偷拍麻豆| 亚洲在线视频一区| 欧美日韩一视频区二区| 亚洲精品123区| 91久久精品日日躁夜夜躁国产| 久久高清一区| 国产欧美日韩在线| 亚洲欧美日韩国产中文| 午夜精品久久久久久99热| 国产精品护士白丝一区av| 日韩一级黄色片| 中国日韩欧美久久久久久久久| 欧美激情一区在线| 亚洲人成在线免费观看| 99亚洲视频| 欧美日韩一区二区三区免费| 亚洲美女精品久久| 一区二区三区欧美视频| 欧美日韩在线一区二区| 日韩视频在线你懂得| 一区二区三区蜜桃网| 欧美日韩国产在线观看| 亚洲另类在线视频| 亚洲网站视频福利| 欧美体内谢she精2性欧美| 一本色道久久加勒比精品| 亚洲女女女同性video| 国产精品jizz在线观看美国| 一本一本久久a久久精品综合妖精| 亚洲一区二区免费看| 国产精品久久久久久影视| 亚洲一区二区三区乱码aⅴ| 亚洲欧美另类在线观看| 国产精品丝袜91| 香港久久久电影| 久久久免费观看视频| 在线看国产日韩| 一区二区高清| 国产精品一区二区久激情瑜伽| 午夜精品www| 久久久蜜桃一区二区人| 亚洲承认在线| 一区二区三区欧美视频| 国产精品久久777777毛茸茸| 亚洲欧美另类综合偷拍| 久久久www成人免费精品| 精品91免费| 宅男噜噜噜66一区二区| 欧美午夜一区| 午夜精品视频一区| 免费在线看成人av| 99亚洲伊人久久精品影院红桃| 亚洲综合不卡| 国内成人精品视频| 日韩视频在线一区二区三区| 国产精品久久久久久久久免费樱桃| 午夜亚洲福利| 欧美精品成人91久久久久久久| 亚洲一区二区三区777| 久色婷婷小香蕉久久| 一本不卡影院| 久久精品国产欧美激情| 91久久国产综合久久蜜月精品| 亚洲欧美在线一区二区| 一区二区在线免费观看| 一区二区三区高清| 国产日韩欧美综合一区| 日韩视频在线一区| 国产欧美一区二区三区在线老狼| 亚洲日本无吗高清不卡| 国产精品久久一区二区三区| 亚洲国产精品久久久久| 欧美三区美女| 亚洲福利视频专区| 国产精品区一区二区三| 亚洲精品久久久久久久久久久久久| 国产精品久久久久久模特| 亚洲国产小视频在线观看| 国产精品视频yy9099| 亚洲国产婷婷香蕉久久久久久99 | 国产精品国色综合久久| 91久久线看在观草草青青| 国产精品免费在线| 亚洲精品欧美极品| 国产偷自视频区视频一区二区| 99国产精品久久久久久久| 久久蜜臀精品av| 99re6热在线精品视频播放速度| 在线欧美视频| 久久久久久9| 亚洲三级电影全部在线观看高清 | 美女亚洲精品| 亚洲综合视频1区| 欧美精品在线观看播放| 午夜精品免费在线| 欧美日韩一区三区|