简述三次握手和四次断开

news/2024/9/19 14:07:44/ 标签: 网络, tcp/ip, 网络协议

在计算机网络中,TCP(Transmission Control Protocol)是一种面向连接的协议,它通过三次握手(Three-Way Handshake)建立连接,并通过四次挥手(Four-Way Wave)断开连接。下面分别简述这两个过程。

三次握手(Three-Way Handshake)
三次握手的过程是为了确保双方都准备好进行通信,并且可以正确地发送和接收数据。以下是三次握手的具体步骤:

SYN(同步序列编号)
客户端向服务器发送 SYN 报文:客户端首先发送一个带有 SYN 标志位的 TCP 数据包给服务器,表示请求建立连接。这个数据包还包含了一个初始序列号(ISN),用于后续的数据传输。
客户端:SYN(seq=x)
SYN-ACK(同步确认)
服务器向客户端发送 SYN-ACK 报文:服务器接收到客户端的 SYN 报文后,会发送一个带有 SYN 和 ACK 标志位的 TCP 数据包给客户端。这个数据包包含了一个确认号(ack=x+1),表示确认收到了客户端的序列号,并且包含了服务器自己的初始序列号。
服务器:SYN-ACK(seq=y, ack=x+1)
ACK(确认)
客户端向服务器发送 ACK 报文:客户端接收到服务器的 SYN-ACK 报文后,会发送一个带有 ACK 标志位的 TCP 数据包给服务器。这个数据包包含了一个确认号(ack=y+1),表示确认收到了服务器的序列号。
客户端:ACK(seq=x+1, ack=y+1)
至此,三次握手完成,TCP 连接建立成功。

四次断开(Four-Way Wave)
四次断开的过程是为了确保双方都完成了数据的发送和接收,并且可以安全地断开连接。以下是四次断开的具体步骤:

FIN(终止标志)
客户端向服务器发送 FIN 报文:客户端决定关闭连接时,会发送一个带有 FIN 标志位的 TCP 数据包给服务器。这个数据包包含了一个序列号,用于标识这是最后一个数据包。
客户端:FIN(seq=u)
ACK(确认)
服务器向客户端发送 ACK 报文:服务器接收到客户端的 FIN 报文后,会发送一个带有 ACK 标志位的 TCP 数据包给客户端,确认收到了客户端的 FIN 报文。
服务器:ACK(seq=v, ack=u+1)
FIN(终止标志)
服务器向客户端发送 FIN 报文:服务器完成数据发送后,会发送一个带有 FIN 标志位的 TCP 数据包给客户端,表示服务器也准备关闭连接。
服务器:FIN(seq=v, ack=u+1)
ACK(确认)
客户端向服务器发送 ACK 报文:客户端接收到服务器的 FIN 报文后,会发送一个带有 ACK 标志位的 TCP 数据包给服务器,确认收到了服务器的 FIN 报文。
客户端:ACK(seq=u+1, ack=v+1)
至此,四次断开完成,TCP 连接完全关闭。

为什么需要三次握手?
确保双方都已经准备好:三次握手确保了双方都已经准备好进行数据传输,并且确认了对方的通信能力。
避免失效的连接请求:三次握手可以防止已失效的连接请求报文突然又传送到了服务端,导致不必要的错误连接。
为什么需要四次断开?
确保双方都完成数据传输:四次断开确保了双方都已经完成了数据的发送和接收,确保没有遗漏的数据。
确保连接的可靠关闭:四次断开确保了双方都已经确认对方的数据发送完毕,可以安全地关闭连接。
总结
三次握手:用于建立 TCP 连接,确保双方都准备好进行数据传输。
四次断开:用于关闭 TCP 连接,确保双方都完成了数据的发送和接收,并且可以安全地断开连接。


http://www.ppmy.cn/news/1526949.html

相关文章

图像处理 -- ISP功能之局部对比度增强 LCE

局部对比度增强(LCE) 局部对比度增强(Local Contrast Enhancement, LCE)是一种图像处理技术,旨在通过调整图像的局部区域对比度,增强图像细节和视觉效果。LCE 的实现方式多种多样,以下是几种常…

godotenv拜读

简介 应用提倡将配置存储在环境变量中。任何从开发环境切换到生产环境时需要修改的东西都从代码抽取到环境变量里。 但是在实际开发中,如果同一台机器运行多个项目,设置环境变量容易冲突,不实用。godotenv库从.env文件中读取配置,…

项目实战应用Redis分布式锁

Redis分布式锁 一、前言二、Redis分布式锁过期处理三、Redis分布式实现3.1 基于Jedis 的API实现分布式锁3.1.1 基础命令3.1.2 基于Jedis API的分布式锁3.1.3 基于Lua脚本实现分布式锁 四、Redisson的使用五、Redision锁 核心源码分析六、总结 一、前言 对于项目中使用Redis分布…

Boot header格式描述详细信息。CSU DMA用于数据传输。安全流开关允许数据移动。PL配置通过PCAP接口。PL bit流包含设备配置数据。

在Boot header中的一些重要字段包括: - Reserved for interrupts: 用于存储中断相关信息,特别是在LQSPI地址空间中的默认0x01F中断向量被更改时,在XIP启动模式下使用。 - Quad-SPI宽度检测: 用于描述Quad-SPI宽度的字段。 - 加密状态: 用于…

128. 最长连续序列-LeetCode(C++)

128. 最长连续序列 2024.9.12 题目 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 提示&#xff1a; 0 < nums.length < …

DFS:深搜+回溯+剪枝实战解决OJ问题

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一 排列、子集问题 1.1 全排列I 1.2 子集I 1.3 找出所有子集的异或总和 1.4 全排列II 1.5 字母大小写全排列 1.6 优美的排列 二 组合问题 2.1 电话号码的数字组合 …

