OSI与TCP/IP分层模型及各层协议介绍
分层模型
OSI
共七层,属于学院派。
- 物理层
- 链路层
- 网络层
- 传输层
- 会话层
- 表达层
- 应用层
TCP/IP
属于实践派。 共五层,属于实践派。
- 物理层
- 链路层
- 网络层
- 传输层
- 应用层
与OSI相比,OSI的会话层、表达层被囊括进应用层了。
层的具体含义
物理层
设备与设备之间用来链接的网线
链路层
mac地址
网络层
IP协议
传输层
TCP/UDP协议
应用层
HTTP协议、FTP协议
层内解析协议
内层协议拆包时,要把外层协议都拆一遍,如果发现这个包要丢弃掉,直接丢弃。 如果需要继续传输,则按层级顺序将数据重新用协议包裹。如果是继续解析,则把当前层的协议头移除。
物理层
主机感知到从网线发来的电信号,确定是噪声还是有意义的电信号。
链路层
基于以太网,确认信号是发给这台主机的,还是需要本机进行路由转发。
网络层
确认由主机的哪个服务来处理他:Web服务、FTP服务、SSH服务。
传输层
确认信号是没有丢失、完整无缺的。
应用层
确认信号是JSON的字符串还是gRPC的二进制字节流。
传输层协议
TCP
优点:TCP可靠、稳定。
TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。
缺点:慢,效率低,占用系统资源高,易被攻击
TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。
符号含义
- SYN:同步标志位,用于建立会话连接,同步序列号;
- ACK:确认标志位,对已接收的数据包进行确认;
- FIN:完成标志位,表示我已经没有数据要发送了,即将关闭连接;
三次握手过程
- 第一次握手:客户端发送一个带 SYN 标志的请求包给服务器,请求建立连接,并进入
SYN_SENT
状态。 - 第二次握手:服务器收到请求后,发送一个带 SYN 和 ACK 标志的包,确认收到请求并同意建立连接,同时进入
SYN_RECEIVED
状态。 - 第三次握手:客户端收到服务器的确认后,发送一个带 ACK 标志的包给服务器,进入
ESTABLISHED
状态,连接建立完成。
三次握手原因
防止失效的连接请求包突然到达服务器而建立错误连接。三次握手确保双方都确认连接的存在和有效性。
四次挥手过程
- 第一次挥手:主机A发送一个带有 FIN 标志的数据包,表示它要终止发送数据。A进入
FIN_WAIT_1
状态。 - 第二次挥手:主机B收到 FIN 后,回复一个带有 ACK 标志的确认包,表示同意终止A的发送方向。B进入
CLOSE_WAIT
状态,A进入FIN_WAIT_2
状态。 - 第三次挥手:主机B完成它的所有数据发送后,发送一个带有 FIN 标志的数据包,表示它也要关闭连接。B进入
LAST_ACK
状态。 - 第四次挥手:主机A收到 FIN 后,发送一个带有 ACK 标志的确认包,进入
TIME_WAIT
状态,等待一段时间后,进入CLOSED
状态。B在收到 ACK 后立即进入CLOSED
状态。
注意
- 谁发起挥手:可以是任何一方发起。
- TIME_WAIT:发起关闭的一方需要进入
TIME_WAIT
状态以确保对方收到 ACK,从而避免遗留的延迟包对后续连接产生干扰。
为什么连接的时候是三次握手,关闭的时候却是四次挥手?
三次握手中,第二次握手服务端同时发送SYN和ACK两个包,用于确认和建立连接,这时他们并没有传输数据。但是挥手的时候不能同属发送SYN和ACK两个包,因为主机A发起停止请求后,主机B数据并未传输完,只会发回一个ACK包,FIN包后续发送。
客户端为什么要等待一段时间再释放资源
客户端在第四次挥手后发送 ACK 确认包,但不确定服务器是否成功接收。这条确认报文在传送到服务器的过程中损坏、丢失或超时,将引起服务器重新发送FIN报文,客户端需要再次回复 ACK,因此必须保持资源一段时间。
避免网络中遗留的旧连接报文被误认为新连接的有效数据。等待时间可确保所有旧报文过期,以防连接混淆。
应用层协议
Http 与 Https
HTTP 协议与特性
1. HTTP 基础概念
- HTTP 是什么:基于 TCP 协议的应用层传输协议,采用无状态、短连接的方式,每次请求完成后会关闭连接,不记录客户端状态。
- 常见请求方式:
GET
:获取资源。POST
:提交数据。PUT
:更新资源。DELETE
:删除资源。
2. 请求与响应结构
- 请求信息:
- 请求行:请求方法、地址、协议。
- 请求头:键值对形式的头信息。
- 请求正文:存在于 POST 请求中,传递数据。
- 响应信息:
- 响应行:协议、状态码、状态描述。
- 响应头:键值对形式的头信息。
- 响应正文:返回的内容。
3. HTTP 版本比较
- HTTP 1.0 与 HTTP 1.1:
- HTTP 1.0 一次只能处理一个请求与响应;HTTP 1.1 支持多请求多响应。
- HTTP 1.1 增加了持久连接、Host 头等功能。
- HTTP 2.0:
- 使用二进制格式传输数据,提高效率。
- 消息头采用 HPACK 算法压缩,减少冗余。
- 支持多路复用,多个请求可复用一个 TCP 连接。
- 引入 Server Push 技术,服务端可主动推送资源。
4. HTTP 与 HTTPS
- HTTPS 的特点:
- HTTPS = HTTP + SSL/TLS,提供加密传输。
- 工作层次:HTTP 位于应用层,HTTPS 位于传输层。
- 默认端口:HTTP 使用 80,HTTPS 使用 443。
- 需要数字证书进行身份认证。
5. 视频上传为何不使用 HTTP
- 原因:
- 视频文件较大,使用 POST 请求会将数据缓存在内存中,影响效率。
- 通常采用更高效的传输协议(如 FTP 或专用服务)。
参考:
Android 面试必备 - 计算机网络基本知识(TCP,UDP,Http,https)
什么是OSI七层模型?什么是TCP/IP协议五层模型?——五分钟理解网络分层模型