网络相关基本概念
IP地址
描述一台主机在互联网上所处的位置。用32位整数表示。
用点分十进制表示。xxx.xxx.xxx.xxx表示。
端口号
区分当前主机上的指定的应用程序(进程)。一台主机上使用网络的程序有很多,可以通过端口号区分主机收到的数据要交给哪个程序处理使用。两个字节的整数(0到65535)
协议
进行一切通信的基础。通信至少要有两个主机,让接收方能理解发送方的数据,双方要按照同样的规则构造/解析数据。网络传输的信号有光信号/电信号/电磁波。
协议分层
把功能定位类似的协议放在一层,并约定好层和层之间的交互关系。协议之间不能随意相互交互,只有相邻的层之间才可以。上层协议调用写层协议,下层协议给上层提供服务。
-
OSI七层网络模型。基本只存在于理论
-
TCP/IP五层网络模型(当前世界上最主流的网络协议模型)
-
应用层:应用程序
-
传输层:主要是关注网络通信中的“起点和终点”
-
网络层:网络通信的路径规划,地址管理
-
数据链路层:针对上述规划好的路径进行实施
-
物理层:描述硬件设备(网线等)需要满足什么条件
封装
封装就是把上层的数据,加上头部(或尾部),形成下层可识别的新数据格式。
分用
接收方在收到数据后,识别数据是发给哪个上层应用程序的过程。
客户端
客户端就是发起请求、使用服务的人或程序。
服务器
服务器是一个持续运行、等待并响应客户端请求的程序或设备。
请求
客户端向服务器“提出要求”的动作。
响应
服务器收到请求之后,返回给客户端的结果。
两台主机之间的网络通信流程
客户端发出请求 ➜ 网络传输 ➜ 服务器接收并响应 ➜ 客户端接收响应
第 1 步:建立连接(TCP 三次握手)
-
客户端主动:创建 socket,连接目标 IP + 端口号
-
操作系统底层会通过网络协议(TCP/IP)进行“三次握手”
-
一旦握手成功,就相当于两人建立了“电话连接”
第 2 步:客户端发送请求
-
建立连接后,客户端通过 OutputStream 向服务器发送数据
-
数据在底层被打包成 IP 包,通过网络发送过去
第 3 步:服务器接收请求 & 处理
-
服务器程序启动时监听某个端口(如 8888)
-
一旦检测到客户端连接请求,就 accept 接收
-
接收之后通过 InputStream 读取数据并处理
第 4 步:服务器发送响应
-
服务器将处理后的结果通过 OutputStream 发给客户端
-
客户端通过 InputStream 接收返回的数据
第 5 步:双方关闭连接
-
通信完成后,客户端或服务器可以关闭 Socket
-
相当于电话挂断