/*
网络基本知识的总结
*/
网络编程概述
我们以前学习的程序,比如文件的复制,还有其它的程序的运行都是在本机上,但是在生活中我们往往需要不同的电脑之间进行通信和交互。这时就需要进行网络通信
名词的解释:
IP:每台计算机的独立的标识,想要和一台计算机进行通讯,那么首先找到对方计算机的IP,IPV4以一般都是使用4个字节来表示,每一个字节最大的数是255,但是时间上不可能为每台计算机都分配一个公网地址,所以就使用子网掩码来为一块区域分配一个公网地址。同样也使用IPV6来用6个字节进行表示。并且IPV6中不仅包含数字,而且也包含字母。另外127.0.0.1这个地址是本机在没有分配IP地址时,默认的一个本机回环地址,可以用它来检测网卡是否安装好。
端口:数据要发送到指定的程序上,为了标识这些应用程序,所以给这些网络应用程序进行数字标识,而这个数字标识就有一个清晰的称呼:端口;端口的范围是0-65535,而0-1024一般都被系统占用,所以就需要设置其他的端口。
3定义通信规则,而这个通信规则就是网络协议,国际组织定义了通用协议TCP/IP.
常见的网络协议有TCP/IP协议和UDP协议。
接下来我们来了解两种网络模型:
OSI参考模型和TCP/IP参考:
OSI参考模型是使用7层
通过上面的参考模型可以发现网络都是使用七层,而每一层之间都有特定的协议,数据在传输时,一层一层的向下封包,然后在对方一层一层的向上拆包获取数据。而我们平时则是在应用层将特有的信息发送到指定IP的电脑上,然后我们可以进行数据通信。
通过上面的传输协议,我们发现,OSI传输协议比较繁琐,因此接下来我们介绍一种比较简单的网络模型就是TCP/IP协议,采用的四层模型,应用层,传输层,网际层,主机至网络层。
参考模型如下:
IP地址:
IP地址主要是用于标识每一台网络设备。但是IP地址不容易记忆,因此每一台主机IP地址都对应主机名。这样容易比较记忆。因此主机名和主机的IP地址是一一对应的。
而一台网络设备往往有其对应的主机名和主机地址。
接下来我们来演示Java中的IP地址的使用方法。
实例:获取本机的IP地址和主机名。和指定任意一台主机的地址和主机名。
通过了解了IP地址,它在Java中对应的对象时InetAddress,接下来我们会讲端口,端口号是用于标识进程的数字标识,不同的进程的标识不一样,有效的范围是0~65535,
就是一个数字而已,没有什么可以讲的。
接下来我们介绍一个重要的传输协议TCP协议和UDP协议。
UDP的特点:
1将数据,源,目的封装在数据包中,不需要进行连接。
2 每一个数据包的大小限制在64K
3因为是不需要进行连接的,因此是不可靠协议
4不需要进行连接,因此速度比较快。
总结:面向无连接。
生活中的实例:QQ,飞秋,等软件,数据的丢失不是特重要,但是速度比较快,
TCP的特点:
1需要连接,并形成传输数据的通道。
2在连接中可以传送大量的数据。
3通过三次握手完成连接,是一个可靠协议。
4必须建立连接,因此效率会较低。
生活中的实例:
打电话
接下来我们介绍Socket,本意上指的是插座,但是在Java中Socket中就是指的是为网络服务提供的一种机制。
通信的两端都需要使用Socket,而网络通信指的就是Socket间的通信。
数据在两个Socket之间主要是通过IO来进行传输。
我们可以将其形象的网络通信就相当于两个码头之间进行货物的通过船只来进行运输货物,而想要运输货物的前提就是必须先要有码头,而这个码头就是在网络中指的就是Socket,
有了Socket这个通信端点以后我们发现,不同的传输协议所对应的通信端点的建立方式也不一样。那么接下来我们为大家介绍UDP传输协议下的通信端点Socket的建立方式。
在UDP的传输协议下是使用DatagramSocket来创建通信端点的。而DatagramPacket表示数据包,主要是用于封装我们的数据,里面包括要发送的数据,和发送方的ip和接受方的IP