IP地址和InetAddress类
Java 的优势之一是程序能访问网络资源。语言提供了一系列类来完成这件事,底层通信软件都在 java.net 包中。通信双方必须遵守协议,目前最广泛使用的是 TCP/IP。
一、TCP/IP 协议
TCP(Transport Control Protocol)是传输控制协议,IP(Internet Protocol)是网际协议,TCP/IP 代表这两个协议组成的协议族。它分成四层:
| 层次 | 职责 |
|---|---|
| 网络接口层 | 接收和发送物理帧 |
| 网络层 | 相邻节点之间的通信 |
| 传输层 | 起点到终点的通信 |
| 应用层 | 文件传输、电子邮件等应用程序 |
TCP 把网络信息当作字节流。机器 A 把长报文分片打包发送,包头指明目的地和在接收序列中的位置;每个包按 IP 地址在节点间转发。接收端 B 按正确顺序重新组装。
协议族里还包括更具体的应用:Telnet 远程登录、FTP 文件传输、SMTP 邮件传输、NFS 网络文件服务,以及基于 TCP/IP 的 HTTP。HTTP 是 WWW 浏览器和服务器之间的应用层协议,无状态、面向对象。一次 HTTP 会话通常包括连接、请求、应答、关闭四步。
Java 可编写底层网络应用(传文件、建邮件控制器、处理网络数据等),支持 ftp、telnet、www 等 Internet 协议。
二、IP 地址
IP 地址标明因特网上一台计算机的位置,用 32 位二进制表示(IPv4)。地址分 A、B、C、D、E 五类,常用 A、B、C:
| 类 | 范围 | 结构 |
|---|---|---|
| A | 1.0.0.0–126.255.255.255 | 0 + 7 位网络号,后 24 位主机号 |
| B | 128.0.0.0–191.255.255.255 | 10 + 14 位网络号,后 16 位主机号 |
| C | 192.0.0.0–223.255.255.255 | 110 + 21 位网络号,后 8 位主机号 |
| D | 224.0.0.0–239.255.255.255 | 1110,28 位多播组编号 |
| E | 240.0.0.0–254.255.255.255 | 1111,保留试验使用 |
通常用四段十进制表示,例如 116.255.226.187,或用文字域名如 www.xinhua.net。域名服务器(DNS)负责把文字名称映射成网络地址。
三、InetAddress 类
java.net.InetAddress 的对象表示 IP 地址和域名,常用方法:
-
getByName(String s):按主机名得到对象,打印形态类似 www.sina.com.cn/202.108.37.40 -
getHostName():获取域名 -
getHostAddress():获取 IP 地址 -
getLocalHost():本机域名和 IP
【例 13-1】获取 www.xinhua.net 的域名和 IP。原文把关键字首字母大写、把 getByName 写成了 getByname,这里按可编译写法更正:
运行结果为(以当时解析为准):
一句话总结:TCP/IP 负责分包转发;InetAddress.getByName 把域名解析成 IP,再用 getHostName / getHostAddress 读出来。
转载请注明来源:IP地址和InetAddress类







