一、IP
1、IP 是什么?
IP地址:指互联网协议地址(Internet Protocol Address ),俗称IP。
IP地址用来给一个网络中的计算机设置做唯一的编号,即唯一的表示 Internet 上的计算机(通信实体)。
2、IP地址分类
(1)分类方式一:IPV4 和 IPV6
IPV4:4个字节组成,4个0-255,32位。大概 42 亿,30亿都在北美,亚洲4亿。2011年初已经用尽。 以点分十进制表示,如192.168.0.1
IPV6:128位(16个字节) , 写成8个无符号整数,每个整数用四个十六进制位表示,数之间用冒号(:)分开,如: 3ffe:3201:1401:1280:c8ff:fe4d:db39:1984
(2)分类方式二:公网地址(万维网使用)和 私有地址(局域网使用)
192.168. 开头的就是私有地址,范围即为 192.168.0.0 - 192.168.255.255,专门为组织机构内部使用
无论是哪一种分类,IP地址都有不易记忆的一大缺点。
3、常用命令
(1)查看本机IP地址,在控制台输入:
ipconfig
(2)检查网络是否连通,在控制台输入:
ping 空格 IP地址
ing 220.181.57.216
特殊的 IP 地址
本地回环地址(hostAddress):127.0.0.1 主机名(hostName):localhost
4、
5、
二、端口
网络的通信,本质上是两个进程(应用程序)的通信。每台计算机都有很多的进程,那么在网络通信时,如何区分这些进程呢?
如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的进程(应用程序)了。
端口号用两个字节表示的整数,它的取值范围是 0~65535。
分类:
(1)公认端口:0~1023。被预先定义的服务通信占用(如: HTTP占用端口80, FTP占用端口21, Telnet占用端口23),一般用于一些知名的服务和应用,普通的应用程序需要使用1024以上的端口号。
(2)注册端口:1024~49151。分配给用户进程或应用程序。(如: Tomcat占用端口8080, MySQL占用端口3306, Oracle占用端口1521等) 。
(3)动态/私有端口:49152~65535
注意:0-1023 之间的端口号如果端口号被另外一个服务或应用所占用,会导致当前程序启动失败。
端口号与IP地址的组合得出一个网络套接字: Socket。
利用 协议 + IP地址 + 端口号 三元组合,就可以标识网络中的进程了,那么进程间的通信就可以利用这个标识与其它进程进行交互。
三、InetAddress 类
1、主机的两种方式
Internet 上的主机又两种方式表示地址:
(1)域名(hostName):www.google.com
(2)IP地址(hostAddress):202.108.35.210
2、InetAddress 类概述
InetAddress类主要表示IP地址, 两个子类: Inet4Address、 Inet6Address。
InetAddress 类 对 象 含 有 一 个 Internet 主 机 地 址 的 域 名 和 IP 地 址 :www.google.com 和 202.108.35.210。
域名容易记忆,当在连接网络时输入一个主机的域名后, 域名服务器(DNS) 负责将域名转化成IP地址,这样才能和主机建立连接。 -------域名解析
3、域名解析
4、InetAddress 类
InetAddress类没有提供公共的构造器,而是提供了如下几个静态方法来获取InetAddress实例:
public static InetAddress getLocalHost()
public static InetAddress getByName(String host)
InetAddress 提供了如下几个常用的方法:
public String getHostAddress(): 返回 IP 地址字符串(以文本表现形式)
public String getHostName(): 获取此 IP 地址的主机名
public boolean isReachable(int timeout): 测试是否可以达到该地址
5、案例
1 public static void main(String[] args) {
2
3 try {
4 InetAddress inet1 = InetAddress.getByName("192.168.137.1");
5
6 System.out.println(inet1);
7
8 InetAddress inet2 = InetAddress.getByName("www.google.com");
9 System.out.println(inet2);
10
11 InetAddress inet3 = InetAddress.getByName("127.0.0.1");
12 System.out.println(inet3);
13
14 //获取本机的域名和 IP 地址
15 InetAddress inet4 = InetAddress.getLocalHost();
16 System.out.println(inet4);
17
18 //getHostName() 获取对象所含的域名
19 System.out.println(inet2.getHostName());
20
21 //getHostAddress() 获取对象所含的IP地址
22 System.out.println(inet2.getHostAddress());
23
24 } catch (UnknownHostException e) {
25 e.printStackTrace();
26 }
27 }