TCP / IP三次握手四次挥手

简介: TCP / IP三次握手四次挥手

TCP / IP三次握手四次挥手


前言

SYN : Sychronize Sequence Numbers

ACK : Acknowledgement

FIN : Finish


三次握手原理


图展示了正常情形下通过三次握手建立连接的过程。B 机器代表服务器端角色,A 机器是客户端角色,前者需要在后者发送连接建立请求时先打开某个端口等待数据传输,否则将无法建立正常连接。

image.png



三次握手指的是建立连接的三个步骤:


  1. A 机器发送一个数据包并将 SYN 置为 1,表示希望建立连接。这个包中包含随机序列 seq = x;
  2. B 机器收到 A 机器发过来的数据包后,通过 SYN = 1 得知这是一个建立连接的请求,于是发送一个响应包并将 SYN 和 ACK 置为 1。这个包中包含随机序列 seq = y ,而确认序列 ack = x + 1表示收到 A 机器发过来的 SYN。
  3. A 机器收到 B 机器响应包后需要确认,确认包中将 ACK 置为 1,并将确认序列设置为 seq = y + 1,表示收到了来自 B 机器的 SYN。

为什么需要三次握手

有两个主要目的:信息对等和防止超时。

信息对等

先从信息对等角度来看,如表所示,双方只有确认 4 类信息,才能建立连接。

image.png


防止超时

建立连接三次握手也是为了防止超时导致脏连接。TTL 网络报文的生存时间往往都会超过TCP 请求超时时间,如果两次握手就可以创建连接,传输数据并释放连接后,第一个超时的连接请求才到达 B 机器的话, B 机器会以为 A 创建新连接的请求,然后确认同意创建连接。因为 A 机器的状态不是 SYN_SENT ,所以直接丢弃了 B 的确认数据,以致最后只是 B 单方面创建连接完毕。

image.png



四次挥手原理


image.png


TIME_WAIT 和 CLOSE_WAIT 表示主动关闭和被动关闭产生的阶段性状态。

在 TIME_WAIT 等待的 2MSL 是报文在网络上生存的最长时间,超过阈值变将报文丢弃。


  1. A 机器想要关闭连接,则需要等待本方数据发送完毕后,传递 FIN = 1 信号给 B 机器,A 机器进入 FIN_WAIT_1 状态。
  2. B 机器应答 ACK ,告诉 A 机器可以断开,但是需要等 B 机器处理完数据,再主动给 A 机器发送 FIN 信号。这时, A 机器处于半关闭状态( FIN_WAIT_2 ),无法再发送新的数据。
  3. B 机器做好连接关闭前的准备工作后,发送 FIN = 1 信号给 A 机器,此时 B 机器也进入半关闭状态( CLOSE_ WAIT)。
  4. A 机器发送针对 B 机器 FIN 的 ACK 后,进入 TIME-WAIT 状态,经过 2MSL ( Maximum Segment Lifetime )后,没有收到 B 机器传来的报文,则确定 B 机器已经收到 A 机器最后发送的 ACK 指令,此时 TCP 连接正式释放。


则确定 B 机器已经收到 A 机器最后发送的 ACK 指令,此时 TCP 连接正式释放。


严重声明

本文参考《码出高效》一书,仅用于自我学习,如用于商业用途请联系原版编辑!

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
16天前
|
机器学习/深度学习 人工智能 网络协议
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
28 4
|
网络协议
TCP/IP协议的介绍
TCP/IP协议是众多协议的统称,通过分层结构来管理。可分为七层模型或四层结构
|
缓存 网络协议 安全
TCP通信机制:三次握手、四次挥手、滑动窗口
TCP通信机制:三次握手、四次挥手、滑动窗口
618 1
TCP通信机制:三次握手、四次挥手、滑动窗口
|
网络协议
TCP/UDP相关-三次握手四次挥手以及为什么三次握手-如何实现可靠UDP传输
TCP/UDP相关-三次握手四次挥手以及为什么三次握手-如何实现可靠UDP传输
111 0
|
网络协议 网络架构
六、TCP/IP模型 和 5层参考模型
六、TCP/IP模型 和 5层参考模型
六、TCP/IP模型 和 5层参考模型
|
域名解析 网络协议
IP协议, TCP协议 和DNS 服务分别是干什么的?
大家好,我是阿萨。昨天讲解了网络四层协议[TCP/IP协议族分为哪4层?]今天我们学习下IP 协议, TCP 协议和DNS 协议分别是干什么的。
217 0
IP协议, TCP协议 和DNS 服务分别是干什么的?
|
网络协议
TCP/IP协议族有哪些?
大家好,我是阿萨。昨天我们学习了[URI 和URL 的区别是什么?]了解了URI 和URL的区别。 学习HTTP, 绕不开TCP/IP,那么TCP/IP 协议族分为哪4层?
256 0
TCP/IP协议族有哪些?
|
缓存 网络协议 安全
TCP三次握手四次挥手及常见问题解决方案
TCP三次握手四次挥手及常见问题解决方案
TCP三次握手四次挥手及常见问题解决方案
|
网络协议 网络性能优化 网络安全
网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解(2)
网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解(2)
网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解(2)
|
域名解析 网络协议 安全
网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解(1)
网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解(1)
网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解(1)