【JAVA基础--计算机网络】--TCP三次握手+四次挥手

news2024/9/28 1:15:19

三次握手+四次挥手

      • 写在前面
      • 1. 三次握手
        • 1.1 作用: 为了在不可靠的信道上建立起可靠的连接;
        • 1.2 建立过程
        • 1.3 面试提问
      • 2. 四次挥手
        • 2.1 作用:为了在不可靠的网络信道中进行可靠的连接断开确认
        • 2.2 断开过程
        • 2.3 面试提问

写在前面

三次握手建立连接;四次挥手断开连接;

TCP协议里的标识:
SYNSynchronization(同步)
ACKAcknowledgment(确认)
FINFinish(结束)

1. 三次握手

1.1 作用: 为了在不可靠的信道上建立起可靠的连接;
1.2 建立过程

当客户端向服务端发起连接请求时候:

  1. 先发一包连接请求数据(SYN包)来询问能否与服务端建立连接,这包数据我们叫做SYN包:(想和你同步);
  2. 如果对端同意连接就会回复一包SYN+ACK包(确认同步);
  3. 客户端收到之后回复一包ACK包(确认)。

注:自己的序号用对方的确认号; 自己的确认号 用对方的序号+1
在这里插入图片描述

在这里插入图片描述

1.3 面试提问

问题1:为什么是三次握手而不是两次握手or四次握手
答:
目的:握手是为了确认双方的接收与发送能力是否正常

  • 第一次握手:客户端发送网络包,服务端收到了。这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的;

  • 第二次握手:服务端发包,客户端收到了。这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常;

  • 第三次握手:客户端发包,服务端收到了。这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常;

  • 如果是两次握手,服务端并不能确认客户端的接收能力是否正常;而且为了防止已经失效的请求报文,突然又传到服务器引起错误
  • 三次握手是两端建立连接的所需要的最小收发包的次数,所以四次握手就没有必要了

问题2:两次握手可能产生的问题?
答:假设采取两次握手,客户端向服务端发起一个报文SYN1,因为某些未知错误,并未到达服务器,在中间某个网络节点产生了滞留;而为了建立连接客户端会重新发送一个SYN包,我们称之为SYN2,这次正常送达服务端,并且回复SYN+ACK后建立连接;这时阻塞的网络节点突然恢复,把SYN1重新发给了服务端,服务端就会误认为是客户端发起了新的连接;

服务端认为是两个连接,客户端认为是一个连接,造成了状态不一致的问题;


2. 四次挥手

握手之后就建立连接­——连接建立好以后,客户端就可以发送http请求——然后服务端响应内容;

因为TCP协议是全双工的,所以两端都可以发送关闭请求;

2.1 作用:为了在不可靠的网络信道中进行可靠的连接断开确认
2.2 断开过程
  • 第一次挥手:客户端发送FIN+ACK(确认结束)
  • 第二次挥手:服务端回复ACK(确认)因为服务端可能还存在未发送完毕的数据所以还需要等待数据全部发送完以后回复确认结束,也就是第三次挥手;
  • 第三次挥手:服务端回复FIN+ACK(确认结束);
  • 第四次挥手:客户端回复ACK(确认);进入超时等待状态
    在这里插入图片描述
2.3 面试提问

问题1:为什么客户端在回复ACK包之后还需要等待超时时间?
答:
目的:为了在不可靠的网络信道中进行可靠的连接断开确认;

原因:因为如果客户端在发送完最后一包ACK包就释放了连接的话,一旦ACK包在网络中丢失,服务端就会一直停留在最后确认状态;若发送完最后一包ACK包,再等待一段时间,此时如果服务端没有收到ACK包,就会重发FIN包;客户端会响应这个FIN包,且重发ACK包,并刷新超时时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1379658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2.4G无线遥控器方案开发,稳定性强,可用于多种应用

2.4G遥控器是一种使用2.4GHz频段的无线遥控器,常用于遥控玩具、航模和家电等电子设备上。相比于传统的红外线遥控器,2.4G遥控器具有更强的穿透力和稳定性,可以在较远的距离内实现遥控操作,并且不会受到光线干扰。它由遥控器和接收…

【Leetcode】2182. 构造限制重复的字符串

文章目录 题目思路代码 题目 2182. 构造限制重复的字符串 问题:给你一个字符串 s 和一个整数 repeatLimit ,用 s 中的字符构造一个新字符串 repeatLimitedString ,使任何字母 连续 出现的次数都不超过 repeatLimit 次。你不必使用 s 中的全…

汽车专业翻译,如何选择好的翻译公司?

随着中国汽车市场的不断壮大和国际化的步伐加快,众多外国汽车品牌纷纷进军中国市场,与此同时,国内汽车企业也在积极拓展海外版图。在此背景下,汽车企业与国际客户、供应商和合作伙伴的交流日益频繁。因此,拥有一支专业…

个人的感悟观点,即将毕业的应届生的对自己未来方向的思考和认识

目录 复习历程思考 为什么我选择了考研 考完后我的状态 考完后我的做法 我对方向的看法(拙见) 复习历程思考 自我决定考研复习一刻开始。停更半年之久,甚至更长。没有分享自己的学习。在时常半年多的考研复习的过程中。我决定它带给我希…

