数通王国历险记之TCP协议的三次握手和四次挥手

news2024/11/19 1:14:36

系列文章目录
数通王国历险记(2)


目录

前言

 一、TCP我们称之为可靠的传输层协议,为什么称它为可靠呢?

二、TCP的建立——三次握手

1,提前知道TCP协议报文中都有些啥?

2.第一次握手

总的来说:就是PC1向PC2发出一个同步报文说,我想和你建立连接

3,第二次握手

总的来说:就是PC2同意和PC1建立连接,同时确认告诉PC1自己也想和PC1建立连接和的自己已经收到了PC1的同步报文的这件事

4,第三次握手

总的来说:就是PC1对PC2发送消息说:我已经收到你的同步报文和确认报文了,关系就此建立。

三,TCP关闭----四次挥手

1,为什么是四次挥手呢?

2.第一次挥手

提前知道:

因为四次挥手有两次是重复的,只不过是方向不同,所以我们在此就介绍从左到右方向的一来一回的挥手,而且挥手是建立在三次握手之后的事情,握手里面提到的标识符什么意思为我们就不多概述了,我们就以大家已经理解了为前提去介绍四次挥手。

3.第二次挥手

4,四次挥手为什么有两次重复的挥手?

5,关于四次挥手细节

总结


前言

随着华为公司的不断发展,数据通信这门技术也越来越重要,很多人都开启了数据通信学习,本文就介绍了存在TCP协议的三次握手和四次挥手,是我们通过数通王国的第二站(我们在文章中使用的是华为的ENSP软件)。


 一、TCP我们称之为可靠的传输层协议,为什么称它为可靠呢?

因为它的建立经历了三次握手,它的关闭经历了四次挥手。

总而言之就是它的每一个步骤都需要确认,不确认就不能经行下一步操作,所以非常可靠

这就是TCP为什么称之为可靠性的协议

二、TCP的建立——三次握手

先看图了解一下,并且我们的讲解是根据这个图进行讲解的:

1,提前知道TCP协议报文中都有些啥?

首先我们看到的有IP头部和TCP头部

1,IP头部里面存放的是源IP和目的IP

源IP:就是发送方的IP地址

目的IP:就是接收方的IP地址

2,TCP头部里面存在

Seq代表是发送数据大小,是随机的

Flags标志位,指示当前报文是什么类型

解释: 就是这个标志位可能填充的是怎么一个字段

Flags的报文类型有两种1,SYN 2,ACK

SYN:   就是同步的意思

解释: 就是PC1想和PC2建立连接,这就是同步,是由PC1主动发起的,PC2接受进行。

ACK:就是确认的意思

解释:PC1刚刚给PC2发报文说建立连接吗,PC2同意了,并且要表达自己已经知道PC1要跟自己建立连接这个事情,所以,给PC1的回复报文里面就要有一定的确认,让PC1知道自己已经接收到了请求建立的报文。

发给PC1的确认分为两种:一种是隐藏的,另一种是明文的。

2.第一次握手

我们分析PC1发送的TCP头部当中的信息:

总的来说:就是PC1向PC2发出一个同步报文说,我想和你建立连接

Seq=a:是什么意思呢:就是PC1会发送一个数据,序列号等于a(Seq=a),可以理解为PC1给PC2发了一个a大小的数据。

Ack=0:是什么意思呢?:可以理解为PC1当前的一个确认等于0

Flags:SYN置位:表示的要同步,什么意思呢,就是PC1要和PC2建立联系

通俗来说就是pc1和pc2说,我要和你建立TCP的连接

PC2接到来自PC1的请求建立报文就表示第一次握手结束了。

3,第二次握手

当这个pc2收到了pc1的建立连接的请求之后

总的来说:就是PC2同意和PC1建立连接,同时确认告诉PC1自己也想和PC1建立连接和的自己已经收到了PC1的同步报文的这件事

我们分析PC2发送的TCP头部当中的信息:

Seq=b:pc2会发送一个随机大小的序列号等于b,也可以理解为大小为b的数据

Ack=a+1:是什么意思呢?:

就是说,PC1刚刚不是给PC2发了一个大小为a的数据了,所以PC2收到之后就要告诉PC1,我已经收到这个大小为a的数据了,接下来你可以从a+1这个大小开始发。

举个例子:

