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

三次握手+四次挥手

      • 写在前面
      • 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.mzph.cn/news/624240.shtml

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

相关文章

【MATLAB】tvf_emd_LSTM神经网络时序预测算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 TVF-EMD-LSTM神经网络时序预测算法是一种结合了变分模态分解(Variational Mode Decomposition,VMD)、经验模态分解(Empirical Mode Decompo…

【Python】Pyside2 可视化实现:每秒复制源文件一行到目标文件并打印日志

背景: 博主在某个项目中,需要模拟每秒钟生成一行数据,所以有了该博客的想法,其中有线程的内容,为了防止主界面卡住 效果: 代码: import sys import threading import timeimport openpyxl im…

安泰高压功率放大器在半导体测试中的应用

高压功率放大器在半导体测试中扮演着重要的角色。半导体测试是指对半导体器件进行各种电性能参数测试和质量检测的过程。以下是关于高压功率放大器在半导体测试中的应用的详细介绍。 一、高压信号发生器: 在半导体测试中,需要模拟高压环境下的工作条件以…

如何统一给文件夹名加后缀?这个方法教你一键搞定

随着计算机的普及,我们每天都会处理大量的文件和文件夹。有时候,为了更好地管理和分类文件,我们会给文件夹统一加上后缀。给文件加上后缀后最直接的好处就是方便文件管理。当我们给文件夹加上后缀时,我们可以很容易地根据后缀来判…

new mars3d.graphic.PolygonEntity({计算平面几何中心点及贴地效果展示

1.Mars3d提供了几何图形相关点位的计算方法polyutil: PolyUtil - V3.7.0 - Mars3D API文档 2.通过api可以算出相关经纬度坐标,实现相关中心点的展示 : 功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 3.相关实现代码: fu…

AI Agent:大模型的下一个高地

科技云报道原创。 当所有人都沉浸在与ChatGPT对话的乐趣中,一场静水流深的变革已然启动。 2023年11月,比尔盖茨发表了一篇文章,他表示,AI Agent将是大模型之后的下一个平台,不仅改变每个人与计算机互动的方式&#x…

九、Qt C++ 毕业设计 数据库相关

《一、QT的前世今生》 《二、QT下载、安装及问题解决(windows系统)》《三、Qt Creator使用》 ​​​ 《四、Qt 的第一个demo-CSDN博客》 《五、带登录窗体的demo》 《六、新建窗体时,几种窗体的区别》 《七、Qt 信号和槽》 《八、Qt C 毕业设计-CSDN博客》 …

如何使用Lychee结合内网穿透搭建私人图床网站并发布至公网远程访问

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站,可以看做是云存储的一部分,既可…

一键批量翻译日语文件名至中文,轻松管理你的文件库!

你是否曾经因为日语文件名的困扰而感到头疼?随着中日交流的日益频繁,我们经常需要在中文环境下处理日语文件。为了更好地管理和使用这些文件,将日语文件名翻译成中文变得尤为重要。现在,有了我们的批量文件名翻译工具,…

PLM项目管理系统是什么? PLM项目管理系统的优势

PLM项目管理系统是什么 PLM,全称Product Lifecycle Management,即产品生命周期管理。它就像一个大管家,帮助企业打理产品研发的各种数据和流程,它是一个工具,一个强大的工具,让企业可以统一管理产品研发数…

Transformer原理与代码实现

Transformer原理与代码实现 概览 一、嵌入层 Embedding 二、位置编码 Positional Encoding 三、(整合)Transformer嵌入层 Transformer Embedding 四、带缩放的点积注意力机制 Scaled Dot-Product Attention 五、多头注意力 Multi-Head Attention 六…

ThingsPanel部署和使用

前置条件: 首先默认大家有一台服务器或者云服务器并且已经搭建好环境。小编是基于Linux宝塔环境以Docker安装ThingsPanel平台。 一.Docker和Docker-compose 1.概述 Docker是一个开源的容器化平台,它可以帮助开发者将应用程序与其依赖项打包到一个轻量…

keycloak部署

https://downloads.jboss.org/keycloak/11.0.2/keycloak-11.0.2.zip 1.上传zip 并解压 uzip keycloak-11.0.2.zip 2.创建mysql数据库 CREATE SCHEMA keycloak DEFAULT CHARACTER SET utf8 ; 3.安装mysql的jdbc驱动 下载mysql的JDBC驱动(mysql-connector-java-8…

springboot设置统一响应头——无效?接口无响应?

背景 对接一个关联方系统,我这边需要提供几个接口。对方要求,这些接口有统一的响应格式,并且有统一的响应头。统一的响应头包含如下: {"TT-Encrypt":"noaction","Content-Encoding":"gzip&q…

【已解决】c++如何打印变量的类型

本博文源于笔者正在编写的c代码,在c/c中我们经常用auto去接一个变量,这样我们既可以不用知道变量或函数结果的类型,就可以轻松愉快编码,如果想要知道变量的类型呢?那就需要这样一个函数。 问题再现 想要用函数去打印…

C++- VS2022-创建ATL 有QT库的工程

1.创建带QT库的ATL工程 创建 ATL COM 项目:在 Visual Studio 2022 中,选择 "文件" -> "新建" -> "项目",然后在 "创建新项目" 对话框中选择 "Visual C" -> "ATL" 类别…

【网络安全】【密码学】【北京航空航天大学】实验三、数论基础(下)【C语言实现】

实验三、数论基础(下) 一、实验内容 1、中国剩余定理(Chinese Remainder Theorem) (1)、算法原理 m1, m2, … mk 是一组两两互素的正整数,且 M m1 m2 … mk 为它们的乘积, 则如下的同余…

9.1、加密技术原理详解

目录 一、加解密定义 二、加密技术分类 2.1、对称加密 2.2、非对称加密 三、对称加密算法 四、非对称加密算法 五、对称加密和非对称加密比较 六、对称加密和非对称加密结合 一、加解密定义 数据加密:对原来为明文的文件或数据按某种算法进行处理&#x…

MK-米客方德TF卡和SD卡的区别

TF卡和SD卡的区别 TF卡也叫MicroSD卡,以MK-米客方德的TF卡和SD卡为例,TF卡和SD卡的区别如下: 1、物理尺寸: TF卡:TF卡是一种较小尺寸的存储卡,也被称为MicroSD卡。其尺寸为15mm 11mm 1mm。 SD卡&#x…

odoo16 销售订单中数量与单价,手机录入不方便

odoo16 销售订单中数量与单价,手机录入不方便 在销售订单中,服装批发,数量与单价均是整数,系统默认的为保留两位小数的float类型,输入起来很不方便,如何修改 电脑版,输入时,自动选取…