TCP三次握手以及释放连接

计算机网络--传输层 用户数据报协议UDP(User Datagram protocol)是无连接的,仅最大可能交付,没有拥塞控制,面向报文(对于应用传下来的报文不合并也不拆分,只添加UDP首部),支持一对一,一对多,多对一,多对多的交互通信。 传输控制协议TCP(Transmission Control protocol)是面向连接的,提供可靠交付,有拥塞控制,流量监控,通过双工通信,面向字节流(把应用层传下来的看... 阅读详情

本文整理自:

http://blog.youkuaiyun.com/oney139/article/details/8103223

http://blog.youkuaiyun.com/webnumen/article/details/1541330

一、TCP头部简介



ACK :即确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。TCP报文格式中的控制位由6个标志比特构成,其中一个就是ACK,ACK为1表示确认号有效,为0表示报文中不包含确认信息,忽略确认号字段。在TCP/IP协议中,如果接收方成功的接收到数据,那么会回复一个ACK数据。

SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此,  SYN置1就表示这是一个连接请求或连接接受报文。

FIN (finis)即完,终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。

序列号与确认号
TCP协议工作在OSI的传输层,是一种可靠的面向连接的数据流协议,TCP之所以可靠,是因为它保证了传送数据包的顺序。顺序是用一个序列号来保证的。响应包内也包括一个序列号,表示接收方准备好这个序列号的包。在TCP传送一个数据包时,它会把这个数据包放入重发队列中,同时启动计时器,如果收到了关于这个包的确认信息,便将此数据包从队列中删除,如果在计时器超时的时候仍然没有收到确认信息,则需要重新发送该数据包。另外,TCP通过数据分段中的序列号来保证所有传输的数据可以按照正常的顺序进行重组,从而保障数据传输的完整。
二、三次握手的过程


TCP建立连接,也就是我们常说的三次握手,它需要三步完成。在TCP的三次握手中,发送第一个SYN的一端执行的是主动打开。而接收这个SYN并发回下一个SYN的另一端执行的是被动打开。

这里以客户端向服务器发起连接来说明。

1)  第1步:客户端向服务器发送一个同步数据包请求建立连接,该数据包中,SYN=1 ACK=0  (请看头字段的介绍),TCP规定SYN=1时不能携带数据,但要消耗一个序号,初始序列号seq(ISN)是客户端随机产生的一个值,上图表示为seq=x;确认号是0;


2)  第2步:服务器收到这个同步请求数据包后,会对客户端进行一个同步确认。这个数据包中,序列号(ISN)是服务器随机产生的一个值,上图表示为seq=y,确认号ack是客户端的初始序列号+1;即 ack=x+1


3)  第3步:客户端收到这个同步确认数据包后,再对服务器进行一个确认。该数据包中,序列号是上一个同步请求数据包中的确认号值,即seq=x+1,确认号ack是服务器的初始序列号+1,即ack=y+1。



初始序列号(ISN)随时间而变化的,而且不同的操作系统也会有不同的实现方式,所以每个连接的初始序列号是不同的。TCP连接两端会在建立连接时,交互一些信息,如窗口大小、MSS等,以便为接着的数据传输做准备。


RFC793指出ISN可以看作是一个32bit的计数器,每4ms加1,这样选择序号的目的在于防止在网络中被延迟的分组在以后被重复传输,而导致某个连接的一端对它作错误的判断


然后连接建立,为什么要进行三次握手呢(两次确认)。



三、TCP传输数据

在TCP建立连接后,就可以开始传输数据了。TCP工作在全双工模式,它可以同时进行双向数据传输。这里为了简化,我们只谈服务器向客户端发送数据的情况,而客户端向服务器发送数据的原理和它是类似的,这里便不重复说明。
服务器向客户端发送一个数据包后,客户端收到这个数据包后,会向服务器发送一个确认数据包。

传输数据的简要过程如下:

1)  发送数据:服务器向客户端发送一个带有数据的数据包,该数据包中的序列号和确认号与建立连接第三步的数据包中的序列号和确认号相同;

2)  确认收到:客户端收到该数据包,向服务器发送一个确认数据包,该数据包中,序列号是为上一个数据包中的确认号值,而确认号为服务器发送的上一个数据包中的序列号+所该数据包中所带数据的大小。
数据分段中的序列号可以保证所有传输的数据按照正常的次序进行重组,而且通过确认保证数据传输的完整性。





