Java 网络编程:(三)通信要素1:IP和端口号

一、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

      IPV6128位(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占用端口80FTP占用端口21Telnet占用端口23),一般用于一些知名的服务和应用,普通的应用程序需要使用1024以上的端口号。

  (2)注册端口1024~49151。分配给用户进程或应用程序。(如: Tomcat占用端口8080MySQL占用端口3306Oracle占用端口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地址, 两个子类: Inet4AddressInet6Address

    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     }

  6、

四、

五、

原文地址:https://www.cnblogs.com/niujifei/p/14878165.html