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 连接正式释放。


严重声明

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
7月前
|
机器学习/深度学习 人工智能 网络协议
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
130 4
|
监控 网络协议 网络架构
IP协议【图解TCP/IP(笔记九)】
IP协议【图解TCP/IP(笔记九)】
158 0
|
缓存 网络协议 安全
TCP通信机制:三次握手、四次挥手、滑动窗口
TCP通信机制:三次握手、四次挥手、滑动窗口
797 1
TCP通信机制:三次握手、四次挥手、滑动窗口
|
域名解析 网络协议
IP协议, TCP协议 和DNS 服务分别是干什么的?
大家好,我是阿萨。昨天讲解了网络四层协议[TCP/IP协议族分为哪4层?]今天我们学习下IP 协议, TCP 协议和DNS 协议分别是干什么的。
304 0
IP协议, TCP协议 和DNS 服务分别是干什么的?
|
网络协议 网络架构
六、TCP/IP模型 和 5层参考模型
六、TCP/IP模型 和 5层参考模型
六、TCP/IP模型 和 5层参考模型
|
网络协议
TCP/IP协议族有哪些?
大家好,我是阿萨。昨天我们学习了[URI 和URL 的区别是什么?]了解了URI 和URL的区别。 学习HTTP, 绕不开TCP/IP,那么TCP/IP 协议族分为哪4层?
328 0
TCP/IP协议族有哪些?
|
缓存 网络协议 安全
TCP三次握手四次挥手及常见问题解决方案
TCP三次握手四次挥手及常见问题解决方案
TCP三次握手四次挥手及常见问题解决方案
|
网络协议
TCP/IP协议的介绍
TCP/IP协议是众多协议的统称,通过分层结构来管理。可分为七层模型或四层结构
|
网络协议
TCP/UDP相关-三次握手四次挥手以及为什么三次握手-如何实现可靠UDP传输
TCP/UDP相关-三次握手四次挥手以及为什么三次握手-如何实现可靠UDP传输
156 0
|
网络协议
ACK的累加规则-wireshark抓包分析-不包含tcp头部、ip头部、数据链路层头部等。
ACK的累加规则-wireshark抓包分析-不包含tcp头部、ip头部、数据链路层头部等。
ACK的累加规则-wireshark抓包分析-不包含tcp头部、ip头部、数据链路层头部等。