四、释放连接的过程






当客户A 没有东西要发送时就要释放 A 这边的连接,A会发送一个报文(没有数据),其中 FIN 设置为1,  服务器B收到后会给应用程序一个信,这时A那边的连接已经关闭,即A不再发送信息(但仍可接收信息)。  A收到B的确认后进入等待状态,等待B请求释放连接, B数据发送完成后就向A请求连接释放,也是用FIN=1 表示, 并且用 ack = u+1(如图), A收到后回复一个确认信息,并进入 TIME_WAIT 状态, 等待 2MSL 时间。
为什么要等待呢?
为了这种情况:  B向A发送 FIN = 1 的释放连接请求后,A向B回复确认消息,但这个消息丢失了, B没有接到确认信息, B 超时会重传,这时A在 WAIT_TIME 还能够接收到这个请求,这时再回复一个确认就行了。(A收到 FIN = 1 的请求后 WAIT_TIME会重新记时)

另外服务器B存在一个保活状态,即如果A突然故障死机了,那B那边的连接资源什么时候能释放呢?  就是保活时间到了后,B会发送探测信息, 以决定是否释放连接。

TCP传输中的“三次握手”建立连接和“四次握手”释放连接过程 TCP的连接管理主要面向三个连接阶段,分别是连接建立,传输数据,连接释放。 其中连接的建立和连接释放是两个重要的知识点,分别有两个比较形象的称呼:三次握手和四次握手。 最近正在学习传输层的知识,故借本文对这两个阶段进行简要整理。 首先必须明确的是TCP协议是采用客户/服务器的方式,主动发起连接建立的应用进程称为客户机,被动等待连接建立的应用进程称为服务器。 三次握手 一次连接建立的过程如下: ... 阅读详情

相关推荐

详解TCP三次握手(建立连接)和四次握手(释放连接)

TCP连接的建立(三次握手)和释放(四次握手)

dvlinker的技术专栏 1万+

TCP基础及连接与释放

概述 TCP数据段格式 TCP连接状态转移 TCP连接的建立 双方同时建立连接 TCP连接的释放 双方同时释放连接 概述 TCP/IP结构中,最主要的传输层协议就是传输控制协议(TCP, Transmission Control Protocol),它具有如下主要特性: 面向连接 在使用TCP前必须建立TCP传输连接,而且使用完后也必须释放连接。 有很多网...

小手挥墨 1109

微波射频学习笔记18-------偶极子天线和微波天线设计介绍

几种天线设计方法的介绍 一、偶极子天线 1.天线模型 两根紧挨着的金属导体,长度均为四分之一波长,直径均远小于波长,两导体间距也远小于波长。 2.天线性能的设计因素 ① 单个导体长度L:(光速/频率)/4=四分之一波长(在空气中传播的波长),但在导体中传播,波长会变短; ② 导体半径R:远小于波长即可,使用导电率高些的材料,市面上常见直径零点几毫米就挺好,或者用波长/200,得出一个小200的值,也算远小于波长; ③ 两导体间距S:远小于波长即可,可以比半径更小点。 以上三个变量L、R、S,均可在仿真软件

Sil_sprout 1万+

TCP的连接释放:四次挥手

参与一条TCP连接的两个进程中的任何一个进程都可以终止该TCP连接,当连接结束之后,主机中的资源(缓存和变量)将会被释放。这就是所说的“TCP四次握手” 第一次握手:客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接。 此时FIN=1(终止位:为1时表明此报文段发送方数据已发完,要求释放连接),seq=u(随机的数) 第二次握手:服务器端返回一个确认报文段,此时客户端到服务器该方向的连接就释放了,此时整个TCP连接处于“半关闭状态”。 此时,ACK=1,seq=v,ack=u+1。 第三次握手:服务

Zyl_uncle的博客 1284

【ros2】ros2_control 全面解析与实战指南

ros2_control 是 ROS2 生态中用于机器人实时控制的核心框架,旨在统一硬件接入接口、复用控制算法,避免重复开发,实现仿真与实机硬件的无缝迁移。其核心目标是简化不同硬件(传感器、执行器、完整系统)的集成流程,让开发者专注于控制逻辑而非硬件适配。创建类型功能包,依赖rclcpp。实现on_initupdate在中声明控制器插件,编译生成动态库。在 YAML 配置文件中指定自定义控制器类型,加载测试。