就好比如果pc1之前发的数据是5,pc2接受到后和pc1说你下次从6开始给我发报文,下一次PC1可以从6开始给PC2发报文

Flags:SYN置位:表示也是要同步,就是PC2要和PC1建立联系

通俗来说就是pc2和pc1说,我要也要和你建立TCP的连接

Flags:ACK置位:PC2主动向PC1发起连接,同时PC2对PC1之前从左到右发过来的请求做一个确认。

通俗来说就是:

PC1刚才发报文给PC2说要建立连接,PC2说我也要跟你建立连接,并且我已经知道你想和我建立连接l就是Ack确认的意思

4,第三次握手

当这个pc1收到了pc2的建立连接和确认的报文之后

我们分析PC1发送的TCP头部当中的信息:

总的来说:就是PC1对PC2发送消息说:我已经收到你的同步报文和确认报文了,关系就此建立。

Seq=a+1:因为刚刚PC2发过来想请求想和PC1建立连接的时候的Ack里面和pc1说了,下一次你给我发数据的时候,可以从a+1开始发,因为PC1之前发的是a,pc2已经全部收到了,那pc1就从a+1开始发

隐含的含义:从侧面暗示着,pc1已经收到了pc2的主动发过来的这个握手报文

Ack=b+1:是什么意思呢:

并且PC2刚刚是不是也给PC1发了一个数据啊,大小是b啊,所以PC1也会对这个数据进行确认,是b+1代表PC1已经收到了PC2从右往左发送的这个报文,这个数据大小为b,所以下次PC2可以从b+1开始给PC1发数据,

Flags:ACK置位

因为这个报文是对它的第二次握手的报文的一个确认,所以标志位只有确认,也就是Ack,因为pc2已经向pc1同步过,pc1也向pc2同步过,最后pc1回复一个报文告诉pc2,我收到你的,同步报文和确认报文了

所以PC1和PC2连接到此正式建立

三,TCP关闭----四次挥手

1,为什么是四次挥手呢?

因为它是有从左到右,PC1要跟PC2断开连接,PC2要给PC1回复确认,同意PC1的断开连接这是从左到右反向的

从右到左呢,也是一样的,PC2也要和PC1断开连接,然后PC1同意断开连接、

两次的一来一回刚好是四次,所以叫四次挥手

TCP这个协议必须有确认机制的,没有确认没办法正常的完成交互

刚才通过TCP的三次握手之后建立之后,就可以正常通信了

当数据传输完成之后,TCP需要通过四次挥手机制断开TCP连接,释放系统资源

我们刚才所说的有两个方向,一共需要两次,一个是右到左需要两次,一个是左到右需要两次,所以2+2刚好就是4,所以我们称之为四次挥手

2.第一次挥手

提前知道:

因为四次挥手有两次是重复的,只不过是方向不同,所以我们在此就介绍从左到右方向的一来一回的挥手,而且挥手是建立在三次握手之后的事情,握手里面提到的标识符什么意思为我们就不多概述了,我们就以大家已经理解了为前提去介绍四次挥手。

 

第一次挥手:

突然pc1主动向pc2发起断开连接请求,请求断开的一个标志位叫FIN,FIN就是结束的意思,并且还带了一个ACK确认,因为什么呢?,PC1在发送请求跟pc2断开的连接之前,pc2肯定有发数据给你,这些数据PC1你收到了没有,所以PC1是不是要对这个行为做一个确认,所以我PC1不但要请求断开,并且请求断开的前提是我PC1已经收到PC2发过了的所有数据,这也是为什么PC1发的报文里面的标志位,带有的这两个字段

Flags:FIN 就是断开连接的意思

3.第二次挥手

 第二次挥手:

PC1跟PC2请求断开,一般来说,PC2确定,也可以跟PC1断开,所以PC2就回复了,PC1刚发过来的数据要确认PC2收到了Ack301,也就是下一次PC2可以从301的大小开始给pc1发数据,所以pc2就从301给PC1发数据大小,Ack等于102,为什么因为PC1之前发过来的数据是101,那pc2就从102给pc1发,代表着pc2已经收到101了,pc1下一次就可以从102,给pc2发,

确认pc1下一次从102给pc2发了,然后它的标志位就是Flags:ACK,表示PC2对pc1刚才发过来的请求断开的连接表示同意

4,四次挥手为什么有两次重复的挥手?

左边向右边断开之后,不代表右边的和左边断开了,双向的所以才需要四次挥手

