1. 程式人生 > >ipv4 ipv6 原理與如何使用

ipv4 ipv6 原理與如何使用

ipv6是ipv4的升級版 它擁有更多的IP地址

一:
 IPv4地址也時常以一組4個2位的十六進位制整數或4個8位的二進位制整數表示,但後一種情況較少見。
4×8 = 32    201.199.244.101
4個欄位 每個4byte

二:
  表示式一:
  IPV6優先選用的形式是 X:X:X:X:X:X:X:X ,其中X是1個16位地址段的十六進位制值。例如:
8個欄位 每個4個4byte    8×4×4 = 128
  FEDC:BA98:7654:4210:FEDC:BA98:7654:3210

  表示式二:
  會發生包含長串0位的地址。為了簡化包含0位地址的書寫,可以使用“::”符號簡化多個0位的16位組。“::

”符號在一個地址中只能出現一次。該符號也可以用來壓縮地址中前部和尾部的0。舉例如下:

    FF01:0:0:0:0:0:0:101 多點傳送地址
    0:0:0:0:0:0:0:1 回送地址
可用下面的壓縮形式表示:

    FF01::101 多點傳送地址
    ::1 回送地址

ip 實際地址:
192.168.1.107
fe80::5efe:192.168.1.108%2

import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.UnknownHostException;

public class MyTest {

 /**
  * @param args
  * @CreateDate:2012-3-12
  * @author 
  * @throws UnknownHostException
  */
 public static void main(String[] args) throws UnknownHostException {
  // TODO Auto-generated method stub
  MyTest t = new MyTest();
//   ipv4地址
//  t.ipv6("www.163.com");
  // ipv6地址
//  t.ipv6("www.neu6.edu.cn

");
  t.ipv6("fe80::5efe:192.168.1.108%2");
 }

 public void ipv6(String ip) throws UnknownHostException{
  if (ip.length() == 0)
  {
   return;
  }
  InetAddress address = InetAddress.getByName(ip);
  System.out.println("IP: " + address.getHostAddress());
  switch (address.getAddress().length)
  {
   case 4:
    System.out.println("根據byte陣列長度判斷這個IP地址是IPv4地址!");
          break;
      case 16:
          System.out.println("根據byte陣列長度判斷這個IP地址是IPv6地址!");
          break;
   }
   if (address instanceof Inet4Address)
   System.out.println("使用instanceof判斷這個IP地址是IPv4地址!");
    else if (address instanceof Inet6Address)
   System.out.println("使用instanceof判斷這個IP地址是IPv6地址!");
 }

}