TCP三次握手/四次挥手

news2024/10/7 12:25:28
TCP三次握手/四次挥手

TCP的三次握手四次挥手实质就是TCP通信的连接和断开。

三次握手

  • 任何基于TCP的应用,在发送数据之前,都需要由TCP进行三次握手进行连接
握手流程:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oagl5gBn-1683529215901)(C:\Users\su\AppData\Roaming\Typora\typora-user-images\image-20230505160457734.png)]

三次握手原理

  • 第1次握手:客户端发送一个带有SYN(synchronize)标志的数据包给服务端
    • 详细:客户端发送建立连接的请求,请求中包含seq(序列号)和SYN,此seq是发送端随即生成。SYN字段为1标识需要建立TCP连接**(syn=1,seq=x,x为随机值)。**
  • 第2次握手:服务端接收成功后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了
    • 详细:服务端回复客户端的请求,回复的报文包含syn,seq,ack,此seq是回复端随机生成,syn置为1表示需要建立一个连接,并生成ack字段,ack的数值为seq+1,确认收到客户端发来的信息。(syn=1,seq=y,ack=x+1)。
  • 第3次握手:客户端再回传一个带有ACK标志的数据包,表示我知道了,握手结束
    • 客户端收到服务端发送的TCP建立验证请求后,会使自己的序列号加1表示,并且再次回复ACK验证请求,在服务端发过来的seq上加1进行回复。(SYN=1,ACK=y+1,seq=x+1)。
  • 其中:SYN标志位数置1,表示发起一个连接;ACK表示序列号有效,确认收到消息。

四次挥手

TCP连接是全双工,因此每个方向都必须单独进行关闭。只要一方发送完数据就能发送FIN来终止该方向的连接;收到一个FIN意味着该方向没有数据流动;先关闭的一方为执行主动关闭,而另一方执行被动关闭

四次挥手原理

  • 第1次挥手:客户端发送一个FIN,用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1状态
    • 客户端报文发送断开请求,请求中包含seq序列号、fin,fin为1表示需要断开tcp连接。(FIN=1,seq=x,x由客户端随机生成)
  • 第2次挥手:服务端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态
    • 服务端回复客户端的断开请求,回复的报文中包含ack、seq、fin,ack为ack+1确认收到客户端发来的信息,seq随机生成,fin置为1表需要断开连接**(FIN=1,ACK=x+1,seq=y,y由服务端随机生成)**
  • 第3次挥手:服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态
    • 服务端回复完客户端的断开请求后,不会马上进行TCCP连接的断开,会先确保断开前,所有传输的数据是否已经传输完毕,一旦确认传输完毕,会讲回复报文的fin置为1,并产生随机seq。(FIN=1,ACK=x+1,seq=z,z由服务端随机生成)
  • 第4次挥手:客户端收到FIN后,客户端t进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,服务端进入CLOSED状态,完成四次挥手
    • 客户端收到服务端的断开请求,回复服务端的断开请求,包含随机seq和ack,ack会在断开请求的seq基础+1,从而完成服务端请求的验证回复。(FIN=1,ACK=z+1,seq=h,h为客户端随机生成)
  • 其中:FIN标志位数置1,表示断开TCP连接。

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

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

相关文章

【蓝桥杯国赛真题26】Scratch队列练习 少儿编程scratch图形化编程 蓝桥杯省赛真题讲解

目录 scratch队列练习 一、题目要求 编程实现 二、案例分析 1、角色分析

2018年下半年软件设计师下午试题

试题四(15分) 给定一个字符序列Bb1b2….bn,其中bi∈{A,C,G,U}。B上的二级结构是一组字符对集合S{(bi,bj)},其中i,j∈{1,2,….,n},并满足以下四个条件: (1)S中的每对字符是(A,U),(U,A),(C,G)和…

【网络】-- IP协议

应用层(http、https): 数据的使用。传输层(UDP、TCP):网络通讯的细节,将数据可靠的从A主机跨网络送到B主机。网络层(IP):提供一种能力,将数据从A主…

如何让任何小程序都支持在windows系统中打开?

随着小程序的发展,出现了越来越多小程序在PC端打开的需求。很多程序员同行都想了解:小程序支持在windows系统、mac、统信UOS等桌面操作系统中打开吗? 答案当然是:可以! 本文就基于作者自身的经验,给大家介…

IPWorks SSH 2022.0.8505 C++ Edition Crack

IPWorks SSH 2022.0.8505 C Edition 轻松将安全外壳 (SSH) 安全性集成到您的互联网应用程序中。IPWorks SSH 库包括支持 SSH 的客户端、服务器和代理组件,支持强 SSH 2.0 加密和高级加密。 SSH库 SSH 文件传输和通信 借助 IPWorks SSH&#x…

【嵌入式环境下linux内核及驱动学习笔记-(10-内核内存管理)】

目录 1、linux内核管理内存1.1 页1.2 区1.2.1 了解x86系统的内核地址映射区:1.2.2 了解32位ARM系统的内核地址映射区: 2、内存存取2.1 kmalloc2.1.1 kfree2.1.2 kzalloc 2.2 __get_free_page函数族2.2.1 free_page2.2.2 __get_free_pages()2.2.3 free_pa…

20230502 - 二叉树1 | 二叉树理论基础、二叉树的递归遍历

