TCP三次握手/四次挥手

TCP状态转换图 如图主动发起连接请求的状态变化如下图。最开始的时候,主动请求端和被动端都处于CLOSED状态。第一阶段:当主动请求端发送SYN标志位后,其状态变化为SYN_SEND;第二阶段:此时被动方收到主动方的请求后,会向主动方发送SYN标志位以及去确认信息ACK,主动方收到信息后,向被动方发送ACK确认信息,此时主动方的状态变化为ESTABLISHED,完成TCP连接的三次握手。SYN_SEND一般不容易见到使用命令查看状态查看客户端 查看服务端 这里是多进程通信,一个server处于监听状态,另一个serv 阅读详情

【转载自:http://www.programfan.com/blog/article.asp?id=44384】

 

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示。

(1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。

(2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。

(3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据。

                               图1 TCP三次握手建立连接

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4)。

(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。

(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6)。

(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。

TCP采用四次挥手关闭连接如图2所示。

                               图2  TCP四次挥手关闭连接

1.为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?

这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

2.为什么TIME_WAIT状态还需要等2MSL后才能返回到CLOSED状态?

这是因为虽然双方都同意关闭连接了,而且握手的4个报文也都协调和发送完毕,按理可以直接回到CLOSED状态(就好比从SYN_SEND状态到ESTABLISH状态那样);但是因为我们必须要假想网络是不可靠的,你无法保证你最后发送的ACK报文会一定被对方收到,因此对方处于LAST_ACK状态下的SOCKET可能会因为超时未收到ACK报文,而重发FIN报文,所以这个TIME_WAIT状态的作用就是用来重发可能丢失的ACK报文。

 

本文摘自:

《TCP连接的状态转换图深度剖析》

http://www.diybl.com/course/6_system/linux/Linuxjs/2007104/76065.html

参考:

《TCP/IP详解-卷1》第18章《TCP连接的建立与终止》

http://course.ccniit.com/CSTD/Linux/reference/files/018.PDF

 
Tcp三次握手四次挥手和SSL/TLS 由于TCP连接是全双工的(即双方可以同时发送和接收数据),每一方都需要单独关闭各自的数据传输通道,确保连接的安全终止。它们提供了一种在客户端(如浏览器)和服务器之间建立安全通信的方式,确保数据传输的保密性、完整性和真实性。确保客户端和服务器都能够确认对方准备好建立连接,并且可以同步初始序列号,以保证数据传输的有序性和完整性。:在应用层和传输层之间执行,通常在TCP三次握手完成后进行,用于建立安全的加密通信。此时,客户端和服务器之间的连接已经建立,可以开始进行数据的传输。客户端在收到服务器的FIN后,进入。 阅读详情

相关推荐

那些年-SAP固定资产导入AS91 OASV

固定资产起初导入步骤: 第一部分:资产数据导入 1)两个日期配置 填写图片摘要(选填) Specify transfer date/last closed fiscal year 这里的日期填写系统切换日期,如果系统是2015-10-01上线,这里填写2015-09-3 填写图片摘要(选填) Specifylast period posted in prv system 这里指定系统切换的上一期间。这里写2015-09 填写图片摘要(选填) ​2)AS91新增 填写固定资产的分类,公司

阿土工作室 7949

TCP三次握手四次挥手详解

转自:http://molewan.blog.51cto.com/287340/114592 1、建立连接协议(三次握手) (1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。 (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行

dreamylive的专栏 517

ArcMap对遥感图像进行语义分割标注

使用arcmap对遥感图像进行语义分割标注

qq_41708916的博客 4051

【转载】TCP状态转换图详解

在前面,已经介绍了TCP协议的三路握手和四次挥手。如下图所示,TCP通信过程包括三个步骤:建立TCP连接通道(三次握手)、数据传输、断开TCP连接通道(四次挥手)。                      ...

Lionel的专栏 3874

Spring Boot整合AWS S3文件上传实战:从配置到权限管理全流程解析

本文详细解析了Spring Boot整合AWS S3文件上传的全流程,包括基础配置、核心上传功能实现、高级权限控制及安全最佳实践。通过实战案例展示如何高效处理文件上传、大文件分片及权限管理,帮助开发者构建健壮的文件管理系统。特别强调AWS S3的高可用性和安全性,适用于企业级应用开发。

sam99的博客 283

【干货】S7-PLCSIM Advanced V3.0 无法启动实例( Error Code:-30,LicenseNotFound)问题解决方法

【干货】S7-PLCSIM Adavanced V3.0 无法启动实例( Error Code:-30,LicenseNotFound)问题解决方法

handinvv的博客 5万+

TCP连接的状态转换图深度剖析

 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示。(1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。(2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。(3

深度Java 5283

Unity Scriptable Build Pipeline (SBP) 详解

Unity 的可编程构建管线(Scriptable Build Pipeline, SBP)标志着引擎构建架构的一次关键转变,它从不透明的 C++ 实现转向了灵活、可扩展的 C# 框架。SBP 旨在满足现代游戏开发日益增长的需求,通过改进增量处理和高效缓存机制显著提升了构建性能。它赋予开发者对内容构建过程前所未有的控制力,从而能够针对特定项目需求进行深度定制。尽管 SBP 是 Unity 推荐的 Addressables 系统的重要基础层,但理解其核心组件、构建流程和高级功能对于优化大型项目、简化 CI/C

m0_57771536的博客 2209

TCP/UDP协议特性以及TCP协议三次握手四次挥手

例如A向B传输数据完成向B发送断开连接的请求,B只能回复确认断开连接,但是此时不代表B也完成数据传输所以处于半连接状态,需要B向A发送断开连接请求,A返回确认断开连接才能完成断开连接。例如A向B发送请求连接时,B在回复确认连接时可以一起将B的请求连接发送给A,这样A只需要再回复一次确认连接就完成了建立连接。③PC2向PC1发送FIN报文和ACK报文,FIN=1、ACK=1、seq=z、ack=y+1(由于2次断开连接请求之间有等待时间,所以再次发送ACK确认报文,处于半连接状态,仍可传输数据)

Cloud034的博客 143

MicroBlaze系列教程(5):AXI_UART16550的使用

axi-uart16550是Xilinx的一款串口IP核,支持配置成16450或16550模式,16550和16450是指的早期电脑主板上的串口芯片型号,16550相比于16450多了FIFO,现在已经很少使用。相比于,16550支持1或2位停止位,包括uartlite所有的功能,而且支持在SDK中灵活对波特率、数据、校验方式进行配置。与uartlite不同的是,不能单独指定发送中断和接收中断函数,只有一个中断函数,通过event参数来区分当前是发送或接收中断。

whik1194的博客 4545

基于 FPGA 的 CNN 卷积神经网络之池化层 Verilog 实现

池化层是卷积神经网络(CNN)中的关键组件,用于降低特征图的维度,减少计算量和防止过拟合。常见的池化操作包括最大池化和平均池化。FPGA 提供了高效的并行处理能力,可以加速这些操作。池化层在 CNN 中扮演重要角色,通过降低数据维度提升计算效率。在 FPGA 上实现池化层,可以充分利用硬件资源实现高效的并行计算,有助于提高实时应用中的推理速度。

走向CTO的路上... 1256

TCP 三次握手 / 四次挥手详解

本文系统解析了TCP协议的三大状态阶段:连接建立(三次握手)、数据传输和连接释放(四次挥手)。在连接建立阶段,详细说明了LISTEN、SYN_SENT、SYN_RCVD和ESTABLISHED状态的含义及转换条件;数据传输阶段重点分析ESTABLISHED状态特性;连接释放阶段则区分主动/被动关闭方的状态流转,特别是TIME_WAIT状态的2MSL等待机制及其必要性(确保可靠终止连接和避免旧报文干扰)。文章还通过HTTP请求场景完整展示了TCP状态流转过程,并针对CLOSE_WAIT和TIME_WAIT异常

2302_78913144的博客 741

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

TCP/UDP协议特性及TCP三次握手四次挥手过程

②PC2收到后会回复SNY,ACK的报文给PC1,随机生成序列号y,并要求PC1下次回复ack=x+1的序号,此时报文SNY=1,ACK=1,seq=y,ack=x+1。③PC1收到PC2同意连接的报文后会回复ACK,并生成序列号=x+1,确认号ack=y+1,此时报文ACK=1,seq=x+1,ack=y+1。②PC2返回ACK报文表示收到请求,并进入半连接状态,防止有数据没有下载完毕,此时ACK=1、seq=y、ack=x+1。确认号(ack):表示接收方希望发送方下一次发送的数据的编号。

2301_79932912的博客 79

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

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

TCP的三次握手/四次挥手

作为例子,考虑计算机S和C之间的通信,假定C给S发送一个连接请求分组,S收到了这个分组,并发 送了确认应答分组。而关闭连接时,当Server收到Client发送的FIN报文时,仅仅表示Client不再发送数据给Server了但是还能接收来自Server的数据,而Server也未必降全部数据都发送给Client了,所以Server可以立即close,也可以发送一些数据给Client后,再发送FIN报文给Client来表示同意现在关闭连接,因此,Server ACK和FIN一般都会分开发送。

sre救赎之路 1234

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

TCP 三次握手/四次挥手

TCP 三次握手/四次挥手 八股

Sky_Lee_1的博客 1664

UDP/TCP介绍、TCP的三次握手四次挥手

关于UDP/TCP的学习在慕课网专栏《网络协议那些事儿》看到两篇文章,写的不错,在此处做个总结整理。 UDP协议 UDP/TCP协议是OSI七层网络模型中第四层传输层用到的协议,根据使用目的的不同,人们需要能分别达到以下两点要求: 传输简单快捷,但传输不可靠,有可能在传输过程中丢失数据报或者接收方没有正确接收数据(UDP)。 传输稳定可靠,每一次发送报文必须要求接收方对传输结果作出反馈,所以传输速度相对较慢(TCP)。 根据这两点要求,就有了现在的UDP/TCP协议。 先说说UDP协议,UDP(User

DaQiangZhuang的博客 853

【计算机网络】TCP/UDP基础(简洁版)三次握手、四次挥手

主要介绍TCP协议的三次握手、四次挥手,简要介绍UDP协议、TCP与UDP的异同点……

一只菟葵的博客 834

一个抓包案例分析 TCP 的三次握手/四次挥手

点击上方关注 “终端研发部”设为“星标”,和你一起掌握更多数据库知识本文将展示如何使用 tcpdump 抓包,以及如何用 tcpdump 和 wireshark 分析网络流量。文中的例子比较简单,适合作为入门参考。1 基础环境准备为方便大家跟着上手练习,本文将搭建一个容器环境。1.1 Pull Docker 镜像$sudodockerpullalpine:3.81...

这个时代,作为程序员可能要学习小程序 591
上一篇: 什么是Scrum?
下一篇: vs2008 vs2005共存,删除05发生的问题
UU_Yang
博客等级 码龄23年 926粉丝 213原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值