标签: ipv6

如何将IPV6地址转换为IPV4地址?

我有使用IPv4地址的应用程序(它存储它们很长),所以它只能理解IPv4地址.

是否有可能转换IPv6地址IPv4Java

java ip-address ipv4 ipv6

12
推荐指数
4
解决办法
11万
查看次数

如何在SQL Server中的单列中存储IPv4或IPv6?

我应该使用binary(16)varbinary(16)

我知道我可以使用 getAddress()java.net.InetAddress(JAVA)或System.Net.IPAddress(C#),以获得一个byte[]双方的表现IPv4IPv6,但如果我需要插入IPv4binary(4)进入binary(16)场中SQL Server,做我需要担心填充或什么?

t-sql sql-server ipv4 ipv6 inetaddress

12
推荐指数
2
解决办法
5875
查看次数

了解如何制定IPv6地址的权威指南

为了好玩,我想更好地理解IPv6地址中的构建块或元素.

根据我的理解,以下是基础知识:

  • IPv6地址长度为128位(写为8个块,每个块有16位)
  • 每个块编码为0到0xffff之间的十六进制数字.可以省略前导零.
  • 可以附加IPv4点对四地址,它将占用IPv6地址的低32位.1:2:3:4:5:6:200.201.202.203.(IPv4的规则与预期一致.)
  • IPv4表示只能出现在最后.
  • 可以使用双冒号语法来表示具有零的一个或多个块.1:2 :: 7:8相当于1:2:0:0:0:0:7:8.
  • 每个IPv6地址可能只有一个双冒号,否则它在语法上是错误的.
  • 双冒号可能出现在ip6的开头,中间或末尾,但不在IPv4点分四地址内.

以上几点都是正确的吗?

请不要告诉我阅读RFC.关于这个问题有几个,实际上没有一个简单的例子来描述各种编码机制.我相信很多人会欣赏带有示例的简单列表.

在线测试工具 最近的在线工具是 http://www.dominicsayers.com/source/beta/is_email/test/, 但这些消息令人困惑,实际上并没有用简单的英语说出什么是对错,为什么.它实际上也是为电子邮件构建的,当然可能包含IPv6地址,因此它并不完全理想.

ipv6

12
推荐指数
2
解决办法
3669
查看次数

使用boost asio枚举我的卡的ipv4和ipv6地址

我试图枚举所有网卡的ipv4和ipv6地址(我有2张卡)我的电脑.

我使用以下代码来做到这一点.

using boost::asio::ip::tcp;
boost::asio::io_service io_service;

    tcp::resolver resolver(io_service);
    tcp::resolver::query query(boost::asio::ip::host_name(),"");
    tcp::resolver::iterator it=resolver.resolve(query);

    while(it!=tcp::resolver::iterator())
    {
        boost::asio::ip::address addr=(it++)->endpoint().address();
        if(addr.is_v6())
        {
            std::cout<<"ipv6 address: ";
        }
        else
            std::cout<<"ipv4 address: ";

        std::cout<<addr.to_string()<<std::endl;

    }
Run Code Online (Sandbox Code Playgroud)

代码显示正确的ipv4地址,但不显示ipv6.这是输出

ipv6 address: ::1
ipv4 address: 192.168.10.200
ipv4 address: 192.168.10.236
Run Code Online (Sandbox Code Playgroud)

我对ipv6知之甚少.当我使用ipconfig/all列出有关网络接口的信息时,我看到实际的ipv6地址是

fe80::226:5aff:fe14:5687%5 
fe80::225:64ff:feb2:4f61%4
Run Code Online (Sandbox Code Playgroud)

有人可以指导我如何列出ipv6地址.谢谢.

ipv6 boost-asio

12
推荐指数
1
解决办法
5784
查看次数

如何使用C套接字API侦听所有IPV6地址

我维护GPSD,这是一个广泛部署的开源服务守护进程,可以监控GPS和其他大地测量传感器.它在IPv4和IPv6上侦听端口2947上的客户端应用程序连接.为了安全和隐私,它通常只监听环回地址,但守护进程有一个-G选项,用于使其监听任何地址.

问题:-G选项在IPv4中有效,但我无法弄清楚如何使其与IPv6一起使用.应该基于各种教程示例工作的方法不会产生错误,表明该地址已在使用中.我正在寻求帮助来解决IPv6网络编程经验丰富的人.

相关代码见http://git.berlios.de/cgi-bin/gitweb.cgi?p=gpsd;a=blob;f=gpsd.c;h=ee2156caf03ca23405f57f3e04e9ef306a75686f;hb=HEAD

此代码在IPv4下的-G和非G情况下都能正常运行,因为可以使用netstat -l轻松验证.

现在看看"案例AF_INET6:"之后的第398行.listen_global选项由-G设置; 如果为false,则代码成功.目前有一个以下评论,继承自一个未知的贡献者,如下所示:

/* else */
        /* BAD:  sat.sa_in6.sin6_addr = in6addr_any;
     * the simple assignment will not work (except as an initializer)
     * because sin6_addr is an array not a simple type
     * we could do something like this:
     * memcpy(sat.sa_in6.sin6_addr, in6addr_any, sizeof(sin6_addr));
     * BUT, all zeros is IPv6 wildcard, and we just zeroed the array
     * so really nothing to do here
     */
Run Code Online (Sandbox Code Playgroud)

根据我查找的各种教程示例,分配"sat.sa_in6.sin6_addr = in6addr_any;" (尽管评论)是正确的,它确实编译.但是,使用-G启动时无法声明监听地址已被使用.

作业是"sat.sa_in6.sin6_addr = in6addr_any;" 名义上正确吗?还有什么,如果有的话,我错过了什么?

c ipv6

12
推荐指数
1
解决办法
1万
查看次数

urllib2和asyncore之间的性能差异

我对这个简单的python脚本的性能有一些疑问:

import sys, urllib2, asyncore, socket, urlparse
from timeit import timeit

class HTTPClient(asyncore.dispatcher):
    def __init__(self, host, path):
        asyncore.dispatcher.__init__(self)
        self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
        self.connect( (host, 80) )
        self.buffer = 'GET %s HTTP/1.0\r\n\r\n' % path
        self.data = ''
    def handle_connect(self):
        pass
    def handle_close(self):
        self.close()
    def handle_read(self):
        self.data += self.recv(8192)
    def writable(self):
        return (len(self.buffer) > 0)
    def handle_write(self):
        sent = self.send(self.buffer)
        self.buffer = self.buffer[sent:]

url = 'http://pacnet.karbownicki.com/api/categories/'

components = urlparse.urlparse(url)
host = components.hostname or ''
path = components.path

def fn1():
    try:
        response = urllib2.urlopen(url)
        try: …
Run Code Online (Sandbox Code Playgroud)

python urllib2 ipv6 asyncore

12
推荐指数
1
解决办法
1287
查看次数

如何在Google Chrome(第45版)中禁用ipV6?

我最近在我的开发者计算机上将Chrome更新为v45.此更新似乎将我的客户端Ip设置为始终使用IpV6.我在本地开发的一些应用程序要求我使用Ipv4,所以我需要在chrome上禁用Ipv6.我试过提到的解决方案

有没有办法在谷歌的Chrome中禁用IPv6?

但这似乎并没有解决我的问题.

google-chrome ipv6

12
推荐指数
1
解决办法
3万
查看次数

无法使用IPv6通过SSH推/拉到bitbucket

当我可以推/拉到bitbucket:

  • 从我的工作电脑通过ssh键 id_rsa_bitbucket_work
  • 从我的笔记本电脑,但只有通过ssh键登录VPN(Cisco AnyConnect)id_rsa_bitbucket.我的VPN有一个静态IP.
  • 始终使用https.

当我不能推/拉到bitbucket时:

  • 从我的笔记本电脑随时通过ssh键连接VPN ida_rsa_bitbucket.
  • 当我的工作网络网络上的笔记本电脑不在VPN上时,即使我名义上在同一个网络上,我也会使用VPN.

我的适当条目~/.ssh/config是:

Host bitbucket
     HostName bitbucket.org
     User git
     IdentityFile ~/.ssh/id_rsa_bitbucket
Run Code Online (Sandbox Code Playgroud)

无论我正在经历什么样的网络/ VPN,通过SSH连接到github存储库始终有效.

我检查过以确保:

  • 我的SSH代理正在运行并且加载了正确的密钥.
  • 无论VPN设置如何,我的SSH代理都会分发相同的密钥.

ssh -Tv bitbucket未登录VPN时的输出为:

OpenSSH_6.9p1, LibreSSL 2.1.8
debug1: Reading configuration data /Users/fcarter/.ssh/config
debug1: /Users/fcarter/.ssh/config line 1: Applying options for bitbucket
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: /etc/ssh/ssh_config line 56: Applying options for *
debug1: Connecting to bitbucket.org [2401:1d80:1010::150] port 22.
debug1: Connection established. …
Run Code Online (Sandbox Code Playgroud)

git ssh vpn bitbucket ipv6

12
推荐指数
1
解决办法
1977
查看次数

在PHP中将IPv6 cidr拆分为/ 64块

我正在寻找创建一个将ipv6范围或cidr作为输入的脚本,并吐出一个/ 64块列表(或每个/ 64块中的第一个IP).

我有一个功能,可以为IPv4 IP做类似的事情,但我缺乏理解为ipv6重新使用它.

Function BreakTo30($CIDR)
{
    $CIDR = explode("/", $CIDR); // this breaks the CIDR block into octlets and /notation
    $octet = ip2long($CIDR[0]); //turn the first 3 octets into a long for calculating later
    $NumberOf30s = pow(2,(30-$CIDR[1]))-1; //calculate the number of /30s in the CIDR block
    $OutputArray = array();
    for ($i=-4; $i<4 * $NumberOf30s; $OutputArray[] = (long2ip($octet + ($i += 4)))); //fancy math to output each /30
    return $OutputArray; //returns an array of ranges

}
Run Code Online (Sandbox Code Playgroud)

ip2long和long2ip只是ipv4.

php ipv6 cidr

12
推荐指数
1
解决办法
438
查看次数

强制python mechanize/urllib2只使用A请求?

这是一个相关的问题,但我无法弄清楚如何应用mechanize/urllib2的答案:如何强制python httplib库只使用A请求

基本上,给出这个简单的代码:

#!/usr/bin/python
import urllib2
print urllib2.urlopen('http://python.org/').read(100)
Run Code Online (Sandbox Code Playgroud)

这导致wireshark说以下内容:

  0.000000  10.102.0.79 -> 8.8.8.8      DNS Standard query A python.org
  0.000023  10.102.0.79 -> 8.8.8.8      DNS Standard query AAAA python.org
  0.005369      8.8.8.8 -> 10.102.0.79  DNS Standard query response A 82.94.164.162
  5.004494  10.102.0.79 -> 8.8.8.8      DNS Standard query A python.org
  5.010540      8.8.8.8 -> 10.102.0.79  DNS Standard query response A 82.94.164.162
  5.010599  10.102.0.79 -> 8.8.8.8      DNS Standard query AAAA python.org
  5.015832      8.8.8.8 -> 10.102.0.79  DNS Standard query response AAAA 2001:888:2000:d::a2
Run Code Online (Sandbox Code Playgroud)

这是一个5秒的延迟!

我的系统中没有启用IPv6(gentoo编译 …

python mechanize urllib ipv6

11
推荐指数
2
解决办法
5510
查看次数