首页 > 其他分享 >三次握手中每一次没收到报文会发生什么情况?第二次握手传回了 ACK,为什么还要传回 SYN?第3次握手可以携带数据吗?

三次握手中每一次没收到报文会发生什么情况?第二次握手传回了 ACK,为什么还要传回 SYN?第3次握手可以携带数据吗?

时间:2023-10-14 10:02:15浏览次数:34  
标签:ACK 握手 SYN 传回 报文 服务端 客户端

三次握手中每一次没收到报文会发生什么情况?

第一次握手服务端未收到SYN报文

服务端不会进行任何的动作,而客户端由于一段时间内没有收到服务端发来的确认报文,等待一段时间后会重新发送SYN报文,如果仍然没有回应,会重复这个过程,直到发送次数超过最大重传次数限制,就会返回连接建立失败。

第二次握手客户端未收到服务端响应的ACK报文

客户端会继续重传,直到次数限制;而服务端此时会阻塞在accept()处,等待客户端发送ACK报文。

第三次握手服务端为收到客户端发送过来的ACK报文

服务端同样会采用类似客户端的超时重传机制,如果重试次数超过限制,则accept()调用返回-1,服务端建立连接失败;而此时客户端认为自己已经建立连接成功,因此开始向服务端发送数据,但是服务端的accept()系统调用已经返 回,此时不在监听状态,因此服务端接收到客户端发送来的数据时会发送RST报文给客户端,消除客户端单方面建立连接的状态。

第二次握手传回了 ACK,为什么还要传回 SYN?

ACK是为了告诉客户端传来的数据已经接收无误。

而传回SYN是为了告诉客户端,服务端响应的确实是客户端发送的报文。

第3次握手可以携带数据吗

第3次握手是可以携带数据的。

此时客户端已经处于ESTABLISHED状态。对于客户端来说,它已经建立连接成功,并且确认服务端的接收和发送能力是正常的。

第一次握手不能携带数据是出于安全的考虑,因为如果允许携带数据,工击者每次在SYN报文中携带大量数据,就会导致服务端消耗更多的时间和空间去处理这些报文,会造成CPU和内存的消耗。

标签:ACK,握手,SYN,传回,报文,服务端,客户端
From: https://blog.51cto.com/u_11344924/7859014

相关文章

  • 解密Prompt系列17. LLM对齐方案再升级 WizardLM & BackTranslation & SELF-ALIGN
    话接上文的指令微调的样本优化方案,上一章是通过多样性筛选和质量过滤,对样本量进行缩减,主打经济实惠。这一章是通过扩写,改写,以及回译等半监督样本挖掘方案对种子样本进行扩充,提高种子指令样本的多样性和复杂度,这里我们分别介绍Microsoft,Meta和IBM提出的三个方案。Microsoft:WizardL......
  • [USACO] Piggy Back
    [USACO]PiggyBack题目大概意思是一个无向图,Bessie从1号仓库走到n号(每次花费x),Elsie从2号仓库走到n号(每次花费y),如果两个人走同一条路花费z,求总花费最小。跑三遍最短路,别得到Bessie从1号仓库出发的最短路,Elsie从2号仓库出发的最短路,和从n出发到其他每......
  • 华为云Stack
    功能架构华为云Stack整体架构从功能上划分为基础设施、资源池、云服务、公共组件、管理域和应用域,如图3-1所示。图3-1 华为云Stack功能架构表3-1 华为云Stack功能分层描述功能分层功能描述基础设施基础设施包括构建数据中心所需的服务器、存储设备和网络设备。基础设施层可根据不......
  • JS加密/解密之webpack打包代码逆向
    Webpack是一个强大的打包工具,能够将多个文件打包成一个或多个最终的文件。然而,将已经经过打包的代码还原回原始源代码并不是一件直接的事情,因为webpack打包的过程通常会对代码进行压缩、混淆和优化,丢失了部分变量名和代码结构的信息。因此,完全还原打包前的源码可能并不现实。但......
  • pushback流的例子
    pushback流有PushbackInputStream和PushbackRead。 例子: publicclassSequenceCount{ publicstaticvoidmain(String[]args)throwsIOException{ PushbackInputStreamin=newPushbackInputStream(System.in); intmax=0; //longestsequencefound int......
  • Trying to backward through the graph a second time
    原因是把创建loss的语句loss_aux=torch.tensor(0.)放在循环体外了,可能的解释是第一次backward后把计算图删除,第二次backward就会找不到父节点,也就无法反向传播。参考:https://stackoverflow.com/questions/55268726/pytorch-why-does-preallocating-memory-cause-trying-to-backw......
  • tcache_stashing_unlink_attack
    tcachestashingunlinkattack实现的效果和unsortedbinattack有点相似,可以向任意地址写一个较大的数如果构造合理,还可以实现任意地址分配chunkmalloc.c:line3635if(in_smallbin_range(nb)){idx=smallbin_index(nb);bin=bin_at(av,idx);......
  • Openstack架构介绍
    一、Openstack介绍OpenStack是一系列开源工具(或开源项目)的组合,主要使用池化虚拟资源来构建和管理私有云及公共云。其中的六个项目主要负责处理核心云计算服务,包括计算、网络、存储、身份和镜像服务。还有另外十多个可选项目,用户可把它们捆绑打包,用来创建独特、可部署的云架构。二......
  • Android开发 Jetpack_Compose_7 文字
    前言此篇博客主要讲解Compose里的文字相关的UI功能。文本处理相关的内容与细节较多,此篇博客尽量涵盖完整,所以博客较长需要耐心看完。  官网文档:https://developer.android.google.cn/jetpack/compose/text?hl=zh-cnText文本全部参数这里列出全部参数,下面会一个一个举......
  • mysql 物理备份xtrabackup
    1.优缺点优点:a.备份过程快速可靠b.支持增量备份c.备份过程不会打断正在执行的事务d.能够基于压缩等功能节约磁盘和空间e.自动实现备份验证f.还原速度快缺点:a.只能对innodb表进行增备,myisam表备份是全备b.对myisam表进行备份时要对全库加readlock,阻塞写操作,若备份在从库上进行会......