三次握手的第三个ACK包丢了——客户端认为连接建立,写数据时,会触发RST_逆風的薔薇的博客-程序员宅基地_ack丢失

技术标签: Linux  网络编程  


上次面试被问到一个问题,在TCP建立连接的三次握手阶段,如果客户端发送的第三个ACK包丢了,那么客户端和服务器端分别进行什么处理?
听到问题,一下愣掉,有点傻了,根据读书时模模糊糊的印象,答了答,无疑打错了T...T

分析



当Client端收到Server的SYN+ACK应答后,其状态变为ESTABLISHED,并发送ACK包给Server;
 
如果此时ACK在网络中丢失,那么Server端该TCP连接的状态为SYN_RECV,并且依次等待3秒、6秒、12秒后重新发送SYN+ACK包,以便Client重新发送ACK包,以便Client重新发送ACK包。
           
Server重发SYN+ACK包的次数,可以通过设置/proc/sys/net/ipv4/tcp_synack_retries修改,默认值为5。
             
如果重发指定次数后,仍然未收到ACK应答,那么一段时间后,Server自动关闭这个连接。

但是Client认为这个连接已经建立,如果Client端向Server写数据,Server端将以RST包响应,方能感知到Server的错误。

这才是正解~~~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fly_yr/article/details/52563407

智能推荐

JVM异常诊断神器Greys实战 - 玩转JVM_chiqiao5151的博客-程序员宅基地

Greys是一个JVM进程执行过程中的异常诊断神器。 在不中断程序执行的情况下轻松完成JVM相关问题排查工作。目前Greys仅支持Linux/Unix/Mac上的Java6+,Windows暂时无法支持。 使用场景 例如打logger,开发环境一般有五种情况: 1、异常情况,打e...

android制作闹钟,android闹钟的制作_weixin_39942492的博客-程序员宅基地

首先获取闹钟管理者AlarmManager,通过button中的方法setAlarmOne()实现:1.获取当前Calendar系统时间2.弹出时间对话框//3.确定好选择的时间TimePickerDialog,(TimePickerDialog时间选择器)//4.设置闹钟//5.当之间一到Intent实现跳转,将执行的响应(intent.setAction(“com.example.g15083...

视频流媒体平台EasyNVR更新版本后切换页面显示异常问题排查_EasyNVR的博客-程序员宅基地

继我们的国标GB28181流媒体服务器改版之后,RTSP协议视频流媒体平台EasyNVR的新版界面也在加紧研发了,不久也即将和大家见面了。我经常说研发通常是一个试错的过程,总会有些问题存在,然后解决这些问题,从而慢慢成为一个完整的流媒体解决平台。我们在更新新版EasyNVR的时候,也同样遇到了一些问题。本文我们就来讲一下在更新新版流媒体平台EasyNVR的时候,发现页面各模版之间切换页面会紊乱错位的问题。此处偶尔出现错位,但刷新之后就好了。在进行代码排查之后,我们发现是项目引入的组件库过

第4章    EPC编码_军神锌的博客-程序员宅基地_epc编码

第四章          EPC编码 1.EPC的目的是提供对物理世界对象的唯一标识。         唯一标识意味着:必须有足够的EPC编码满足物体标识的需要;         解决编码冲突。2.EPC编码是由标头、厂商识别代码(EPC管理者)、对象分类代码、序列号等数据字段组成的一组数字。3.EPC编码分为EPC-64 I型、II型、III型和EPC-96 I型等(其...

假设错误检测_sssdffa的博客-程序员宅基地

看到这里的潜在问题?程序员认为用户会输入一个值,0和长度之间的“你好,世界!“。如果用户输入一个负数,或大量的数组索引,索引会出界。在这种情况下,因为我们只是读值,程序会打印一个垃圾信。但在其他情况下,程序可能会损坏其他变量,堆栈,或崩溃。防御性编程是一种形式的程序设计,包括试图找出其中的假设可能被侵犯,并编写代码检测和处理任何违反这些假设使计划的反应,在可预见的方式时,这些行为会发生。

关联规则(频繁项集)——Apriori_坚持到底cw的博客-程序员宅基地

1.该问题最初是对“购物篮”提出来的,著名例子是“尿布与啤酒”。2.相关概念: 关联规则的支持度:Support(A,B)=包含A和B的事务数/事务总数 关联规则的置信度:Confidence(A,B)= 包含A和B的事务数/包含A事务数 频繁项集:项集的频率大于等于最小支持度。 强相关规则:同时满足最小支持度和最小置信度。3.关联规则挖掘的步骤: 生成频繁项集,然后生

随便推点

2021.9.9 process类 、Java反射、监控目录、JSONObject_小小怪大人物的博客-程序员宅基地

目录一、process类1.创建进程对象2.process方法二、Java反射1.Class类2.Constructor类3.field类4.Method类一、process类JAVA 中 process 类的使用Process是一个抽象类 封装了一个进程1.创建进程对象创建 process方法1:Process p = Runtime.getRuntime().exec(cmd);cmd 是字符串类型 也可以是字符串类型的数组 内容就是 ...

CSS 后台布局实例_weixin_33787529的博客-程序员宅基地

下面的例子是一个简单的布局最上面是header,左边是一个logo(老男孩),右边是用户的登录信息中间一大块是内容,内容左侧是菜单,右侧是具体的内容代码如下:body的margin为0,确保边上全部填满absolute 确保位置不变; 注意如果他的父级标签有relative,他相对于这个父级标签的位置不变,否则相对于body的位置...

【Unity】3D碰撞物体的设置_BuladeMian的博客-程序员宅基地

在Unity中,使用碰撞体是非常常见的,那么有的时候,碰撞体和刚体,加上了之后,进行碰撞就会反弹,甚至是被撞飞只有碰撞器(非触发状态),不添加刚体。就可以物体移动,并不撞墙反弹。如果要模拟重力状态,就使用代码进行模拟。

解决ubuntu每次sudo都要输入密码_kyle-fang的博客-程序员宅基地_sudo每次输入密码

如果没有设置root密码,先设置一下root账户密码:sudo passwd root为了避免每次sudo都要输入密码,这里配置一下visudo:sudo visudo在文件最后加上一句(改为自己的用户名):pengzhihui ALL=(ALL) NOPASSWD: ALL...

Android从相册中获取图片以及路径_wangyaqian1212的博客-程序员宅基地_android 获取相册图片路径

首先是相册图片的获取: private final String IMAGE_TYPE = "image/*";private final int IMAGE_CODE = 0;   //这里的IMAGE_CODE是自己任意定义的 //使用intent调用系统提供的相册功能,使用startActivityForResult是为了获取用户选择的图片 

推荐文章

热门文章

相关标签