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

TCP协议的三次握手和四次挥手(面试)

三次握手

首先可以简单的回答:

      1、第一次握手:客户端给服务器发送一个 SYN 报文。

      2、第二次握手:服务器收到 SYN 报文之后,会应答一个 SYN+ACK 报文。

      3、第三次握手:客户端收到 SYN+ACK 报文之后,会回应一个 ACK 报文。

      4、服务器收到 ACK 报文之后,三次握手建立完成。 

也可以详细的介绍:

刚开始客户端处于 closed 的状态,服务端处于 listen 状态。然后
      1、第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN(c)。此时客户端处于 SYN_Send 状态。

      2、第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s),同时会把客户端的 ISN + 1 作为 ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_REVD 的状态。

      3、第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 establised 状态。

      4、服务器收到 ACK 报文之后,也处于 establised 状态,此时,双方以建立起了链接。

为什么只有三次握手才能确认双方的接受与发送能力是否正常

 这里先解释一下为啥只有三次握手才能确认双方的接受与发送能力是否正常,而两次却不可以:
          第一次握手:客户端发送网络包,服务端收到了。这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
          第二次握手:服务端发包,客户端收到了。这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。
          第三次握手:客户端发包,服务端收到了。这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。

      因此,需要三次握手才能确认双方的接收与发送能力是否正常。

三次握手的作用:

三次握手的作用也是有好多的,多记住几个,保证不亏。例如:
      1、确认双方的接受能力、发送能力是否正常。
      2、指定自己的初始化序列号,为后面的可靠传送做准备。
      3、如果是 https 协议的话,三次握手这个过程,还会进行数字证书的验证以及加密密钥的生成到。

为什么要进行三次握手?

当进行第一次握手,网络不好可能会堵塞,所以连接的请求并没有到达服务器端;
但是tcp连接有超时重传的机制,所以再一次发送请求,这时候服务器端接收到了你的请求,他也会返回一个请求给你,这是第二次握手;
但是这时候网络环境突然又好了起来,那个堵塞的请求到达了服务器端,服务器端又给你回了一个请求,但是你又不想给服务器发送请求,这时候服务器的资源会进行占用等待你的请求,为了不使服务器的资源继续占用,你又必须发送一个请求给服务器;
所以要进行3次握手

下面进行四次挥手介绍:

        当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送 到一个确切的地址。在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信。   

        这个全双工的通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止。

 

1、第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态。

2、第二次握手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态。

3、第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。

4、第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态

5、服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。

相关文章:

TCP协议的三次握手和四次挥手(面试)

三次握手 首先可以简单的回答: 1、第一次握手:客户端给服务器发送一个 SYN 报文。 2、第二次握手:服务器收到 SYN 报文之后,会应答一个 SYNACK 报文。 3、第三次握手:客户端收到 SYNACK 报文之后&#xf…...

css看见彩虹,吃定彩虹

