一:三次握手

三次的握手的过程是:

1.由发起方HostA向被叫方HostB发出请求报文段,此时首部中的同步位SYN=1,同时选择一个序列号seq=x。TCP规定,SYN报文(即SYN=1的报文段)不能携带数据,但要消耗一个序列号。这时,TCP客户端进程进入SYN-SENT(同步已发送)状态。

2.HostB收到连接请求报文后,如同意建立连接,则向HostA发送确认。在确认报文段中应把SYN和ACK都置为1,确认号是ack=x+1,同时也为自己选择一个序列号seq=y。请注意这个报文段也不能携带任何数据,但同样要消耗一个序列号。这时TCP服务器进程进入SYN-REVD(同步收到)状态。

3.TCP客户端收到HostB的确认后,还要向HostB给出确认。确认报文段的ACK置1,确认号ack=y+1,而自己的序号seq=x+1。

此时SYN的值为0(待会从抓的报文中也可以看出)。TCP规定ACK的报文段可以携带数据。但如果不携带数据则不消耗序列号,在这种情况下,下一个数据报文段的序号仍是seq=x+1。整个过程如图所示。

三次握手第一步:

三次握手第二步:

三次握手第三步:

二:为什么要三次握手

书上、播客中找了好多三次握手的理由,但是解释都不是特别的清楚明白,问了身边搞网络工程师的同学,推荐了一本

《路由交换术》,这是同学参加华三公司考试时用的教科书,里面对三次握手的解释比较清楚。

三:四次分手

四次分手的过程是:

1.A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP连接A把连接释放报文段首部的FIN置1, 其序号seq = u , 它等于前面己传送过的数据的最后一个字节的序号加1,这时A进入FIN-WAIT- 1 (终止等待 1)状态 , 等待B的确认请注意 , TCP规定 , FIN报文段即使不携带数据 ,它也消耗掉一个序号

2.B收到连接释放报文段后即发出确认,确认号是ack=u + 1,而这个报文段自己的序号 是v, 等于B前面己传送过的数据的最后一个字节的序号加1然后B就进入CLOSE-WAIT( 关闭等待 )状态 。TCP服务器进程这时应通知高层应用进程,因而从A到B这个方向的连接就释放了,这时的TCP连接处于半关闭 ( half-close )状态 ,即A己经没有数据要发送了,但B若发送数据 , A仍要接收 。也就是说 ,从B到A这个方向的连接并未关闭。这个状态可能会持续一些时间。A收到来自B的确认后 ,就进入FIN-WAIT-2(终止等待2)状态, 等待B发出的连接释放报文段 。

3.若B已经没有要向A发送的数据,其应用进程就通知TCP释放连接。这时B发出的连接释放报文段必须使FIN = 1, 现假定B的序号为w(在半关闭状态B可能又发送了一些数据)。B还必须重复上次己发送过的确认号 ack= u+1,这时B就进入LAST-ACK(最后确认)状态,等待A的确认。

4.A在收到B的连接释放报文段后,必须对此发出确认。在确认报文段中把ACK置1, 确认号ack = w + 1, 而自己的序号是seq = u + 1(根据TCP标准,前面发送过的FIN报文段要消耗一个序号 )。然后进入到TIME-WAIT( 时间等待)状态。请注意,现在TCP连接 还没有释放掉。必须经过时间等待计时器(TIME-WAIT timer) 设置的时间2MSL后,A才进入到CLOSED状态。时间MSL叫做最长报文段寿命(Maxium Segment Lifetime)RFC793 建议设为2分钟。但这完全是从工程上来考虑,对于现在的网络 ,MSL = 2分钟可能太长了 一些。因此TCP允许不同的实现可根据具体情况使用更小的MSL值。因此,从A进入到TIME-WAIT状态后, 要经过4分钟才能进入到CLOSED状态,才能开始建立下一个新的连接。当A撤销相应的传输控制块TCB后, 就结束了这次的TCP连接。 整个过程如图所示。

四次分手第一步:

四次分手第二步:

四次分手第三步:

四次分手第四步:

四:客户端、服务端整个过程

客户端整个过程如图。

服务端整个过程如图。

转载于:https://www.cnblogs.com/FJuly/p/4772040.html

