说说TCP传输的三次握手四次挥手策略

TCP(传输控制协议)是一个面向连接、可靠的传输层协议。在建立和关闭连接时,TCP使用“三次握手”和“四次挥手”机制来确保可靠的通信。下面我们详细讲解这两个过程:

一、三次握手(TCP连接建立)

三次握手是建立TCP连接的过程,目的是确保客户端和服务器之间的连接是可靠的。通过三次握手,双方能够确认彼此的接收和发送能力,以及初始的序列号。

三次握手的过程:
  1. 第一次握手 — 客户端发送SYN请求:

    • 客户端发送一个SYN(同步序列编号)报文段到服务器,表示客户端希望建立连接。此时客户端进入 SYN_SENT 状态,等待服务器的响应。
    • SYN报文段中会包含客户端的初始序列号(Seq=Client_ISN),并且SYN标志位被设置为1。
  2. 第二次握手 — 服务器回应SYN-ACK:

    • 服务器收到客户端的SYN报文后,服务器会发送一个SYN-ACK报文段给客户端,表示同意建立连接。此时,服务器进入 SYN_RECEIVED 状态,等待客户端的确认。
    • 该报文中会包含服务器的初始序列号(Seq=Server_ISN),并且ACK标志位被设置为1,表示确认收到客户端的SYN请求(Ack=Client_ISN+1)。服务器还会发送自己的SYN请求。
  3. 第三次握手 — 客户端确认:

    • 客户端收到服务器的SYN-ACK报文后,客户端会发送一个ACK报文段来确认收到服务器的SYN-ACK。此时,客户端进入 ESTABLISHED 状态,表示连接已经建立。
    • 该报文段的序列号为 Seq=Client_ISN+1,ACK字段值为 Ack=Server_ISN+1。客户端发送完毕后,服务器也进入 ESTABLISHED 状态,连接建立完成。

通过这三次握手,客户端和服务器都能确认彼此的接收能力,并且同步序列号,确保数据传输的可靠性。

总结:
  • 第一次:客户端发送SYN请求,服务器收到后回SYN-ACK;
  • 第二次:服务器返回SYN-ACK,客户端确认;
  • 第三次:客户端确认,连接建立。

二、四次挥手(TCP连接关闭)

四次挥手是TCP连接的终止过程。由于TCP是全双工的连接,每一方向的关闭都需要独立处理。四次挥手的目的是确保双方能够完成数据的传输,优雅地关闭连接。

四次挥手的过程:
  1. 第一次挥手 — 客户端发送FIN:

    • 客户端发送一个FIN(结束连接)报文段,表示客户端已经没有数据发送到服务器了。此时,客户端进入 FIN_WAIT_1 状态。
    • 此时客户端请求关闭连接,但仍然可以接收数据。
  2. 第二次挥手 — 服务器回应ACK:

    • 服务器收到客户端的FIN报文后,表示已经接收到客户端关闭连接的请求。服务器会返回一个ACK报文段,确认客户端的FIN报文。此时,服务器进入 CLOSE_WAIT 状态。
    • 服务器的ACK报文段的 Ack=Client_SEQ+1,表明服务器已接收到客户端的关闭请求。
  3. 第三次挥手 — 服务器发送FIN:

    • 服务器发送一个FIN报文段,表示服务器端的数据也传输完毕,准备关闭连接。此时,服务器进入 LAST_ACK 状态。
    • 此时服务器告诉客户端它已经没有数据要发送了,请求客户端关闭连接。
  4. 第四次挥手 — 客户端回应ACK:

    • 客户端收到服务器的FIN报文后,发送一个ACK报文段来确认。此时客户端进入 TIME_WAIT 状态,等待一段时间,以确保服务器收到ACK报文后再完全关闭连接。
    • 客户端的ACK报文的序列号为 Ack=Server_SEQ+1。此时,客户端可以关闭连接,进入 CLOSED 状态。

    TIME_WAIT状态:客户端在发送完最后的ACK报文后,会进入 TIME_WAIT 状态,通常会持续2倍的最大报文生存时间(MSL,Maximum Segment Lifetime),目的是确保服务器能够收到ACK报文,避免重复的数据包影响新连接。

总结:
  • 第一次:客户端发送FIN,表示请求关闭;
  • 第二次:服务器回复ACK,确认关闭;
  • 第三次:服务器发送FIN,表示数据发送完毕;
  • 第四次:客户端回复ACK,连接完全关闭。

为什么需要四次挥手?

TCP连接是全双工的,客户端和服务器各自都可以独立地发送和接收数据。因此,当客户端或服务器中的一方决定关闭连接时,需要确保另一方还有时间来完成数据的发送,避免丢失数据。此外,TIME_WAIT 状态可以防止连接关闭后的老数据包干扰新的连接。

总结

  • 三次握手:用于建立TCP连接,确保双方都准备好进行数据传输,并且能够同步初始的序列号。
  • 四次挥手:用于正常终止TCP连接,确保双方都能完成剩余数据的发送和接收,并且优雅地关闭连接。

这两种机制是TCP协议提供的可靠性保障,确保在连接的建立与关闭过程中不会丢失数据或出现通信错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/916517.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LC12:双指针

文章目录 125. 验证回文串 本专栏记录以后刷题碰到的有关双指针的题目。 125. 验证回文串 题目链接:125. 验证回文串 这是一个简单题目,但条件判断自己写的时候写的过于繁杂。后面参考别人写的代码,首先先将字符串s利用s.toLowerCase()将其…

MySQL5.7.37安装配置