git编译安装报错

编译安装步骤 卸载旧的 yum -y remove gitcd /usr/local/src/wget https://www.kernel.org/pub/software/scm/git/git-2.15.1.tar.xztar -vxf git-2.15.1.tar.xzcd git-2.15.1make prefix/usr/local/git allmake prefix/usr/local/git installecho "export PATH$PATH:/usr…

【无人机设计与控制】四旋翼无人机俯仰姿态保持模糊PID控制(带说明报告)

摘要 为了克服常规PID控制方法在无人机俯仰姿态控制中的不足&#xff0c;本研究设计了一种基于模糊自适应PID控制的控制律。通过引入模糊控制器&#xff0c;实现了对输入输出论域的优化选择&#xff0c;同时解决了模糊规则数量与控制精度之间的矛盾。仿真结果表明&#xff0c;…

[苍穹外卖]-12Apache POI入门与实战

工作台 需求分析: 工作台是系统运营的数据看板, 并提供快捷操作入口, 可以有效提高商家的工作效率 营业额: 已完成订单的总金额有效订单: 已经完成订单的数量订单完成率: 有效订单数/总订单数*100%平均客单价: 营业额/有效订单数新增用户: 新增的用户数量 接口设计: 一个接口返…

Go语言并发编程:从理论到实践

并发是计算机科学领域中的一个核心概念&#xff0c;但对于不同的人来说&#xff0c;它可能意味着不同的东西。除了“并发”之外&#xff0c;你可能还听说过“异步”、“并行”或“多线程”等术语。一些人认为这些词是同义的&#xff0c;而另一些人则严格区分它们。如果我们要花…

docker时区修改

1、服务器时区 [rootiZwz98l9o3v7h8t5rd0sn5Z ~]# date Wed Sep 4 13:34:46 CST 2024 2、容器时区 [rootiZwz98l9o3v7h8t5rd0sn5Z ~]# docker exec -it openresty /bin/bash root0aabeb13c120:/# date Wed Sep 4 05:36:17 UTC 2024 3、修改容器时区 ln -sf /usr/share/zone…

Python 解析 JSON 数据

1、有如下 JSON 数据&#xff0c;存放在 data.json 文件&#xff1a; [{"id":1, "name": "小王", "gender": "male", "score": 96.8}, {"id":2, "name": "小婷", "gender&qu…

使用Python实现深度学习模型:智能家庭安防系统

随着科技的进步和人们对安全需求的增加,智能家庭安防系统成为了现代家庭的重要组成部分。通过深度学习技术,我们可以构建高效的智能安防系统,实时监测家庭环境,识别潜在威胁,并提供及时的预警。本文将详细介绍如何使用Python实现一个简单的深度学习模型,用于智能家庭安防…

请求HTTP链接的图片等资源被自动变成HTTPS请求的问题解决(顺便可以解决图片防盗链)

文章目录 问题现象问题根本原因常规问题解决办法非Chrome浏览器&#xff1a;控制CSP协议对HTML页面处理nginx配置中处理 Chrome浏览器本地处理方式 Chrome浏览器通用解决办法&#xff08;服务器端无法控制新版Chrome这种行为&#xff0c;只能曲线救国--顺便可以解决图片防盗链&…

leetcode 605.种花问题

只说注意点和处理边界问题。 题目本身很简单&#xff0c;只需要遍历数组即可。但是&#xff0c;需要注意边界的处理问题。 如果n0&#xff0c;那么这个时候是不需要插进花的&#xff0c;所以是true&#xff1b; 如果花坛中的数目是0&#xff0c;那么就不行&#xff0c;返回f…

素数个数[中秋快乐~]

题目描述 编程求 2 &#xff5e; n (包括 n)中有多少个素数。 输入格式 输入 n(2≤n≤50000)。 输出格式 素数个数。 输入数据 1 10输出数据 1 4代码 #include<bits/stdc.h> using namespace std; int main(){int n,ans0;cin>>n;for(int i2;i<n;i){int…

Oracle中VARCHAR和VARCHAR2的区别

Oracle中VARCHAR和VARCHAR2的区别 VARCHAR2 默认类型&#xff0c;VARCHAR2是Oracle中最常见的可变长度字符串类型VARCHAR2不区分NULL和空字符串&#xff0c;这意味着NULL和空字符串在VARCHAR2类型中被视为相同的值最大长度为4000字节&#xff08;从Oracle 12c开始&#xff0c…

Git:版本控制工具介绍

目录 全文概要版本控制工具介绍版本控制系统的概念**版本控制系统的历史****版本控制系统的分类****本地版本控制系统****集中式版本控制****分布式版本控制系统** Git 介绍Git 概念Git 与 SVN 对比**SVN的记录方式****Git 的记录快照** Git 安装Git 安装Bash、CMD与GUIGit 的配…

gRPC etcd 服务注册与发现、自定义负载均衡

本文首发在这里 考虑这种常见情景&#xff1a;服务多开&#xff0c;正常连接采用轮询负载均衡&#xff0c;但若服务有状态&#xff0c;重连则需进入之前的服务 本文其实主要在讨论以下两篇官方文档 gRPC naming and discoveryCustom Load Balancing Policies 实现依赖即将废…

红外成像人员检测数据集

红外成像人员检测数据集YOLO格式介绍 红外成像技术是一种非接触式的温度测量技术&#xff0c;通过探测物体发出的红外辐射来生成图像。这种技术在人员检测领域有着广泛的应用&#xff0c;尤其是在夜间监控、安全防范、医疗诊断、环境监测等方面。本文将详细介绍一个红外成像人…