网络编程
计算机网络:
所谓计算机网络,就是把分布在不同区域的计算机与专门的外部设备用通信线路相互连接成一个规模大,而且功能强的网络系统,从而使得计算机之间可以相互传递信息,共享数据
网络编程:
所谓的网络编程,指的就是在同一个网络中不同的机器之间的通信
计算机之间通信需要的条件:
IP地址:
IP地址指的是互联网地址(Internet Protocol Address),是联网设备与互联网之间的唯一标识,在同一个网段里,IP地址是唯一的
IP地址是数字型的,是一个32位的整数,通常将其分为4个8位的二进制数,每8位之间用圆点隔开,每个8位整数可以转换成一个0-255的十进制整数,例如202.9.128.88
标准分类:IPV4和IPV6
IP地址适用范围:
A类:保留给政府机构,1.0.0.1–126.255.255.254
B类:分配给中型企业,128.0.01—191.255.255.254
C类:分配给任何需要的个人,192.0.0.1—223.255.255.254
D类:用于组播,224.0.0—239.255.255.254
E类:用于实验,240.0.0.1—255.255.255.254
回收地址:127.0.0.1,指本地机,一般用于测试
IP地址可以唯一确定网络上的一个通信实体,但是一个通信实体可以有多个通信程序同时提供网络服务,此时还需要使用端口
端口:
数据的发送和接收,都需要通过端口出入计算机,端口号用于唯一标识通信实体上进行网络通讯的程序,同一台机器上不能两个程序占用同一个端口
端口的取值范围:0-65535
端口分类:
公认端口:0-1023
注册端口:1025-49151
动态或私有端口:1024-65535
常用端口:
MySQL:3306
Oracle:1521
Tomcat:8080
通信协议:
需要通信的设备之间需要实现相同的通信协议
网络分层(七层协议):物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
通信协议分类:
传输层协议:TCP和UDP
网络层IP协议:IPV4和IPV6,互联网协议
应用层协议:HTTP
客户端和服务器:
客户端:可以让用户直接交互,用来访问服务器段
服务器端:给用户提供数据的存储,数据的中转,和数据的运算
注意:
1.客户端和服务器都指的是(app),而非主机,即客户端 != 主机,服务器 != 主机
2.一台主机上可以运行多个应用
3.一条主机上可以同时存储客户段和服务器段,也可以分属于不同的主机
4.应用就是一个进程,所以客户端和服务器端都是独立的进程
网址理解:
网址案例:https://blog.youkuaiyun.com/m0_56433040?spm=1000.2115.3001.5343
网址的功能:实现客户端和服务器段的通信,协议:是制定一个统一的规范http协议,超长文本传输协议,实现的是网络间的通信的一个通信规则https协议:安全的https协议–可以省略,默认是http协议,域名/ip:标记网络上的唯一一台主机,可以简化写成:baidu端口号,标记同一台主机上的某一个服务器【0-65535】–可以省,默认80资源路径–可以省,查询条件:可以省
网络相关概念:
1.外网:IP是唯一性的,不能重复,范围0.0.0.0—255.255.255.255
2.内网:通过路由器或者交换机,来重新设置IP地址
不同的内网的ip可以相同,内网A的某一台主机通过自己的网卡于自己的路由器A通信,然后路由器A通过网络中心于路由器B通信,路由器B再与内网中的某一台机器的网卡通信
3.IP:IP是确定一台机器的唯一标识
4.netMask(子网掩码):与ip连用,用于确定网络段为192.168.1.x,x 的范围是1-254,一般取为255.255.255.0
子网掩码的作用:用来指定当前机器属于哪个ip号段的
判断方式:当前的ip与子网掩码进行按位与运算
5.GATEWAY:网关,用于与连接外网的机器设备(路由器)通信,换句话说,网关就是路由器的IP
6.DNS:域名解析服务器
相关类的使用:
InetAddress类
Java提供了InetAddress类来代表地址ip地址,是对ip地址的抽取与封装,有两个子类:Inet4Address,Inet6Address分别表示IPV4和IPV6
基于TCP的网络编程
概念:TCP(Transmission Control Protocol)传输控制协议,基于字节流的传输层通信协议
特点:
安全,面向连接,效率低,传输数据大小限制,一旦建立连接,双方可以按照统一的格式传输大的数据
TCP的三次握手:
a,客户端向服务器发送一个请求
b,服务端收到请求后,回给客户端一个响应
c,客户端收到服务端的响应后,回给服务端一个确认信息
Socket套接字通信模型:
Server端:
1.建立服务器端 倾听Socket
2.等待并接收连接请求
3.接受请求后,创建连接socket
4.InputStream
5.OutputStream
6.关闭socket及相关资源
Client端:
1.创建连接socket向服务器发送请求
2.OutputStream
3.InputStream
4.关闭socket及相关资源
UDP编程:
User Datagram Protocol的简称,用户数据包协议,提供面向事务的简单不可靠信息传送服务
特点:不安全,无连接,效率高
UDP传输数据时是大小限制的,每个被传输的数据包必须限定在64kb之内
RPC:
RPC(Remote Procedure Call )远程过程调用,是一个计算机通信协议,该协议允许运行于一台计算机的程序调用另一台计算机上的程序,通俗来讲,RPC通过把网络通信抽象为远程的过程调用,调用远程的过程就像是调用本地的子程序一样方便,从而屏蔽了通讯复杂性,使开发人员可以无需关注网络编程的细节,将更多的时间和精力放在业务逻辑本身的实现上,提高了工作效率
RPC本质上就是一种(Inter-process communcation)IPC—常见的进程间的通信方式如管道,共享内存是同一台物理机上的两个进程间的通信,而RPC就是两个在不同的物理机上的进程间的通信,概括来说,RPC就是一台机器上调用另一台机器上的方法,这种调用在远程机器上对代码的执行,就像是本地机对代码的执行一样,只是迁移了一个环境而已