1.下载MySQL软件包并解压 2.配置环境变量 3.新建my.ini文件并输入信息 [mysqld] #端口号 port 3306 #mysql-5.7.27-winx64的路径 basedirC:\mysql-5.7.37\mysql-5.7.37-winx64 #mysql-5.7.27-winx64的路径\data datadirC:\mysql-5.7.37\mysql-5.7.37-winx64\data #最大连接数…

python习题4

1 判断车牌归属地 输入一串车牌号,按e结束,判断车牌归属于那里 例如: 输入: jingA12345 huB34567 zheA99999 e 输出: jing hu zhe chepai input(请输入车牌号:\n) lst [] while chepai ! e:lst…

【原创】java+ssm+mysql社区疫情防控管理系统设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

《深度学习》VGG网络

文章目录 1.VGG的网络架构2.案例:手写数字识别 学习目标: 知道VGG网络结构的特点能够利用VGG网络完成图像分类 2014年,⽜津⼤学计算机视觉组(Visual Geometry Group)和GoogleDeepMind公司的研究员⼀起研发出了新的深度…

探索 Python HTTP 的瑞士军刀:Requests 库

文章目录 探索 Python HTTP 的瑞士军刀:Requests 库第一部分:背景介绍第二部分:Requests 库是什么?第三部分:如何安装 Requests 库?第四部分:Requests 库的基本函数使用方法第五部分&#xff1a…

无桥Boost-PFC 双闭环控制MATLAB仿真

一、无桥Boost-PFC原理概述 无桥 Boost-PFC(Power Factor Correction,功率因数校正)的工作原理是通过特定的电路结构和控制策略,对输入电流进行校正,使其与输入电压同相位,从而提高电路的功率因数&#xf…

数据结构Python版

2.3.3 双链表 双链表和链表一样,只不过每个节点有两个链接——一个指向后一个节点,一个指向前一个节点。此外,除了第一个节点,双链表还需要记录最后一个节点。 每个结点为DLinkNode类对象,包括存储元素的列表data、…

力扣-Hot100-二叉树其一【算法学习day.32】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…

京东商品详情,Python爬虫的“闪电战”

在这个数字化的时代,我们每天都在和数据打交道,尤其是电商数据。想象一下,你是一名侦探,需要快速获取京东上某个商品的详细信息,但是没有超能力,怎么办?别担心,Python爬虫来帮忙&…

深度学习推荐系统的工程实现

参考自《深度学习推荐系统》——王喆,用于学习和记录。 介绍 之前章节主要从理论和算法层面介绍了推荐系统的关键思想。但算法和模型终究只是“好酒”,还需要用合适的“容器”盛载才能呈现出最好的味道,这里的“容器”指的就是实现推荐系统…

「QT」高阶篇 之 d-指针 的用法

✨博客主页何曾参静谧的博客📌文章专栏「QT」QT5程序设计📚全部专栏「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合「C/C」C/C程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定制…

ISUP协议视频平台EasyCVR视频设备轨迹回放平台智慧农业视频远程监控管理方案

在当今快速发展的农业领域,智慧农业已成为推动农业现代化、助力乡村全面振兴的新手段和新动能。随着信息技术的持续进步和城市化进程的加快,智慧农业对于监控安全和智能管理的需求日益增长。 视频设备轨迹回放平台EasyCVR作为智慧农业视频远程监控管理方…

计算机视觉空域处理完整版——超详细图文解

空域处理 图像空域处理 a.线性滤波b.非线性滤波c.二值图像处理方法 数学形态学连通成分标记 “点运算”是在不改变图像大小、几何形状以及局部结构的情况下,对像素值进行修改,新图像的像素值只与 原图像同一位置的像素值有关。 灰度级变换(线性变换,非…

Python学习------第八天

函数 函数的传入参数 掌握函数返回值的作用 掌握函数返回值的定义语法 函数的嵌套调用: 函数的局部变量和全局变量 局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量。 money 5000000 n…

Matlab实现麻雀优化算法优化随机森林算法模型 (SSA-RF)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 麻雀优化算法(Sparrow Search Algorithm, SSA)是一种基于自然界中麻雀觅食和躲避天敌行为的新型群智能优化算法。SSA通过模拟麻雀群体中个体之间的信息交流和社会互动来指导搜索过程&…

51c嵌入式~单片机合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/12362395 一、不同的电平信号的MCU怎么通信? 下面这个“电平转换”电路,理解后令人心情愉快。电路设计其实也可以很有趣。 先说一说这个电路的用途:当两个MCU在不同的工作电压下工作&…

web实验3:虚拟主机基于不同端口、目录、IP、域名访问不同页面

创建配置文件: 创建那几个目录及文件,并且写内容: 为网卡ens160添加一个 IPv4 地址192.168.234.199/24: 再重新激活一下网卡ens160: 关闭防火墙、改宽松模式: 重启服务: 查看nginx端口监听情况:…

AutoHotKey自动热键AHK-正则表达式

在这个软件的操作中,基本都是需要即时的解决一些问题,所以对字符串的操作是比较多的,所以正则的使用还是比较重要的,接下来我们用一个例子来了解正则表达式的使用 str "7654321" RegExMatch(str, "65(43)(21)", SubPat)str ( str %str% SubPat %SubPa…

越南很火的slots游戏投放Google谷歌广告策略

越南很火的slots游戏投放Google谷歌广告策略 越南的slot游戏市场正在借助Google广告代投策略推动增长。随着智能手机的普及和互联网的普及,越南的游戏市场迅速增长,吸引了越来越多的投资者和开发者进入该市场。 在这个竞争激烈的市场中,广告…