EnHengNa的博客 1472

LightningChart使用教程:创建 JS 散点图

这是对 LightningChart JS XY 图表一些有趣功能的快速技术研究,以及如何使用 LightningChart JS 创建嵌入式散点聊天和添加自定义交互。 此图表将可视化一个 XY 坐标列表以及一个额外的自定义属性,它只是一段文本。这些自定义属性将与 UI 文本元素一起显示,这些元素将与用户的鼠标移动交互。 我们将介绍的突出功能是: 什么是散点图? 如何创建散点图? 如何将自定义属性附加到数据点。 如何创建交互式 UI 文本元素。 最终结果 什么是散点图? 散点图或散点图是..

Augenstern__zyx的博客 1370

TCP三次握手及释放连接详解

本文整理自: http://blog.youkuaiyun.com/oney139/article/details/8103223 http://blog.youkuaiyun.com/webnumen/article/details/1541330 一、TCP头部简介 ACK : 即确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。TCP报文格式中的控

Robin Hu的专栏 4031

自制温湿度计——STM32-L432KC驱动lcd1602和dht11温湿度显示

先给大家甩一张图片哈(附上网址)简单说一下这块板子在这个小项目里的小缺点:一、引脚有点少,lcd1602本来有两种传输数据方式,一种是4bit,另一种是8bit,但是这块板子对于这个项目来说引脚有点少,所以建议用4bit模式。然而,在网上是很难找到设置4bit传输模式的lcd1602的,这也是为什么我写这个blog。二、mbed-os有时候会有大大小小的问题,搞人心态是真的。比如库函数离奇失踪,从官网上下载库函数失败,重装也解决不了然后莫名其妙好了。

m0_72994251的博客 3912

TCP的连接与释放

图文详解TCP的三次握手和四次挥手过程

雪月清的博客 3467

CANbus收发器ADM3053BRWZ-REEL7应用原理图设计

ADM3053 在 CAN 协议控制器与物理层总线之间创建一个 完全隔离的接口。该器件具有限流和热关断特性,可防止输出短路。额定温 度范围为工业温度范围,提供 20 引脚、宽体 SOIC 封装。该器件采用 5 V 单电源供电, 提供完全隔离的 CAN 解决方案。ADM3053 是一款隔离式控制器区域网络 (CAN) 物理层收 发器,集成隔离 DC/DC 转换器,符合 ISO 11898 标准。该器件采用 ADI 公司的。Coupler® 技术,将双通道隔离器、 CAN 收发器和 ADI 公司的。

zhusl6688的博客 1239

科研级实战】YOLOv11 pose部署至RK3588全流程:让姿态估计模型在边缘端毫秒级运行,我来帮你突破人体行为分析落地壁垒

在智慧安防人体行为分析场景中,基于YOLOv11 pose的模型在云端推理单帧耗时150ms,硬件成本超15000元;经本方案部署到RK3588后,单帧推理耗时降至30ms,硬件成本仅4000元,且关键点检测准确率高达93%以上。在运动姿态评估场景,同款技术路径使模型边缘端推理速度提升6倍,姿态分类精度达95%。这意味着,你也能让自己的姿态估计模型在边缘设备上实现的工业化落地,接下来让我们开启从模型训练到端侧部署的实战征程。

m0_71589036的博客 223

TCP三次握手详解及释放连接过程

TCP头部: 其中 ACK   SYN  序号  这三个部分在以下会用到,它们的介绍也在下面。 暂时需要的信息有: ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1 SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使

我的专栏 12万+

华为MetaERP在财务模块(GL/AP/AR/FA)及子账模块效率优化、月末关账加速、与外部系统对账方面,已形成一套**“并行+实时+智能化”**的完整技术方案

华为MetaERP推出"并行+实时+智能化"技术方案,显著提升财务模块效率:1)采用三级并行策略和内存计算,使子账模块单任务处理时间从142分钟降至9分钟;2)通过并行关账架构将月末关账时间从68小时压缩至7.2小时;3)运用AI智能对账提升效率50%,并支持异步流程和区块链审计。典型场景测试显示月结耗时下降89%,CPU利用率提升116%。方案建议分阶段实施,注意依赖分析、任务粒度设计和性能监控,避免过度并行。该方案已有效解决大型集团财务处理效率低、关账慢、对账难等痛点。

