測試ipv6情況

2021-07-23 06:25:19 字數 1360 閱讀 9069

#coding=utf8

#ipv4環境下:

#getaddrinfo from: ipv6-test.com

#[(2, 2, 17, '', ('5.135.165.173', 0)), (2, 1, 6, '', ('5.135.165.173', 0)), (30, 2, 17, '', ('2001:41d0:8:e8ad::1', 0, 0, 0)), (30, 1, 6, '', ('2001:41d0:8:e8ad::1', 0, 0, 0))]

#inet,5.135.165.173

#inet6,2001:41d0:8:e8ad::1

#ipv6環境下

#getaddrinfo from: ipv6-test.com

#[(30, 2, 17, '', ('64:ff9b::587:a5ad', 0, 0, 0)), (30, 1, 6, '', ('64:ff9b::587:a5ad', 0, 0, 0)), (2, 2, 17, '', ('5.135.165.173', 0)), (2, 1, 6, '', ('5.135.165.173', 0))]

#inet6,64:ff9b::587:a5ad

#inet,5.135.165.173

#測試時發現只要環境是ipv6,測試總會返回兩個位址,如果是ipv4則大部分只返回ipv4位址,除了特別配置了ipv6的服務會返回ipv6位址

import sys, socket

strhost = "ipv6-test.com"

print("getaddrinfo from: " + strhost)

result = socket.getaddrinfo(strhost, none)

print(result)

for r in result:

if r[2] != socket.ipproto_tcp:

continue

if r[0] == socket.af_inet:

print("inet," + r[4][0])

elif r[0] == socket.af_inet6:

print("inet6," + r[4][0])

#測試中看起來ipv4則第乙個位址是ipv4位址,ipv6環境則第乙個位址是ipv6位址,不論是否服務端真正支援ipv6

benvipv6 = false

if len(result) > 0:

if result[0][0] == socket.af_inet6:

benvipv6 = true

if benvipv6:

print("ipv6 env.\n")

else:

print("ipv4 env.\n")

IPv6技術 什麼是IPv6

ipv6技術 1 引言 ipv4位址即將耗盡,因此需要移轉至ipv6的討論,過去數年來一直不曾中斷。ipv4和ipv6在報文結構 報文字段意義以及位址配置諸多方面都有顯著的不同,這給從ipv4到ipv6過渡時期internet的運作帶來了極大的困難。當前接入網技術上幾乎所有的應用都是構建在ipv4上...

busybox ftpd關於ipv6的測試

在測試最新busybox ftpd的ipv6支援情況時,客戶端用filezillaclient登入ftpd。在輸入主機ip時,直接輸入ipv6位址,filezilla好像解析不了這個位址,後來發現在輸入ipv6位址時,需要加上 例如 2001 470 1f01 f52b 5 filezilla終於解...

IPv6知識概述 IPv6位址

首選格式 x x x x x x x x x表示乙個4位十六進製制數 典型的例子如下所示 2000 0000 0000 0000 0001 2345 6789 abcd ipv6位址每段中的前導0是可以去掉的,但是至少要保證每一段有乙個數字。將不必要的前導0去掉後,上述位址可以表示為 2000 0 ...