7 层网络模型(OSI 模型)
OSI 模型是一个抽象的网络通信框架,将通信任务分为七个层次,每一层都提供特定功能。
OSI 7 层结构
-
物理层(Physical Layer)
- 功能:负责数据的物理传输,处理电平、光信号、接口等硬件相关问题。
- 设备:网线、光纤、集线器、网络接口卡。
- 传输单位:比特(Bit)。
-
数据链路层(Data Link Layer)
- 功能:将比特组装成帧,提供可靠的点对点传输,处理差错检测和纠正。
- 协议:Ethernet、PPP、HDLC。
- 设备:交换机。
- 传输单位:帧(Frame)。
-
网络层(Network Layer)
- 功能:负责数据的路由和转发,实现不同网络间的通信。
- 协议:IP、ICMP、IGMP。
- 设备:路由器。
- 传输单位:分组/数据包(Packet)。
-
传输层(Transport Layer)
- 功能:提供端到端的通信,负责数据分段、重组,确保可靠性(如 TCP)或快速性(如 UDP)。
- 协议:TCP、UDP。
- 传输单位:段(Segment)。
-
会话层(Session Layer)
- 功能:建立、管理、终止会话,处理会话的同步与恢复。
- 协议:NetBIOS、RPC。
-
表示层(Presentation Layer)
- 功能:处理数据的表示、加密、解密、压缩,保证数据格式的正确性。
- 协议:SSL/TLS、JPEG、MPEG。
-
应用层(Application Layer)
- 功能:提供用户与网络之间的接口,直接面向用户。
- 协议:HTTP、FTP、SMTP、DNS。
TCP 为什么要三次握手?
三次握手的目的
TCP 是面向连接的协议,三次握手用于在客户端与服务器之间建立可靠的通信通道,确保双方的收发能力正常,并防止旧连接的干扰。
三次握手过程
-
第一次握手:客户端发送 SYN
- 客户端向服务器发送一个 SYN(同步)包,表示希望建立连接,并请求序列号(如
seq=x
)。
- 目的:告诉服务器,客户端希望建立连接。
-
第二次握手:服务器回复 SYN-ACK
- 服务器收到 SYN 包后,确认客户端的请求,回复 SYN-ACK 包,包含服务器的序列号(如
seq=y
)和确认号(如 ack=x+1
)。
- 目的:告诉客户端,服务器收到连接请求,并可以进行通信。
-
第三次握手:客户端发送 ACK
- 客户端收到 SYN-ACK 包后,发送 ACK 包,包含确认号(如
ack=y+1
)。
- 连接建立,双方可以开始通信。
- 目的:确认服务器的回复,建立可靠连接。
为什么不能是两次握手?
-
两次握手可能导致旧连接误导:
如果网络中有延迟的旧 SYN 包,服务器收到后建立连接,而客户端早已关闭,服务器资源可能被浪费。
-
三次握手确保双方状态正常:
- 第一次:客户端确认自己可以发送数据。
- 第二次:服务器确认自己可以接收并发送数据。
- 第三次:客户端确认自己可以接收数据。