css彩虹 .f111 {width: 200px;height: 200px;border-radius: 50%;box-shadow: 0 0 0 5px inset red, 0 0 0 10px inset orange, 0 0 0 15px inset yellow, 0 0 0 20px inset lime, 0 0 0 25px inset aqua, 0 0 0 30px inset blue, 0 0 0 35px inset magenta;clip-path: polygo…...

springboot在线教育平台-计算机毕业设计源码68562

摘要 在数字化时代,随着信息技术的飞速发展,在线教育已成为教育领域的重要趋势。为了满足广大学习者对于灵活、高效学习方式的需求,基于Spring Boot的在线教育平台应运而生。Spring Boot以其快速开发、简便部署以及良好的可扩展性&#xff0c…...

形态学图像处理

1 工具 1.1 灰度腐蚀和膨胀 当平坦结构元b的原点是(x,y)时,它在(x,y)处对图像f的灰度腐蚀定义为,图像f与b重合区域中的最小值。结构元b在位置(x,y)处对图像f的腐蚀写为: 类似地,当b的反射的原点是(x,y)时,平坦结构元…...

安泰电压放大器的选型方案是什么

电压放大器是一种常见的电路元件,广泛应用于各种电子设备中。在选择电压放大器的时候,我们需要考虑一系列因素,以确保选型方案能够满足实际需求。下面安泰电子将详细介绍电压放大器选型的主要考虑因素,包括应用需求、技术性能、成…...

ARMV8安全特性:Pointer Authentication

文章目录 前言一、Introduction二、Problem Definition三、Pointer Authentication3.1 Instructions3.2 Cryptography3.3 Key Management 四、Sample Use Cases4.1 Software Stack Protection4.2 Control Flow Integrity (CFI)4.3 Binding Pointers to Addresses 五、Security …...

MySQL和Redis更新一致性问题

1. 先更新数据库,再更新缓存 适用场景:适用于对数据一致性要求不是特别高,且缓存更新失败对 系统影响较小的场景。例如,某些非关键数据的缓存更新。 风险:如果缓存更新失败,会导致数据库和缓存数据不一致。…...

(19)夹钳(用于送货)

文章目录 前言 1 常见的抓手参数 2 参数说明 前言 Copter 支持许多不同的抓取器,这对送货应用和落瓶很有用。 按照下面的链接(或侧边栏),根据你的设置了解配置信息。 Electro Permanent Magnet v3 (EPMv3)Electro Permanent M…...

安装lap和cython_bbox失败了很多次!!!终于被我发现了!

先说 lap 试了很多种方式,pip install lap / conda install -c conda-forge lap … 全失败了后面发现 lap 不支持 python > 3.9 的版本使用 pip install lapx 成功! cython_bbox 更难了 一直提示缺少MicroSoft C 14.0 … 大家有需要自行下载&#x…...

异业联盟整合各大行业门店,共享资源

异业联盟系统是一种将不同行业的企业或商家整合在一起,通过资源共享、优势互补、合作推广等方式,实现共同发展和互利共赢的商业合作模式的数字化管理和运营系统。 其具有以下显著优势: 1.拓展客户群体:不同行业的企业联合起来&am…...

前端如何去看蓝湖

首先加入团队,在内容中我们可以看到点击图片,右边出现的图 包含了像素甚至有代码,我们可以参考这个代码。 那么在使用之前我们需要调整好像素,例如我们的像素宽为375,不用去管高,然后这个宽度我们可以去自…...

HTML+CSS+JS 实现3D风吹草动效果(B站视频)

效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>3D effect&…...

常用网络概念

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ☁️运维工程师的职责&#xff1a;监…...

图鸟UI框架在uni-app多端应用开发中的实践与应用

摘要&#xff1a; 随着移动互联网的蓬勃发展&#xff0c;跨平台应用开发已成为行业趋势。本文将探讨图鸟UI框架如何在uni-app开发环境下助力开发者高效构建多端应用&#xff0c;并通过具体案例展示其在实际项目中的应用效果。 一、引言 在移动应用开发领域&#xff0c;跨平台…...

特征值究竟体现了矩阵的什么特征?

特征值究竟体现了矩阵的什么特征&#xff1f; 简单来说就是x经过矩阵A映射后和自己平行 希尔伯特第一次提出eigenvalue,这里的eigen就是自己的。所以eigenvalue也称作本征值 特征值和特征向量刻画了矩阵变换空间的特征 对平面上的任意向量可以如法炮制&#xff0c;把他在特征…...

C语言-顺序表

&#x1f3af;引言 欢迎来到HanLop博客的C语言数据结构初阶系列。在这个系列中&#xff0c;我们将深入探讨各种基本的数据结构和算法&#xff0c;帮助您打下坚实的编程基础。本次我将为你讲解。顺序表&#xff08;也称为数组&#xff09;是一种线性表&#xff0c;因其简单易用…...

OpenCV漫水填充函数floodFill函数的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 功能描述 ffloodFill函数是OpenCV库中用于图像处理的一个功能&#xff0c;它用于填充与种子点颜色相近的连通区域。这个函数在很多场景下都非常有用&#x…...

redis内存分析

阿里云redis集群对key进行hash后保存在对应的后端节点&#xff0c;使每个节点的key数量大致相同&#xff0c;但是如果存在大key&#xff0c;就会导致单个节点内存用满&#xff0c;可以使用redis-rdb-tools 或rdr来对内存进行分析。 redis-rdb-tools redis-rdb-tools通过对dum…...

redis批量删除keys,用lua脚本。

文章目录 现象解决方法 现象 系统报错&#xff1a; misconf redis is configured to save ....后查看机器内存。 是内存满了&#xff0c;需要删除其中的key 解决方法 (1) 编写一个脚本&#xff0c;放在redis-cli.exe同一个目录 (2) 脚本内容如下&#xff1a; -- 使用Lua脚…...

Python-找客户软件

软件功能 请求代码&#xff1a; 填充表格&#xff1a; 可以search全国各个区县的所有企业信息&#xff0c;过滤手机号、查看是否续存/在业状态。方便找客户。 支持定-制-其他引-留-阮*件&#xff08;XHSS&#xff0c;DYY&#xff0c;KS&#xff0c;Bi-li*Bi-li&#xff09; V*…...

Dell R730服务器iDRAC远程安装操作系统的完整指南

1. Dell R730服务器iDRAC远程安装操作系统全流程 第一次接触iDRAC远程管理功能时&#xff0c;我完全被它的便捷性震惊了。想象一下&#xff0c;你躺在家里沙发上&#xff0c;用笔记本就能完成机房服务器的系统安装&#xff0c;这种体验简直不要太爽。Dell R730作为经典的2U机架…...

梓梦-外用制剂粒度分析仪在阿昔洛韦乳膏中的粒度测试应用

外用乳膏剂的质量直接关系到临床疗效与用药安全&#xff0c;其中粒度分布是核心质控指标之一&#xff0c;直接影响药物的透皮吸收效率、稳定性及刺激性。阿昔洛韦乳膏作为临床常用的抗病毒外用制剂&#xff0c;其粒度控制需严格遵循《中国药典》规范&#xff0c;药典明确规定&a…...

Mac小白必看:OpenClaw汉化版安装与Qwen3.5-9B快速接入

Mac小白必看&#xff1a;OpenClaw汉化版安装与Qwen3.5-9B快速接入 1. 为什么选择OpenClaw汉化版&#xff1f; 作为一个长期在Mac上折腾各种开发工具的老用户&#xff0c;我最近被OpenClaw这个"能像人类一样操作电脑"的AI智能体框架深深吸引。但官方英文文档和复杂的…...

(28)UE 里在树视图等里点击条目,会触发三个事件,先是 entry里的用户列表接口里的事件,再是树视图里的事件

&#xff08;51&#xff09;&#xff08;52&#xff09; 谢谢...

新手入门:借助快马平台轻松理解并解决战网更新睡眠问题

新手入门&#xff1a;借助快马平台轻松理解并解决战网更新睡眠问题 作为一个刚接触游戏客户端维护的新手&#xff0c;遇到战网更新服务进入睡眠模式的问题时&#xff0c;往往会感到无从下手。最近我在使用InsCode(快马)平台时&#xff0c;发现它可以帮助我们快速理解并解决这类…...

数据科学好帮手:OpenClaw+千问3.5-35B-A3B-FP8自动化报表分析与可视化

数据科学好帮手&#xff1a;OpenClaw千问3.5-35B-A3B-FP8自动化报表分析与可视化 1. 为什么需要自动化数据分析 作为一名经常与数据打交道的分析师&#xff0c;我每天要处理大量重复性工作&#xff1a;清洗CSV文件、检查异常值、生成趋势图表、编写分析报告。这些工作占用了7…...

Formbricks v3.5.0发布:移动端体验革命与缓存性能倍增

Formbricks v3.5.0发布&#xff1a;移动端体验革命与缓存性能倍增 【免费下载链接】formbricks Open Source Qualtrics Alternative 项目地址: https://gitcode.com/GitHub_Trending/fo/formbricks Formbricks作为一款开源的Qualtrics替代方案&#xff0c;在v3.5.0版本中…...

教育资源数字化转型:tchMaterial-parser电子课本获取工具深度解析

教育资源数字化转型&#xff1a;tchMaterial-parser电子课本获取工具深度解析 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具&#xff0c;帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载&#xff0c;让您更方便地获取课本内容。…...

JTCalendar高级功能探索:水平与垂直布局的完整实现指南

JTCalendar高级功能探索&#xff1a;水平与垂直布局的完整实现指南 【免费下载链接】JTCalendar A customizable calendar view for iOS. 项目地址: https://gitcode.com/gh_mirrors/jt/JTCalendar JTCalendar是一款功能强大的iOS自定义日历视图库&#xff0c;提供灵活的…...

城通网盘终极下载加速指南:三步解锁高速通道的完整教程

城通网盘终极下载加速指南&#xff1a;三步解锁高速通道的完整教程 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘下载速度慢如蜗牛而烦恼吗&#xff1f;每天都有无数用户因为城通网盘的…...