Chinaunix

标题: 如何区分是ipv4的地址还是ipv6的地址 [打印本页]

作者: tourer    时间: 2007-11-15 21:21
标题: 如何区分是ipv4的地址还是ipv6的地址
ipv4的地址可以表示成无符号32位整数,ipv6是否也可以表示为无符号32位整数。

如果可以ipv4和ipv6都可以表示成32位无符号整数,那么如何区分它们
作者: tourer    时间: 2007-11-15 21:55
顶一下,没人可以解答吗?
还是我问的问题不够清楚?
作者: win_hate    时间: 2007-11-15 22:03
v6 的地址是 128 位的
作者: dxcnjupt    时间: 2007-11-16 09:03
ipv6貌似是40字节长度的

另外在IP头里面有一个字段是表示IP版本号的
作者: cugb_cat    时间: 2007-11-16 09:24
ipv6如果还是32位,那怎么能扩大地址范围呢?
作者: tourer    时间: 2007-11-16 09:43
在glibc中是这样定义的
/* IPv6 address */
struct in6_addr
  {
    union
      {
        uint8_t        u6_addr8[16];
        uint16_t u6_addr16[8];
        uint32_t u6_addr32[4];
      } in6_u;
#define s6_addr                        in6_u.u6_addr8
#define s6_addr16                in6_u.u6_addr16
#define s6_addr32                in6_u.u6_addr32
  };


看来是128位的
作者: tourer    时间: 2007-11-16 09:44
那是不是只能根据长度来区分
作者: dxcnjupt    时间: 2007-11-16 14:35
哦,我没看清楚

地址确实是128位的
我说的是IP包头长度40字节

3. IPv6 首部格式
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | 版本     |   传输类别      |              数据流标签                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          有效载荷长度           |  下一个首部    |   跳数限制                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   +                          源  地  址                                              +
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   +                        目  的  地  址                                           +
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

版本占4 比特
IPV6协议号 = 6




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2