右边和左边类似,所以需要四次挥手才能彻底断开连接

从右到左就轮到了pc2向pc1发送请求断开连接的报文请求,标志位和pc1发送的标志位是相同的

那我发这个请求带断开之前,我一定要对你,之前发过来的数据进行一个确认,因为数据没有发完之前,

你请求断开就不合理了,要跟你进行一个确认,那之后在对你进行请求断开,接着我们pc1对它进行回复,

所以一来一回,一来一回,一共两次,就是变成了四次挥手

完成四次挥手PC1和PC2就断开连接了

5,关于四次挥手细节

  1. 主动发起的断开连接里面会包含对断开之前的接收数据的确认。flags:fin+ack
  2. 被请求方在收到主动提出断开的请求后,会对该请求单独回复确认报文(第二次挥手
  3. 截止到目前这个位置从左到右的连接断开。
  4. 右边到左边类似,所以一共需要四次挥手才能彻底断开连接。

总结

恭喜你,你通过本章的学习通过了,数通王国的第二个关卡,后面还有很多的关卡,数通王国还有很多宝藏等着你去探险,加油!只为成为更好的自己。

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

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

相关文章

MySql进阶篇(附面试快速答法)

文章目录 1、慢查询1.1、如何定位慢查询呢?小总结面试快速答法 1.2、SQL语句执行很慢, 如何分析呢?小总结面试快速答法 2、存储引擎2.1、MySQL体系结构2.2、存储引擎特点小总结 3、索引3.1、什么是索引?小总结面试快速答法 3.2、聚集索引和非…

mesh网格数据解析及cesium可视化实现

代码实现运行效果 技术术语 Mesh通常指网络拓扑中的网状结构。在计算机网络中,Mesh是指每个节点都与其他节点相连,形成一个无中心的网状结构。Mesh网络常见于分布式计算、传感器网络、互联网等场景中。另外,在3D计算机图形学中,M…

SSMP整合案例(8) Restful开发表现层接口

之前几篇文章后面 我们的数据层 和 业务层基本就搭好了 然后 我们就要处理表现层 表现层开发 我们就还是用之前讲过的 Restful 然后 用Postman来做我们接口的测试 那话不多说 直接开干 在启动类同目录下创建一个 controller 包 下面创建一个类 叫 BookController BookControl…

5-3图像处理经典案例:椒盐噪声运算处理(matlab程序)

1.简述 椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。椒盐噪声的成因可能是影像讯号受到突如其来的强烈干…

C++ 基础知识(1)

文章目录 写在前面1、第一个c程序1.1、输入输出及注释1.2、命名空间 2、变量、数组、指针2.1、基本类型2.2、数组与字符串2.3、指针2.4、指针空值2.5、引用 3、判断与循环3.1、if、else3.2、for、while 4、函数与参数4.1、函数与缺省参数4.2、函数重载4.3、内联函数 写在前面 …

什么是云安全访问服务

云安全访问服务(Cloud Secure Access Service,CSAS)是一种网络安全服务,旨在保护云环境下的应用程序和数据。它提供了一种安全访问云应用程序和数据的方式,同时也可以保护云中的敏感信息不被未经授权的用户访问。CSAS包括多种安全功能&#x…

从程序员到架构师——缓存层场景

读缓存 业务场景 如何将十几秒的查询请求优化成毫秒级? 这次项目针对的系统是一个电商系统。每个电商系统都有个商品详情页。一开始这个页面很简单,只包括商品的图片、介绍、规格、评价等。 刚开始,这个页面打开很快,系统运行…

控制台里的神秘代码 \033[

“\033[”这串字符在控制台里有特殊的应用。 在串口工具里&#xff08;如sscom&#xff09;看着是一串字符。 在控制台里却可以改变字体颜色&#xff0c;显示进度条&#xff0c;甚至字符动画。 1 字体控制 #include <stdio.h>int main() {printf("以下是测试文字&…

MM 采购凭证的交货成本 表

如上图的交货成本表再 EKBZ表里面

9.1 I/O模型

目录 I/O基本概念 同步和异步 阻塞和非阻塞 五种I/O模型 五种I/O模型比较 I/O基本概念 I/O即数据的读取&#xff08;接收&#xff09;或写入&#xff08;发送&#xff09;操作 通常用户进程中的一个完整I/O分为两个阶段 用户进程空间<-->内核空间 内核空间<--&…

【GPT】中文通用大模型梳理与测评(C-Eval 、AGIEval、MMLU、SuperCLUE)

文章目录 概述申请后直接使用大模型开源可本地部署 通识数据集测评&#xff08;C-Eval 、AGIEval、MMLU、SuperCLUE&#xff09;自媒体报道SuperCLUE&#xff1a;中文通用大模型综合性基准C-Eval&#xff1a;中英测评&#xff08;清华上交提出&#xff09;当前排名&#xff08;…

【Unity编辑器扩展】(三)PSD转UGUI Prefab, 一键拼UI/同步字体/自动9宫切图(完结篇)

工具效果&#xff1a; 第一步&#xff0c;把psd图层转换为可编辑的节点树&#xff0c;并自动解析UI类型、自动绑定UI子元素&#xff1a; 第二步, 点击“生成UIForm"按钮生成UI预制体 (若有UI类型遗漏可在下拉菜单手动点选UI类型)&#xff1a; 验证一键生成UI效果: 书接上…

微信支付接口常用参数及证书区分

注意&#xff1a;服务商模式下&#xff0c;均是使用服务商的以下信息 1. 证书 1.1商户api证书&#xff08;v2和v3接口都需要使用&#xff09; 1.1.1获取方式&#xff1a; 什么是商户API证书&#xff1f;如何获取商户API证书&#xff1f; &#xff08;商户api证书 &#xff…

【Spring AOP】面向切面编程,面向切面编程是面向对象编程的孪生兄弟嘛?且听我细细道来! ! !

前言: 大家好,我是良辰丫,面向切面编程和面向对象编程是两种几乎不同的编程方式,并不是所谓的孪生兄弟,但是我们可以说面向切面编程是面向对象编程的一种补充和完善,到底是什么意思呢?请跟随良辰的步伐往下瞧! ! !&#x1f48c;&#x1f48c;&#x1f48c; &#x1f9d1;个人主…

机器学习7:特征工程

在传统的软件工程中&#xff0c;核心是代码&#xff0c;然而&#xff0c;在机器学习项目中&#xff0c;重点则是特征——也就是说&#xff0c;开发人员优化模型的方法之一是增加和改进其输入特征。很多时候&#xff0c;优化特征比优化模型带来的增益要大得多。 笔者曾经参与过一…

【初识 Docker | 中级篇】 Docker 中使用 docker-compose 安装 Nacos

文章目录 前言一、安装 docker1、安装docker2、安装docker-compose 二、Nacos 单机安装1.创建配置文件1.1.创建目录1.2.创建nacos-logback.xml1.3.创建application.properties1.4.创建docker-compose.yml 2.nacos数据库表结构3.启动Nacos容器 总结 前言 可以按照以下步骤在 Do…

Text2Video-Zero:Text-to-Image扩散模型是Zero-Shot视频生成器

Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Generators Paper: https://arxiv.org/abs/2303.13439 Project: https://github.com/Picsart-AI-Research/Text2Video-Zero 原文链接&#xff1a;Text2Video-Zero:Text-to-Image扩散模型是Zero-Shot视频…

Splashtop 让按需远程支持流程更加流畅

Splashtop 一直采用9位 SOS 会话码的形式为用户提供按需支持&#xff1a; 1、技术员引导最终用户访问网站 sos.splashtop.com&#xff1b; 2、最终用户下载并运行小程序&#xff0c;然后发送9位会话码给技术员。 自2015年 Splashtop SOS 产品推出以来&#xff0c;我们一直采…

PLC数字量与模拟量信号输入/输出接线

西门子S7-1200 具有用于进行计算和测量、闭环回路控制和运动控制的集成技术&#xff0c;是一个功能非常强大的系统&#xff0c;可以实现多种类型的自动化任务。下面分享S7-1200系列数字量与模拟量信号输入/输出接线图给大家。 数字量信号模块输入输出接线 SM 1221 数字量输入…

分布式机器学习(Parameter Server)

分布式机器学习中&#xff0c;参数服务器(Parameter Server)用于管理和共享模型参数&#xff0c;其基本思想是将模型参数存储在一个或多个中央服务器上&#xff0c;并通过网络将这些参数共享给参与训练的各个计算节点。每个计算节点可以从参数服务器中获取当前模型参数&#xf…