<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 兼容IPv4與IPv6的Winsock網(wǎng)絡(luò )編程研究

兼容IPv4與IPv6的Winsock網(wǎng)絡(luò )編程研究

作者: 時(shí)間:2009-07-15 來(lái)源:網(wǎng)絡(luò ) 收藏

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

本文引用地址:http://dyxdggzs.com/article/157984.htm

l 相對于IPv4 WinSock的改變
1.1 IPv6中新增加的常量

為了支持IPv6,需要定義一個(gè)新的地址族名,以便正確地識別和解析IPv6的地址結構。同樣,還需要定義一個(gè)新的協(xié)議簇名(與地址族名具有相同的值),這樣就可以使用合適的協(xié)議創(chuàng )建一個(gè)套接字。新定義的IPv6地址簇名和協(xié)議簇名常量為:AF_INET6和PF_INET6。
1.2 IPV6中新增加的地址結構
IPv6的地址結構通過(guò)struct in6_addr和structockaddr_in6定義,結構定義分別如下:


1.3 IPV6中新增加的域名解析函數
IPv6引入了名為getaddrinfo()和getnameinfo()的新的API。這兩個(gè)API是與協(xié)議無(wú)關(guān)的,且既可用于IPv4,也可用于IPv6的名稱(chēng)解析。getaddrinfo()函數的返回值是addrinfo的結構指針。


getaddrinfo()函數可以把主機名或服務(wù)名轉換成一組socket地址。hints相當于一個(gè)過(guò)濾器,只有符合hints結構的內容才會(huì )返回到res指針中。執行成功后,參數res以鏈表的形式返回解析出來(lái)的地址,可以將這些地址直接傳遞給bind(),connect(),sendto()等函數。
地址到名稱(chēng)的轉換可以通過(guò)另一個(gè)新的套接字函數getnamein{o()進(jìn)行。getnameinfo()函數的功能與getaddrinfo()函數相反,該函數接受已經(jīng)初始化的套接字結構,并返回與地址及端口信息對應的主機和服務(wù).

2 IPv4與IPv6的WinSock規則
2.1 使用sockaddr_storage結構
sockaddr_storage結構是新的套接字結構,它與協(xié)議無(wú)關(guān),并擁有充分的地址空間容納IPv4或者IPv6地址信息,且可以很方便地轉換成sockaddr_in結構和sockaddr_in6結構。同時(shí),這個(gè)結構還具有針對64位對齊問(wèn)題的填充項,使用這個(gè)結構可以很容易地寫(xiě)出與地址協(xié)議簇無(wú)關(guān)和跨平臺的程序代碼,因此編寫(xiě)IPv4與IPv6的網(wǎng)絡(luò )程序時(shí)要使用這個(gè)結構表示網(wǎng)絡(luò )地址。

2.2 使用新的名稱(chēng)解析函數getaddrinfo()和getnam-einfo()
這兩個(gè)函數是隨IPv6引進(jìn)的新的名稱(chēng)解析函數,與地址協(xié)議簇無(wú)關(guān),隱藏了名字到地址轉換和地址到名字轉換的大量細節,既能夠處理IPv6地址,也能處理IPv4地址。它們也替代性地實(shí)現了下列函數接口的功能:gethostbyname(),gethostbyaddr(),inet_ntoa(),inet_aton(),getservbyname(),getservbyport()??梢栽诤?jiǎn)化程序的同時(shí)實(shí)現與地址協(xié)議簇無(wú)關(guān)的編程,還可以提高程序的可移植性。

3 IPv4與IPv6雙協(xié)議試驗平臺的搭建
由于大部分用戶(hù)的操作系統都是Windows XP,所以在此僅介紹Windows XP下IPv6的安裝與配置。
Windows XP操作系統內置了IPv6協(xié)議棧,提供了一組命令行方式的IPv6檢測配置工具。在XP下安裝IPv6協(xié)議后,對原IPv4協(xié)議的使用不產(chǎn)生任何影響,整個(gè)網(wǎng)絡(luò )上各終端設備能夠在一個(gè)物理網(wǎng)絡(luò )上共享IPv4和IPv6協(xié)議,并支持2種協(xié)議的數據傳輸,即:所謂的雙棧(DualStack)共享。
安裝IPv6協(xié)議和配置地址及默認網(wǎng)關(guān)的過(guò)程如下:




上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>