一、InetAddress
java.net.InetAddress类是java对IP地址的高层表示。通过主机查找IP的时候会查询DNS服务器,开销会很大,因此InetAddress类会缓存中查找。对于DNS的缓存时间可以用系统属性networkaddress.cache.ttl指定成功的DNS结果在java缓存中保留的时间(秒数),networkaddress.cache.negative.ttl指定不成功的查找结果缓存时间。
该类没有构造函数,提供了以下静态方法构造。
静态方法摘要----------
InetAddress getByName(String host)
host----可以是主机名。例如"www.baidu.com"或者直接IP地址“180.97.33.107”。如果主机名不存在则报java.net.UnknownHostException异常
InetAddress[] getAllByName(String host)
host----可以是主机名。例如"www.baidu.com"或者直接IP地址“180.97.33.107”。返回多个地 址,
有的主机名可以存在多个地址。
InetAddress[] allByName = InetAddress.getAllByName("www.baidu.com"); for (InetAddress address : allByName) { System.out.println(address); }
输出结果如下:
www.baidu.com/180.97.33.107
www.baidu.com/180.97.33.108
InetAddress getByAddress(byte[] addr)
InetAddress getByAddress(String host, byte[] addr)
这两个方法不能保证主机一定存在,或者主机名能正确的映射IP地址。
InetAddress.getLocalHost()
这个方法尝试连接DNS来得到一个真正的主机名和IP地址。不过如果失败,他就返回回送地址。
主要方法摘要---------
String getHostName()
String getCanonicalHostName()
getHostName只是在不知道主机名的时候才会联系DNS,但是getCanonicalHostName知道主机名也会联系DNS。另外一个区别是getHostName返回主机的别名,而getCanonicalHostName返回主机的名字,之所以要使用主机别名,是因为有时主机名可能比较复杂,如Oracle官方网站的主机名bigip-otn-portal.oracle.com,因此,为了使用户访问网站更方便,就增加了更简单的主机别名,如www.oracle.com。一个主机名可能对应多个主机别名,如oracle.com也是Oracle的主机别名。在IE的地址栏中输入http:// bigip-otn-portal.oracle.com和http://oracle.com都可以访问Oracle官方网站。但我们发现,有很多网站通过主机名无法访问,只有通过一些别名才能访问,如126只能通过www.126.com和126.com两个主机别名访问,而不能通过它的主机名zz-9-77-a8.bta.net.cn来访问。这是因为在服务端通过HTTP协议做了限制.
String getHostAddress()
byte[] getAddress()
可以通过byte的长度来区分Ip地址为ipv4或者ipv6。另外返回的字节是无符号的,值大于127的时候会当做负数。
InetAddress address = InetAddress.getByName("www.oracle.com"); System.out.println(address.getHostAddress()); System.out.println(Arrays.toString(address.getAddress()));
输出结果:
23.3.200.18
[23,3,-56, 18]
地址类型:
boolean isAnyLocalAddress()
ipv4的通配地址是0:0:0:0。ipv6的通配地址是:0:0:0:0:0:0:0:0
boolean isLoopbackAddress()
是否为回送地址,ipv4的地址为127.0.0.1。ipv6是0:0:0:0:0:0:0:1
boolean isMulticastAddress()
是否为组播地址:ipv4址覆盖范围为224.0.0.0~239.255.255.255。ipv6意FF开头。
isReachable(int timeout)
boolean isReachable(NetworkInterface netif, int ttl,int timeout)
可以测试一个特定节点对当前主机是否可达,这些方法尝试使用tranceroute查看地址是否可达。如果主机在timeout内响应,则方法返回true;否则返回false。
二、NetworkInterface
表示一个本地IP地址,可以是一个物理接口,也可以是一个虚拟接口。
静态方法:
NetworkInterface getByName(String name)
name----例如eth0、lo
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces(); while (networkInterfaces.hasMoreElements()) { NetworkInterface nextElement = networkInterfaces.nextElement(); System.out.println(nextElement); Enumeration<InetAddress> inetAddresses = nextElement.getInetAddresses(); while (inetAddresses.hasMoreElements()) { System.out.println(inetAddresses.nextElement()); } }
相关推荐
计算机网络 第三章Internet地址及地址解析.PPT
由于管理和技术的原因,许多机构选择把一个网络分成几个子网,而不是单纯的使用一系列的因特网地址。 本文档提出使用子网的程序和过程,并讨论解决由此而产生的问题的方法,特别是路由问题。 目录 1. 介绍 2 1.1. ...
Java网络编程从入门到精通(1):Internet地址概述 所有连入Internet的 ...
连接到Internet上计算机都有一个称为Internet地址或IP地址的的数来标识。由于IP很难记住,人们设计了域名系统(DNS),DNS可以将人们可以记忆的主机名与计算机可以记忆的IP地址联系在一起。通常一台主机映射一个IP...
行业分类-设备装置-对无线电台和相关的因特网地址进行书签标记的系统和方法.zip
最近有几份RFS文档讨论了在Internet地址分配方案中对“子网”结构的需要,并提出了子网地址分配和路由策略。特别是Jeff Mogul在RFC917《Internet子网》中,描述了一个地址分配方案,将主机地址部分的开始一些位用来...
本RFC文档讲述了当工作站只知道硬件地址(例如:它们的物理网络地址)时,动态发现协议地址(例如:Internet地址)的一种方法。 本RFC文档讲述了ARPA网络社区的一种建议协议,需要讨论和建议去加强。 目录 1.介绍 ...
在Linux系统上实现的IP伪装,具有Internet地址的那台机器同时也作为 局域网上的防火墙和网关。本地的机器使用防火墙的Internet地址连接到Internet上。实现了IP伪装的防火墙有时也被称为MASQ gates。使用IP伪装,连接...
Internet地址 物理地址 aa:aa:aa:aa:aa:aa ARP协议实现的特点 ARP欺骗的工作原理 aa:aa:aa:aa:aa:aa bb:bb:bb:bb:bb:bb cc:cc:cc:cc:cc:cc 攻击对象 ARP欺骗的攻击者 Internet地址 物理地址 aa:aa:aa:aa:aa:aa ARP ...
Internet 地址之间的解析 如何从运行 Windows Server 2003 的独立服务器开始 运行 Windows Server 2003 的独立服务器成为网络的 DNS 服务器。第一步,为该服务 器分配一个静态 Internet 协议 (IP) 地址。DNS...
1. NET ID(网络地址)代表在互联网上的一个物理网段,由internet权力机构统一分配,目的是保证网络地址的全球唯一性。 2. Host ID (主机地址)用来标识这个网段中的一台主机,由各个网络的系统管理员分配。 三、IP...
Internet 地址之间的解析 如何从运行 Windows Server 2003 的独立服务器开始 运行 Windows Server 2003 的独立服务器成为网络的 DNS 服务器。第一步,为该服务 器分配一个静态 Internet 协议 (IP) 地址。DNS ...
1 查询本机Internet地址 http://windy5157.mfa.cc/InetIp/LocalInetIp.asp 2 查询本机在web发布的外网IP地址 http://windy5157.mfa.cc/InetIp/RemoteInetIp.asp?u=注册的用户账号 3 重定向至本机上运营的网站 ...
本地地址——仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向因特网的管理机构申请。全球地址——全球唯一的IP地址,必须向因特网的管理机构申请
Internet 地址之间的解析 1、如何从运行 Windows Server 2003 的独立服务器 开始 运行 Windows Server 2003 的独立服务器成为网络的 DNS 服务器。第一步,为该服务 器分配一个静态 Internet 协议 (IP) 地址。DNS ...
ip地址的信息,分类介绍,子网掩码的功能。
2001::/16 IPV6因特网地址 2002::/16 6to4过渡地址 2-Link Local Address FE80::/10 (前10位以FE80开头) 3-Site Local Address (Private) FEC0::/10 4-Unspecified Address 0:0:0:0:0:0:0:0/128 => ::/128...
MAC 地址不具备区分不同网络的功能,故网络层的 IP 地址应运而生换言之:IP 地址的定位:区分网络IP 地址是因特网(Internet)上的(主机 & 路由
USG5500-通过多ISP接入Internet(基于ISP目的地址的多出口)