飞天使-linux操作的一些技巧与知识点2-TCP的三次握手以及四次挥手以及转换状态

文章目录

        • TCP 的三次握手
        • 四次挥手
        • 转换状态

TCP 的三次握手
第一次,客户端与服务端建立链接,需要发送请求连接的消息
第二次,服务端接口到数据后,返回一个确认的操作*(至此客户端和服务端链路建立成功)
第三次,服务端还需要发送要与客户端建立链接的请求
第四次,客户端收到数据后,返回一个确认的操作(至此服务端到客户端的链路建立成功)
由于建立链接时没有数据传输,所以第二次确认和第三次请求可以合并为一次发送tcp协议为了实现可靠传输,通信双方需要判断自己已经发送的数据包是否都被接收方收到,如果没有收到,就需要重新发送,为了实现这个需求,就引出 序号 seq ,和确认号 ack的使用

在这里插入图片描述
在这里插入图片描述

四次挥手
第一次挥手: 客户端(服务端也可以主动断开) 向服务端说明想要关闭连接 
第二次挥手:  服务端会回复确认,但不是关闭,因为此时服务端可能还有数据在传输中
第三次挥手:待到服务端数据传输都结束后,服务端向客户端发出消息,我要断开连接了
第四次挥手,客户端收到服务端的断开信息后,给予确认,服务端收到确认后正式关闭1 代表客户端 2代表服务端1 -> 2 
FIN=1
2 -> 1 
ACK =1
FIN =1 
1 -> 2
ACK =1 
转换状态
三次握手状态转换
1.客户端发送syn包向服务端请求建立TCP 连接,客户端进入 SYN_SEND 状态
2.服务端收到请求之后,向客户端发送 SYN+ACK 的合成包,同时自身进入 SYN_RECV 状态
3.客户端收到回复之后,发送 ACK信息,自身进入 ESTABLISHED 状态
4.服务端收到ACK数据之后,进入 ESTABLISHED状态 四次挥手过状态转换
1.客户端发送完数据之后,向服务器请求断开连接,自身进入 FIN_WAIT_1 状态
2.服务端收到 FIN 包之后,回复ACK包表示已经收到,但是此时服务端可能还有数据没有发送完成,自身进入CLOSE_WAIT 状态,表示对方已发送完成且请求关闭连接,自身发送完成之后可以关闭连接
3.服务端数据发送完成之后,发送FIN包给客户端,自身进入LAST_ACK 状态,等待客户端 ACK确认
4,客户端收到FIN 包之后,回复一个ACK包,并进入TIME_WAIT 状态如果机器 TIME_WAIT 过多,会造成端口耗尽,可以修改内核参数
tcp_tw_recycle=1 端口重用

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

如何利用宝塔面板和docker快速部署网站

当你有了一台服务器,就会折腾往这台服务器上部署各种好玩的网站。市面上有许多开源的网站项目,通过docker技术可以快速部署并使用,本文将以部署filebrowser举例介绍网站部署的基本流程。 1. 安装宝塔面板 宝塔面板是一款开源的网站运维工具…

部署Kubernetes(k8s)集群,可视化部署kuboard

所需机器 主机名地址角色配置k8s-master192.168.231.134主节点2核4G,centos7k8s-node1192.168.231.135工作节点2核4G,centos7k8s-node2192.168.231.136工作节点2核4G,centos7 主节点CPU核数必须是 ≥2核且内存要求必须≥2G,否则k8s无法启动 1. 集群环境部署【三台…

【JVM从入门到实战】(四)类的生命周期

什么是类的生命周期 类的生命周期描述了一个类加载、连接、初始化、使用、卸载的整个过程 一个类完整的生命周期如下: 加载阶段 加载阶段第一步是类加载器根据类的全限定名通过不同的渠道以二进制流的方式获取字节码信息。 程序员可以使用Java代码拓展的不同的渠道…

java开发的智能聊天机器人_超级AI_支持自动绘画功能

支持Web、Android、IOS、H5等多终端应用。它使用OpenAI的ChatGPT模型实现智能聊天机器人,并支持绘图自动生成Vincent图。未来还将接入国内大型AI模型,如文心一言、统一千问、MOSS等模型,并不断更新以满足用户需求。 AI大脑软件中的AI绘画功能…

HuggingFists-低代码玩转LLM RAG(2) --Query

继上一篇文章我们探讨了如何使用HuggingFists实现文本的Embedding后。这一次我们将介绍如何使用HuggingFists实现LLM RAG的查询部分。 首先我们回顾一下RAG的结构,如下图: 基于向量数据库的RAG结构图 我们在上篇文章中介绍了如何使用HuggingFists实现结构…

GNN 学习笔记

稍微看一下之后备用。 【图神经网络综述】GNN原理+落地应用实现框架全解_gnn实现-CSDN博客 GNN相比CNN最大的区别在于数据结构,CNN一般作用在二维、三维数据里,如图像、表格数据等,可以进行卷积操作。而GNN作用在一个由节点和边…

PaddleSpeech的TTSAndroid编译armv7版本