抓包分析TCP的三次握手和四次分手相关推荐

  1. Wireshark抓包分析TCP的三次握手

    一.TCP三次握手连接建立过程 Step1:客户端发送一个SYN数据包(SYN=1,Seq=X,ACK=0)给服务端,请求进行连接,这是第一次握手: Step2:服务端收到请求并且允许连接的话,就会发 ...

  2. 简析TCP的三次握手与四次分手【转】

    转自 简析TCP的三次握手与四次分手 | 果冻想 http://www.jellythink.com/archives/705 TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇 ...

  3. TCP的三次握手和四次分手过程详解

    TCP的三次握手和四次分手过程详解 我们知道TCP建立连接需要经过三次握手,而断开连接需要经过四次分手,那三次握手和四次分手分别做了什么和如何进行的呢?我们来分解一下: 三次握手 第一次握手:建立连接 ...

  4. 简析TCP的三次握手与四次分手原理

    简析TCP的三次握手与四次分手 TCP建立连接过程: 第一次握手:建立连接.客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x:然后,客户端进入SYN_SEND状态,等待服 ...

  5. wireshark抓包理解TCP的三次握手

    一.实验目的 通过wireshark抓包工具,抓取客户机访问FTP服务器的连接过程进一步理解TCP的三次握手 二.实验拓扑 三.实验步骤 1.根据拓扑图搭建实验环境. 2.在客户机上安装安装Wires ...

  6. 简析TCP的三次握手与四次分手

    转载自http://www.jellythink.com/archives/705 TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深 ...

  7. tcp wireshark 过滤syn_使用 WireShark 分析 TCP/IP 三次握手 和 四次挥手

    TCP 三次握手 示意图 Wireshark 抓包注意事项 为了演示一个TCP三次握手建立连接的过程,我们通过 Chrome 访问一个网页. 已知 HTTP 协议就是建立在TCP链接上的 通过 Cmd ...

  8. 使用 WireShark 分析 TCP/IP 三次握手和四次挥手

    目录 TCP包头分析 TCP三次握手 TCP四次挥手 TCP包头分析 注释: 端口号范围:0-65535 源端口号:是客户端进程随机生成的,一般是从50000开始的 目标端口号:一般是服务器固定的.如 ...

  9. TCP/IP三次握手和四次分手

    TCP/IP协议 一.说说TCP三次握手过程,如果两次握手会怎么样? A向B发送请求"建立请求" B向A发送请求"同意请求" A向B发送"确认收到你发 ...

最新文章

  1. samll note
  2. java微信开发bae_在百度BAE2.0 JAVA环境下搭建属于自己的微信公众平台接口
  3. 利用百度的词法分析区分数据
  4. javaweb上传文件_javaWeb中,如何通过CommonsFileUpload组件上传文件
  5. 在C++中调用DLL中的函数(2)
  6. 多线程的那点儿事(之数据同步)
  7. python中exit 的作用_Python退出命令-为什么要使用这么多?何时使用每个命令?
  8. php各版本下载地址
  9. 鸿蒙系统硬盘分区,硬盘分区2种格式
  10. 吉他扒谱该怎么做?分享一款超好用的扒谱工具!
  11. Chrome插件:OneNote Web Clipper 搜集和整合碎片信息的神器
  12. sha256算法_以太坊2.0将弃用Keccak256,而启用SHA256哈希算法?
  13. 介绍一种超大文件高速传输解决方案
  14. docker启动redis指定redis.conf参数
  15. 页面数据能够正常渲染,但控制台报错属性underfined
  16. 树莓派hc sr501 c语言,树莓派人体红外感应模块HC-SR501安装配置
  17. 勇立潮头,推动国产数据库产业崛起—“金兰生态 仓起辉煌·2020人大金仓生态大会暨新战略发布会”在京成功召开...
  18. ROS | launch启动文件的使用
  19. 序列java_java序列和反序列
  20. 十、PyQtgraph使用QtDesigner提升3D图形界面

热门文章

  1. NAPI模式--中断和轮询的折中以及一个负载均衡的问题
  2. exsi5.5安装过程中遇到的一个问题
  3. Windows 10企业批量部署实战之WDS安装
  4. 串结构练习——字符串匹配
  5. 物联网概念升级,万物互联来袭
  6. outlook 突然发信不正常
  7. 边缘计算 — 业务的需求特征
  8. Linux_SquidProxyServer代理服务器
  9. Java客户端访问HBase集群解决方案(优化)
  10. 【412天】跃迁之路——程序员高效学习方法论探索系列(实验阶段169-2018.03.24)...