Table of Contents
这篇文章简要记录一下网络模型和 TCP 三次握手四次挥手。
网络模型
网络模型有 OSI 七层模型、TCP/IP(参考)4层模型、网络5层模型三种划分方式。
OSI 七层模型
OSI(Open System Interconnection,开放系统互连)七层模型(七层协议体系机构)是国际标准化组织(ISO)提出的一个理论模型。
应用层 |
表示层 |
会话层 |
传输层 |
网络层 |
数据链路层 |
物理层 |
TCP/IP 四层模型
OSI 模型全面复杂,并没有实际应用,实际网络使用的是 TCP/IP 四层模型。
应用层 |
传输层 |
网络层 |
网络接口层 |
四层模型是参考的 OSI 模型进行的划分。其中物理层和数据链路层换成网络接口层——TCP/IP 模型侧重的是互联网通信核心,因此没有物理层。表示层和会话层合并到应用层。
网络五层模型
这种模型是七层和四层的折中,用于计算机网络教学。
应用层 |
传输层 |
网络层 |
数据链路层 |
物理层 |
TCP 连接
三次握手
tcp 连接需要经过三次握手。
- 客户端发送 SYN 请求连接报文到服务端。
- 服务端收到报文,发送 SYN + ACK 请求连接和应答报文到客户端。
- 客户端收到报文,发送 ACK 应答报文到服务端。
在三次握手之后,客户端分配资源(内存空间)(在二次握手后就分配了),服务端分配资源(socket 队列),然后双方可以发送接收数据包。
如果服务端没有收到 ACK 报文,这时客户端可以发送数据包,但服务端不会接收,因为服务端还没有分配相关资源。
为什么是三次?
如果是两次,当客户端发出的 SYN 延迟了,一直到报文失效服务端才接收到,服务端分配资源,发送 SYN + ACK 报文到客户端,但因为第一次的 SYN 失效,客户端不认可这次连接,则双方连接并没有建立,服务端就浪费了资源。
四次挥手
断开 TCP 连接需要四次挥手。
- 客户端发送 FIN 请求断开报文表示不再发送数据。
- 服务端收到报文,发送 ACK 确认应答报文。服务端仍可以发送数据。
- 服务端发送 FIN 请求断开报文。
- 客户端收到报文,发送 ACK 确认应答报文。