1、二叉树理论基础篇 二叉树可以链式存储,也可以顺序存储。 用数组来存储二叉树如何遍历的呢? 如果父节点的数组下标是 i,那么它的左孩子就是 i * 2 1,右孩子就是 i * 2 2。 深度优先遍历 前序遍历(递归法&…

Android 页面滑动悬浮资源位动画+滑动监听解决方案

一、介绍 在日常业务开发过程中,我们有好多资源位悬浮在页面上,特别是电商以及促销页面,有些公司恨不得把整个页面像叠汉堡一样,一层一层加内容,目的是想让更多的人通过他们的资源来完成更便捷的操作。 但是资源是会覆…

HarmonyOS版的“抖音”长啥样?有图有真相

“鸿蒙系统实战短视频App 从0到1掌握HarmonyOS”系列课程是面向HarmonyOS实战的视频教程,该课程会通过构建一个真实的短视频App来向读者展示HarmonyOS的全过程。 本节将演示基于HarmonyOS短视频App的核心功能。通过了解该App的功能,也能初步对本课程的内…

C++——类和对象(4)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年5月8日 内容&#xff1a;C类和对象内容讲解 目录 前言&#xff1a; 1.操作符重载&#xff08;续&#xff09;&#xff1a; 前置和后置&#xff1a; 日期减日期&#xff1a; <<操作符&#xff1a; 结尾&#xff…

顶级白帽黑客必备的十大黑客技术

1.熟悉Linux系统和命令行操作&#xff1a; Linux是黑客的基石&#xff0c;几乎所有黑客工具和技术都是在Linux平台上运行的&#xff0c;熟悉Linux系统和命令行操作是必须的。 2.掌握网络协议和TCP/IP模型&#xff1a; 了解TCP/IP模型、网络协议和通信流程是黑客攻击的基础&a…

Python-exe调用-控制台命令行执行-PyCharm刷新文件夹

文章目录 1.控制台命令行执行1.1.os.system()1.2.subprocess.getstatusoutput()1.3.os.popen() 2.PyCharm刷新文件夹3.作者答疑 1.控制台命令行执行 主要三种方式实现。 1.1.os.system() 它会保存可执行程序中的打印值和主函数的返回值&#xff0c;且会将执行过程中要打印的…

Diesel 基础

Diesel 2.0.4 官网 github API Documentation 一个安全的&#xff0c;可扩展的ORM和Rust查询构建器 Diesel去掉了数据库交互的样板&#xff0c;在不牺牲性能的情况下消除了运行时错误。它充分利用了Rust的类型系统来创建一个“感觉像Rust”的低开销查询构建器。 支持数据库…

操作系统基础知识介绍之可靠性与可用性(包含MTTF、MRBF、MTTR等)

计算机是在不同的抽象层上设计和构建的。 我们可以通过计算机递归地下降&#xff0c;看到组件将自身放大为完整的子系统&#xff0c;直到我们遇到单个晶体管。 尽管有些故障很普遍&#xff0c;例如断电&#xff0c;但许多故障仅限于模块中的单个组件。 因此&#xff0c;一个模块…

Python每日一练:小艺的口红(暴力、二分、图论三种方法)代写匿名信

文章目录 前言0、题目一、暴力查找二、二分查找三、有序二叉树总结&#xff08;代写匿名信&#xff09; 前言 很明显小艺的口红问题是考的是查找算法&#xff0c;对于这种一次性查找&#xff0c;直接暴力就行了&#xff0c;当然咱是为了学习&#xff0c;所以用来练练各种查找&…

【Linux】基础IO_文件系统

环境&#xff1a;centos7.6&#xff0c;腾讯云服务器Linux文章都放在了专栏&#xff1a;【Linux】欢迎支持订阅 相关文章推荐&#xff1a; 【Linux】冯.诺依曼体系结构与操作系统 【C/进阶】如何对文件进行读写&#xff08;含二进制&#xff09;操作&#xff1f; 【Linux】基础…

【9种】ElasticSearch分词器详解,一文get!!!| 博学谷狂野架构师

ElasticSearch 分词器 作者: 博学谷狂野架构师GitHub&#xff1a;GitHub地址 &#xff08;有我精心准备的130本电子书PDF&#xff09; 只分享干货、不吹水&#xff0c;让我们一起加油&#xff01;&#x1f604; 概述 分词器的主要作用将用户输入的一段文本&#xff0c;按照一定…

二十一、线索转换1:点击转换按钮加载信息、搜索市场活动

功能需求 *在线索转换页面,展示:fullName,appellation,company,owner 流程图 代码实现 1.ClueMapper /*** 通过id查询线索详情* param id 线索id* return 对应id的线索*/Clue selectClueForDetailById(String id); ClueMapper.xml <select id"selectClueForDetailByI…

考研数学武忠祥 高等数学0基础课笔记

函数和映射 常见的函数 取整函数的基本性质 函数的有界性 例题 sinx 是从-1到1的&#xff0c;但是x是无界的 遇到这种带sin的&#xff0c;就要试着取特殊值&#xff0c;让它为1或者为0 函数的单调性 函数的奇偶性 函数的周期性 举例 数学中Q表示有理数集&#xff0c;下面…

Docker服务编排(Docker Compose) :部署上线nginx+springboot项目

Docker服务编排(Docker Compose) 微服务应用一般包含若干个微服务每个微服务一般会部署多个实例&#xff0c;如果每个微服务需要手动启停 维护工作量大 从Dockerfile build image 或者去dockerhub拉去image 创建多个容器 管理容器 Docker Compose 一个编排多容器分布式…