00104_网络通信协议

1、网络通信的概述

  (1)通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则;

  (2)在计算机网络中,这些连接和通信的规则被称为网络通信协议;

  (3)它谁数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换;

  (4)在进行数据传输时,要求发送的数据与收到的数据完全一样,这时,就需要在原有的数据上添加很多信息,以保证数据在传输过程中数据格式完全一致;

  (5)网络通信协议有很多种,目前应用最广泛的是TCP/IP协议(Transmission Control Protocal/Internet Protoal传输控制协议/英特网互联协议)。

2、TCP/IP协议

  (1)TCP/IP协议的层次结构比较简单,共分为四层:

  

    ①链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤、网线提供的驱动;

    ②网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络;

    ③传输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议;

    ④应用层:主要负责应用程序的协议,例如HTTP协议、FTP协议等。

3、IP地址和端口号

  (1)要想使网络中的计算机能够进行通信,必须为每台计算机指定一个标识号,通过这个标识号来指定接受数据的计算机或者发送数据的计算机;

  (2)在TCP/IP协议中,这个标识号就是IP地址,它可以唯一标识一台计算机;

  (3)目前,IP地址广泛使用的版本是IPv4,它是由4个字节大小的二进制数来表示,如:00001010000000000000000000000001 ;

  (4)由于二进制形式表示的IP地址非常不便记忆和处理,因此通常会将IP地址写成十进制的形式,每个字节用一个十进制数字(0-255)表示,数字间用符号“.”分开,如 “192.168.1.100”。

  (5)随着计算机网络规模的不断扩大,对IP地址的需求也越来越多,IPV4这种用4个字节表示的IP地址面临枯竭,因此IPv6 便应运而生了;

  (6)IPv6使用16个字节表示IP地址,它所拥有的地址容量约是IPv4的8×1028倍,达到2128个(算上全零的),这样就解决了网络地址资源数量不够的问题;

  (7)通过IP地址可以连接到指定计算机,但如果想访问目标计算机中的某个应用程序,还需要指定端口号;

  (8)在计算机中,不同的应用程序是通过端口号区分的;

  (9)端口号是用两个字节(16位的二进制数)表示的,它的取值范围是0~65535;

  (10)其中,0~1023之间的端口号用于一些知名的网络服务和应用,用户的普通应用程序需要使用1024以上的端口号,从而避免端口号被另外一个应用或服务所占用。

  (11)IP地址和端口号的作用:位于网络中一台计算机可以通过IP地址去访问另一台计算机,并通过端口号访问目标计算机中的某个应用程序。

  

4、InetAddress

  JDK中提供了一个InetAdderss类,该类用于封装一个IP地址,并提供了一系列与IP地址相关的方法;

 1 import java.net.InetAddress;
 2 import java.net.UnknownHostException;
 3 
 4 public class Example01 {
 5     public static void main(String[] args) throws UnknownHostException {
 6         InetAddress local = InetAddress.getLocalHost();// 返回本地主机
 7         InetAddress remote = InetAddress.getByName("www.cnblogs.com");// 在给定主机名的情况下确定主机的IP地址
 8         System.out.println("主机名:" + local.getHostName());// 获取此IP地址的主机名
 9         System.out.println("本机的IP地址:" + local.getHostAddress());// 返回IP地址字符串(以文本表现形式)
10         System.out.println("cnblogs的IP地址:" + remote.getHostAddress());
11         System.out.println("cnblogs的主机名:" + remote.getHostName());
12     }
13 }

  运行结果:

  

原文地址:https://www.cnblogs.com/gzdlh/p/8157099.html