1.下载docker镜像 docker pull paddlepaddle/paddle-lite:2.0.0_beta2.克隆代码 git clone https://github.com/PaddlePaddle/Paddle-Lite.git3.运行容器 docker run -it --name paddlelite_docker -v $PWD/Paddle-Lite:/Paddle-Lite --nethost paddlepaddle/paddle-lite …

ISP去噪(1)

#灵感# 因为理解的2DNR、3DNR 和当前调试平台标注的2DNR、3DNR 作用有很大差异,所以在网上广撒网,搜集知识。 目前收集出来一个这样的文章,有点像大学生的论文“取其精华,合成糟粕”。------权当一个记录册 目录 运动阈值&…

【华为鸿蒙系统学习】- HarmonyOS4.0开发工具和环境配置问题总结|自学篇

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 官方链接 HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 安装教程 (…

[GFCTF 2021]文件查看器

文章目录 前置知识可调用对象数组对方法的调用GC回收机制phar修改签名 解题步骤 前置知识 可调用对象数组对方法的调用 我们先来看下面源码 <?phperror_reporting(0);class User{public $username;public $password;public function check(){if($this->username"…

flutter的ListView和SingleChildScrollView有什么区别?他们的使用场景有什么不一样?

文章目录 简介ListViewSingleChildScrollView使用场景的不同 简介 ListView和SingleChildScrollView都是在Flutter中用于处理滚动内容的组件&#xff0c;但它们有一些关键的区别。 ListView 多个子元素&#xff1a; ListView是一个滚动的可滚动组件&#xff0c;通常用于包含多…

接口管理——Swagger

Swagger是一个用于设计、构建和文档化API的工具集。它包括一系列工具&#xff0c;如Swagger Editor&#xff08;用于编辑Swagger规范&#xff09;、Swagger UI&#xff08;用于可视化API文档&#xff09;和Swagger Codegen&#xff08;用于根据API定义生成客户端库、server stu…

Web安全之XXE漏洞原理及实践学习

一、原理&#xff1a; XXE漏洞全称即XML外部实体注入漏洞。 攻击者强制XML解析器去访问攻击者指定的资源内容(可能是系统上本地文件亦或是远程系统上的文件)&#xff0c;导致可加载恶意外部文件&#xff0c;利用file协议造成文件读取、命令执行、内网端口扫描、攻击内网网站等…

OCRmyPDF让你能搜索扫描版PDF文档

什么是 OCRmyPDF &#xff1f; PDF 是存储和交换扫描文档的最佳格式。不幸的是&#xff0c;PDF 可能很难修改。OCRmyPDF 是一个 Python 应用程序和库&#xff0c;可以轻松地将图像处理和 OCR&#xff08;可识别、可搜索的文本&#xff09;应用于现有 PDF&#xff0c;通过向扫描…

奥比中光 Femto Bolt相机ROS配置

机械臂手眼标定详解 作者&#xff1a; Herman Ye Auromix 测试环境&#xff1a; Ubuntu20.04/22.04 、ROS1 Noetic/ROS2 Humble、X86 PC/Jetson Orin、Kinect DK/Femto Bolt 更新日期&#xff1a; 2023/12/12 注1&#xff1a; Auromix 是一个机器人爱好者开源组织。 注2&#…

环境安全之配置管理及配置安全设置指导

一、前言 IT运维过程中&#xff0c;配置的变更和管理是一件非常重要且必要的事&#xff0c;除了一般宏观层面的配置管理&#xff0c;还有应用配置参数的配置优化&#xff0c;本文手机整理常用应用组件配置项配置&#xff0c;尤其安全层面&#xff0c;以提供安全加固指导实践。…

Apache Kafka JNDI注入注入漏洞(CVE-2023-25194)

基于Vulhub搭建的环境 一、漏洞概述 Apache Kafka是一个开源分布式消息队列&#xff0c;Kafka clients是相对应的Java客户端。 在版本3.3.2及以前&#xff0c;Apache Kafka clients中存在一处JNDI注入漏洞。如果攻击者在连接的时候可以控制属性的值为&#xff0c;则可以发起…

Redis与MySQL双写一致性如何保证?

前言 四月份的时候&#xff0c;有位好朋友去美团面试。他说&#xff0c;被问到Redis与MySQL双写一致性如何保证&#xff1f;这道题其实就是在问缓存和数据库在双写场景下&#xff0c;一致性是如何保证的&#xff1f;本文将跟大家一起来探讨如何回答这个问题。 谈谈一致性 一致…

如何使用内网穿透实现iStoreOS软路由R4S公网远程访问局域网电脑桌面

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 简介一、配置远程桌面公网地址二、家中使用永久固定地址…

vue.js纯前端处理如何将后台返回来的csv数据导出成csv文件

需要实现一个下载csv文件的功能&#xff0c;但后台没有对这个下载文件进行处理&#xff0c;而是将csv数据传给前台而已&#xff0c;需要前台做一下处理。 这是按钮的代码&#xff1a; <a> <el-button size"mini" class"custom-confirm" click&quo…