当前位置: 首页 > news >正文

八股训练营第 8 天 | TCP连接三次握手的过程?TCP连接四次挥手的过程?HTTP的Keep-Alive是什么?

TCP 连接三次握手的过程,为什么是三次,可以是两次或者更多吗?

三次握手过程

  1. 客户端向服务器发送一个 SYN 报文,表示想建立连接,之后客户端进入 SYN_SENT 状态。
  2. 服务器收到客户端的 SYN 报文后,会发一个 SYN+ACK 报文给客户端,表示收到客户端的建立连接请求,希望客户端的回复。之后服务器进入 SYN_RCVD 状态。
  3. 客户端收到服务器的 SYN+ACK 报文后,会发一个最终确认 ACK 报文给服务器。之后客户端和服务器都进入 ESTABLISHED 状态。连接建立成功。

为什么是三次

只有三次握手,才能让 TCP 知道客户端和服务器的发送和接收能力正常。

  • 第一次握手让服务器知道客户端发送能力正常。
  • 第二次握手让客户端知道服务器接收和发送能力正常。
  • 第三次握手让服务器知道客户端接收能力正常

如果只有两次握手,当有一个网络延迟的 SYN 包到服务器,服务器会以为客户端发起了一个新的连接。而客户端只发起了一个连接。这会导致客户端和服务器的状态不一致。如果改成三次握手,服务器收不到客户端对第二个 SYN 包的确认,就知道客户端只发起一个连接了。

总而言之是为了在不可靠的信道中建立可靠的连接。

TCP 连接四次挥手的过程,为什么是四次?

四次挥手过程

  1. 客户端向服务器发送一个 FIN 包,表示希望断开连接。之后客户端进入 FIN-WAIT-1 状态。
  2. 服务器收到客户端的 FIN 包后,会发送一个 ACK 包。之后服务器会进入 CLOSE-WAIT 状态,客户端会进入 FIN-WAIT-2 状态。这时服务器可以继续发送还未发完的数据。
  3. 服务器发完所有数据后,向客户端发送 FIN 包,之后进入 LAST-ACK 状态。
  4. 客户端收到服务器的 FIN 包后,发送最终的 ACK 包,进入 TIME-WAIT 状态,在等待 2MSL (最大报文生存时间(Maximum Segment Lifetime))时间后彻底关闭连接。

为什么是四次

TCP 是全双工通信,任意一方都可以向另一方发送数据。每两次挥手可以断开一方对另一方的连接。

四次挥手是为了确保被动关闭方收到主动关闭方的 ACK 确认,如果这个 ACK 确认丢失,被动关闭方会重新发送 FIN 报文,主动关闭方收到 FIN 报文后会重发 ACK 报文。

HTTP 的 Keep-Alive 是什么?TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个东西吗?

HTTP 的 Keep-Alive 是在应用层实现的,是一种长连接。传统的短链接是基于这样的过程:TCP 建立连接 -> HTTP 请求资源 -> 响应资源 -> TCP 释放连接。这样一次 TCP 连接只能请求一次资源。会造成不必要的网络开销。而长连接可以一次 TCP 连接请求多次 HTTP 资源。

TCP 的 Keep-Alive 是 TCP 层(内核态)实现的,是一种保活机制。用于检测空闲的 TCP 连接。当一个 TCP 连接长时间没有传输数据后,TCP 的 Keep-Alive 会发送探测包检验该连接是否仍有效。

http://www.dtcms.com/a/572676.html

相关文章:

  • 【计算网络学习笔记】网络基础之网络协议栈
  • CyberSecEval 2
  • wordpress 两栏专业seo培训学校
  • 【浏览器CORS问题解决方案】SpringBoot+Vue3前后端全覆盖:浏览器跨域问题的多样化解决方案
  • 论述AI和人类的分工
  • 第四阶段C#通讯开发-6:Socket之UDP
  • 广州建设网站公司简介百度seo排名推广
  • 四自由度机械臂运动学与动力学分析
  • Spring Security 使用
  • Web3开发中的前端、后端与合约:角色定位与协作逻辑
  • 神经网络—— 人工神经网络
  • GroupNet:基于多尺度神经网络的交互推理轨迹预测
  • CANN 自定义算子实战:从智能门禁到工业质检,MindStudio 7.0 落地优化(时延 130ms + 漏检率 3%,代码可复现)
  • RecyclerView Item 点击 长按事件最佳实践(为什么长按要 return true?
  • 哪些软件可以做网站门户网站搭建方案
  • 【Java 开发日记】设计模式了解吗,知道什么是饿汉式和懒汉式吗?
  • HTTPDNS 并非是 DoH/DoT 中的一种
  • spring boot 请求分发器
  • 百度站长收录入口如何判断网站好坏
  • RVO和移动语义
  • 阻塞队列 BlockingQueue 全解析:从 ArrayBlockingQueue 到 LinkedBlockingQueue
  • Autoware.universe多点导航和避障绕障设置
  • 计网6.1 网络应用模型
  • YOLO系列算法学习:YOLOv8:系列又一力作
  • 自动化测试-YAML
  • UnityGLTF 材质创建与赋值流程
  • 专业英文网站建设外贸业务怎么利用网站开发客户
  • 泰州网站建设策划做棋牌网站合法
  • uniapp开发ai对话app,使用百度语音识别用户输入内容并展示到页面上
  • 【XR技术介绍】Inside-Out Tracking:为何成为主流?核心技术:视觉SLAM原理通俗解读