传奇手游详细图文架设教程

开始架设 1. 架设条件 传世手游架设需要准备: linux 服务器,建议 CentOs 7.6 版本,游戏源码, 游戏运行大约占 2.5G 左右内存。 2. 安装宝塔及环境 宝塔是一个服务器运维管理软件,安装命令: yum inst…

步进电机相关知识 以及 TMC2660 步进电机驱动芯片驱动步进电机

步进电机相关知识 以及 TMC2660 步进电机驱动芯片驱动步进电机 前言一、步进电机基础知识1、电机常用概念2、步进电机小知识3、步进电机分类4、步进电机工作原理细分驱动步进电机 5、使用的步进电机型号以及相关参数 二、步进电机驱动芯片 TMC2660 和MCU端步进电机驱动芯片TMC2…

jenkins忘记admin密码

jenkins忘记admin密码,重置密码: 1.找打jenkins目录下面的config.xml [rootVM-0-15-centos .jenkins]# find ./* -name config.xml ./config.xml [rootVM-0-15-centos .jenkins]# pwd /root/.jenkins删除下面的这部分内容: [rootVM-0-15-c…

[足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-8 可观测性与分离原理

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-Advanced控制理论 Ch04-8 可观测性与分离原理

前端远原生js爬取数据的小案例

使用方法 注意分页的字段需要在代码里面定制化修改,根据你爬取的接口,他的业务规则改代码中的字段。比如我这里总条数叫total,人家的不一定。返回的数据我这里是data.rows,看看人家的是叫什么字段,改改代码。再比如我这…

Rust-语句和表达式

if-else Rust中if-else表达式的作用是实现条件分支。if-else表达式的构成方式为:以if关键字开头,后面跟上条件表达式,后续是结果语句块,最后是可选的else块。条件表达式的类型必须是bool。 if-else结构还可以当表达式使用 loop …

JavaScript-3

Web API 基本认知 作用和分类 作用:就是使用 JS 去操作 html 和 浏览器分类:DOM ( 文档对象模型 )、BOM ( 浏览器对象模型 ) DOM 是什么 DOM ( Document Object Model —— 文档对象模型 )它是用来呈现以及与任意 HTML 或 XML 文档交互的 API通俗的说…

数据分析求职-知识脑图

今天和大家聊聊数据分析求职常见面试题,这是这个系列的第一篇文章,但是我不想开始就直接罗列题目,因为这样的文章实在太多了,同学们的兴趣程度肯定一般。所以,我想先和大家聊聊在准备面试题时候通常遇到的困扰&#xf…

部署 LVS-DR 群集

本章内容: -了解LVS-DR群集的工作原理 -会构建LVS-DR负载均衡群集 2.1 LVS-DR 集群 LVS-DR ( Linux Virtual Server Director Server )工作模式,是生产环境中最常用的一 种工作模式。 2.1.1 . LVS-DR 工作原理 …

【C++】基础:STL字符串库string

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍STL字符串库string。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路&am…

【Maven】004-基于 IDEA 构建 Maven 工程

【Maven】004-基于 IDEA 构建 Maven 工程 文章目录 【Maven】004-基于 IDEA 构建 Maven 工程一、概述1、项目构建2、命令方式项目构建命令war 包打包插件和 jdk 版本不匹配 二、项目构建1、命令方式2、IDEA 可视化方式3、构建产物 一、概述 1、项目构建 项目构建是将软件开发…

数据结构初探:揭开数据结构奥秘

🌈个人主页:聆风吟 🔥系列专栏:数据结构、算法模板、汇编语言 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 数组结构起源二. 基本概念和术语2.1 数据2.2 数据元素2.3 数据项2.4 …

点的旋转变换

情形一(active or alibi transformation主动变换) 在坐标系 x − y x-y x−y中,点 p 1 p_1 p1​逆时针旋转 α \alpha α后到达点 p 2 p_2 p2​。 p 1 p_1 p1​在 x − y x-y x−y中的表示与 p 2 p_2 p2​在 x ′ − y ′ x-y x′−y′中的表…

C# Cad2016二次开发HelloWorld(一)

1 新建类库 二 引用 acdbmgd.dll、acmgd.dll、accoremgd.dll 三 HelloWorld代码 public class Class1{/// <summary>/// 程序入口标识/// </summary>[CommandMethod("HelloWorld")]public void HelloWorld(){Document adoc Autodesk.AutoCAD.Applicatio…

将WAP网站封装成App体验的全新策略

一、传统的App封装方式 传统的App封装技术通常依赖于WebView组件&#xff0c;将WAP内容嵌入到一个原生App框架中。这种方法虽然可以快速实现WAP到App的转换&#xff0c;但存在着明显的缺陷&#xff1a;首先&#xff0c;WebView的性能和用户体验都无法与原生组件相提并论&#x…

STM32H5培训(一)总览

文章目录 1. 前言2. STM32H5系列MCU的特点和新功能包括性能提升、新外设和安全功能等3. STM32H5系列型号之间的区别和关键资源对比4. 性能和功能亮点6. 开发生态参考&#xff1a; 1. 前言 本篇主要介绍STM32H5系列MCU的特点和新功能&#xff0c;包括全新的M33内核、250M主频处…