上下观古今,起伏千万途。这篇文章主要讲述网络模型以及 TCPUDP 介绍相关的知识,希望能为你提供帮助。
OSI 七层模型和 TCP/IP 五层模型介绍OSI 七层模型:
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层
TCP/IP 四层模型:
- 应用层
- 传输层
- 互联网层
- 数据链路层
- 网络接口层
【网络模型以及 TCPUDP 介绍】
什么是 TCP 和 UDP,两者有什么区别
对比 | TCP | UDP |
名称 | Transmission Control Protocol(传输控制协议) | User Datagram Protocol(用户数据包协议) |
用途 | 是一种面向连接、可靠的、基于字节流的传输层通信协议 | 是一种无需建立连接就可以发送数据的一种协议 |
特性 |
|
|
缺点 |
|
|
使用场景 | 访问网站、下载资源等 | 游戏、直播、语音等 |
TCP 三次握手和四次挥手TCP 三次握手过程
TCP 是一种面向连接、可靠的、基于字节流的传输层通信协议。为什么说可靠?因为 TCP 协议在传输数据时,客户端和服务端会有一个建立连接的过程,只有建立了连接,才能开始传输数据。为了在复杂的网络环境下,保证建立连接的可靠性,也就有了常说的 TCP 三次握手,通过三次握手机制来保证连接的可靠性。
- 第一次握手:客户端向服务器端发起请求连接,客户端会发送一个 SYN(SEQ=x) 包,同时客户端进入 SYN_SEND 状态。
- 第二次握手:服务器端收到 SYN 报文之后,会回应一个 SYN+ACK(SEQ=y,ACK=x+1)包,并进入 SYN_RECV 状态。
- 第三次握手:客户端收到服务器端的 SYN 报文,并回应一个 ACK(ACK=y+1)包,同时进入 Established 状态。
四次挥手过程
假如客户端主动发起关闭连接:
- 第一次挥手:客户端发起关闭连接请求,会先服务端发送一个 FIN 包,表示要关闭连接。同时客户端进入 FIN-WAIT-1 状态。
- 第二次挥手:服务端发送 ACK 包,表示自己进入了关闭等待状态 CLOSE-WAIT。同时客户端变为 FIN-WAIT-2状态。
- 此时服务端还可以向客户端发送未发送的数据,客户端也还可以接收数据。
- 第三次挥手:服务端在发送完数据之后,会向客户端发送 FIN 包,并进入最后确认状态 LAST-ACK。
- 第四次挥手:客户端收到之后,回复 ACK 包:
- 客户端同时进入超时等待状态 TIME-WAIT,并经过超时时间后关闭连接(CLOSED)。
- 而服务端收到客户端的 ACK 包之后,立即进入关闭连接(CLOSED)。
为什么第四次挥手,客户端需要等待超时时间再关闭?
这是为了保证服务端已收到 ACK 包:
- 因为假设客户端发送完最后一包 ACK 包后就释放了连接,一旦 ACK 包在网络中丢失,服务端将一直停留在最后确认状态 LAST-ACK。
- 如果客户端发送最后一包 ACK 包后,等待一段时间,这时服务器因为没有收到 ACK 包,会重发 FIN 包,客户端会响应这个 FIN 包,并重发 ACK 包并刷新超时时间。
推荐阅读
- MySQL数据库的管理
- 深入剖析Docker与Iptables之间的来龙去脉
- 服务器租用的选择
- 自建yum仓库,分别为网络源和本地源
- Linux第九周
- cc攻击防御解决方法
- WindowsServer 2016 修复SSL/TLS协议信息泄露(CVE-2016-2183)
- Haproxy搭建负载集群
- 负数如何存储在内存中()