面试题:

在 TCP 建立连接的三次握手连接阶段,如果客户端发送的第三个ACK包丢了,那么客户端和服务端分别进行什么处理呢?

相信了解 tcp 协议的人,三次握手的过程肯定很了解了。第三次的 ack 包丢失就是说在 client 端接收到 syn + ack 之后,向 server 发送的 ack 包 由于各种原因 server 没有收到。这时 client, server 分别会进行怎样的处理呢?

Server 端

    第三次的ACK在网络中丢失,那么Server 端该TCP连接的状态为SYN_RECV,并且会根据 TCP的超时重传机制,会等待3秒、6秒、12秒后重新发送SYN+ACK包,以便Client重新发送ACK包。

而Server重发SYN+ACK包的次数,可以通过设置/proc/sys/net/ipv4/tcp_synack_retries修改,默认值为5.

如果重发指定次数之后,仍然未收到 client 的ACK应答,那么一段时间后,Server自动关闭这个连接。

Client 端

在linux c 中,client 一般是通过 connect() 函数来连接服务器的,而connect()是在 TCP的三次握手的第二次握手完成后就成功返回值。也就是说 client 在接收到 SYN+ACK包,它的TCP连接状态就为 established (已连接),表示该连接已经建立。那么如果 第三次握手中的ACK包丢失的情况下,Client 向 server端发送数据,Server端将以 RST包响应,方能感知到Server的错误。

    


TCP三次握手的第三次的 ack包丢失会怎样?相关推荐

  1. 【1】TCP三次握手的第三次的 ack包丢失会怎样?

    面试题: 在 TCP 建立连接的三次握手连接阶段,如果客户端发送的第三个ACK包丢了,那么客户端和服务端分别进行什么处理呢? 相信了解 tcp 协议的人,三次握手的过程肯定很了解了.第三次的 ack ...

  2. mysql三次握手_TCP的三次握手和四次挥手详解

    TCP的概述 TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字. 例如,若IP地址为192.3.4.16 ...

  3. 三次握手的第三个ACK包丢了,会发生什么?

    转载自三次握手的第三个ACK包丢了,TCP的处理方式 三次握手的第三个ACK包丢了,客户端认为连接建立,写数据时,会触发RST. 当Client端收到Server的SYN+ACK应答后,其状态变为ES ...

  4. 淘宝二面,面试官居然把TCP三次握手问的这么详细

    TCP 的三次握手和四次挥手,可以说是老生常谈的经典问题了,通常也作为各大公司常见的面试考题,具有一定的水平区分度.看似是简单的面试问题,如果你的回答不符合面试官期待的水准,有可能就直接凉凉了. 本文 ...

  5. Android Studio --- [学习笔记]RadioButton、CheckBox、ImageView、ListView、TCP的三次握手

    说明 源代码 在2.x里有TCP的三次挥手与四次握手,先对它进行简单的回答(百度).预计在下一篇里,会继续说明TCP 接上一篇: Android Studio - > [学习笔记]Button. ...

  6. TCP连接——三次握手和四次断开

    1.面向连接 TCP是一个面向连接的协议,面向连接是指任何一方向对方发送数据前必须先建立通道,比如像打电话一样:必须要等到对方的手机响铃,并且对方接听电话时,才能与对方通信.而UDP则不是面向连接的协 ...

  7. tcp状态机-三次握手-四次挥手以及常见面试题

    TCP状态机介绍 在网络协议栈中,目前只有TCP提供了一种面向连接的可靠性数据传输.而可靠性,无非就是保证,我发给你的,你一定要收到.确保中间的通信过程中,不会丢失数据和乱序.在TCP保证可靠性数据传 ...

  8. 计算机网络 —— TCP的三次握手四次挥手

    TCP的6个标志位 SYN -- synchronous :建立联机. ACK -- acknowledgement :确认. PSH -- push :传输. FIN -- finish :结束. ...

  9. TCP三次握手和四次挥手的解释

    基础知识 在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段. 它们的含义是: SYN ...

最新文章

  1. Android m 自定义下拉菜单,Android实现动画效果的自定义下拉菜单功能
  2. 程序员职场:拥有一个学位将会在你的职业生涯中更加顺利!
  3. JavaScript玩转机器学习:保存并加载 tf.Model
  4. python散点图解_python 画三维图像 曲面图和散点图的示例
  5. Swiper插件的基本使用方法和案例
  6. angular要多久学会_成为优秀Angular开发者所需要学习的19件事
  7. 动态时间归整/规整/弯曲(Dynamic time warping,DTW)
  8. 成为Oracle 10g DBA之路
  9. 云计算IaaS核心技术全景指南
  10. CMS系列远程代码执行—Discuz
  11. win10系统无线服务器出错,win10系统中Wi-Fi证书错误的解决方法
  12. html页面 关键字高亮,HTML高亮关键字的完美解决方案
  13. MATLAB读取xls文件的内容
  14. php抓取微信图片,PHP使用CURL采集微信图片(公众号)如何绕过防盗链系统?
  15. 怎样开好项目启动大会
  16. 基于Python(Django)+MongoDB实现的(Web)新闻采集和订阅系统【100010319】
  17. APNS部署教程2(证书配置)
  18. 3D图像重建中的颜色预测误差研究
  19. 特殊符号: 和 | | 和 ?? 和 ?作用详解
  20. C语言源代码系列-管理系统之会员计费系统

热门文章

  1. Marven:使用Maven构建Java项目
  2. Python async模块使用(杂文)
  3. 利用计算机解决问题过程中找出已知,用计算机解决问题的过程.ppt
  4. iOS创建浮动按钮,点击按钮“置顶”
  5. 大数据生态圈概要介绍
  6. 洛谷P1797 克鲁斯的加减法(纯暴力)
  7. UVM Object
  8. 利用Python做一个简单的对战小游戏
  9. MT6762芯片资料,MTK6762原理图下载
  10. 2022爱分析·低代码厂商全景报告