金牌架构师 557

TCP连接的建立和释放过程详解(三次握手、四次挥手)

1. TCP是基于连接的协议 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。所谓面向连接,是指通信双方在进行通信之前,事先在双方之间建立起一个完整的、可以彼此沟通的通道,这个通道就是连接。 TCP是基于连接的协议,也就是说,在正式收发数据之前,必须和对方建立可靠的连接。一个TCP连接的建立要经过三次握手,释放连接一般需要四次挥手。 2. 连接的建立 建立连接的过程一般需要三次握手,如下图所示: 在握手之前,主动打开连

火星基地 3万+

手把手教你学Simulink--基于微电网的建模与仿真场景实例:独立运行模式下微电网的能量管理系统设计

本文详细介绍了使用Simulink对独立运行微电网能量管理系统进行建模与仿真的完整流程。主要包括:系统结构设计(分布式能源、储能系统、负荷等模块)、建模步骤(从创建项目到实现能量管理策略)、仿真设置与结果分析。通过建立基于规则的控制逻辑和优化调度算法,实现微电网的自主运行和能量优化管理。文章还提供了参数优化和多目标改进建议,为新能源和智能电网领域的研究与应用提供了实用指导。

MHD0815的博客 8582

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

TCP建立连接三次握手和释放连接四次握手

TCP建立连接三次握手和释放连接四次握手     【尊重原创,转载请注明出处】http://blog.youkuaiyun.com/guyuealian/article/details/52525724      在谈及TCP建立连接和释放连接过程,先来简单认识一下TCP报文段首部格式(这里只是简单说明,具体请查看相关教程),这里有几个重要的概念     序列号:本报文段所发送的数据的第

AI吃大瓜的博客 4万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

图解TCP连接建立与释放(三次挥手四次握手)

简单图解TCP连接与释放,详细解读三次握手四次挥手全过程。

Nimrod__的博客 5280

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

TCP三次握手建立连接和四次挥手释放连接

三次握手,就是客户端与服务器建立连接之前,先进行三次简单的通信,成功之后才正式建立连接。其目的是为了确认信道是否安全,双方是否具有收发消息的能力。

左直拳的马桶_日用桶 724

TCP建立连接(三次握手)和释放连接(四次握手)

这里写自定义目录标题TCP三次握手和四次挥手的全过程欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图...

qq_36425932的博客 1036

【计算机网络】TCP建立连接、释放连接的三次握手和四次挥手

1 前言 TCP是面向连接的协议,其基于运输连接来传送TCP报文段,两个端点要进行有连接的通信都有三个阶段:如连接建立、数据传送和连接释放。 TCP连接的管理就是使得两个端点之间的连接能够正常的建立和释放。 在连接建立的过程中,要解决以下三个问题: 通信双方知道对方的存在; 要允许双方协商一些参数,如最大窗口值; 能够对运输实体资源进行分配,如缓存大小; 2 建立连接(三次握手) TCP的连接建立是C/S模式。主动发起连接的叫客户端,被动响应的叫服务端 连接的建立需要经过三个阶段,俗称三次握手。 1)最

kt4ngw的博客 7735

TCP的三次握手建立连接和四次挥手释放连接

TCP的三次握手建立连接和四次挥手释放连接TCP的三次握手TCP的四次挥手释放 TCP的三次握手 TCP连接的建立采用客户服务器方式。主动发起连接的建立的应用进程叫做客户(client),而被动等待连接建立的应用进程叫做服务器(server)。 为什么不使用两次 (1)不使用两次的原因:假设客户端发送建立连接的请求由于网络原因滞留在了网络中,没有到达服务端,客户端没有收到确认请求就会进行超时重传这个建立连接的请求,假设服务端收到了第二次建立的连接请求,并返回向客户端发送同意建立连接的报文,至此,连接建立,之

waiting971118的博客 3073
上一篇: setResult与setResultData混淆
下一篇: 常见音频编码格式总结
Manaasdfasdf
博客等级 码龄11年 131粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值