【网络小知识】TCP协议介绍/三次握手,四次挥手的作用

news/2024/9/14 0:40:52/

在这里插入图片描述

前端开发人员需要了解三次握手和四次挥手的原因是,这些概念是在客户端和服务器端之间进行网络通信时所涉及到的 TCP 协议的基本知识。而对于前端来讲,如果页面中请求服务端数据时出现连接失败、延迟等问题,就需要对TCP协议中三次握手、四次挥手所对应的状态码有一定的理解。

目录

  • ⭐一、TCP协议初认识
  • ⭐二、三次握手四次挥手

⭐一、TCP协议初认识

TCP(Transmission Control Protocol)是一种面向连接的传输层协议,主要用于互联网中的无差别网络。它提供了全双工、可靠、有序、面向连接和基于字节流的数据传输服务,可以确保数据以正确的方式从一个应用程序传输到另一个应用程序。

TCP 协议具体包括以下特点:

面向连接:在 TCP 传输数据之前,必须经过建立连接阶段,即三次握手。数据传输完毕后,还需要进行四次挥手来关闭连接。这个过程保证了每个数据包都能够通过可靠的方式被发现,传递到其目录地。

全双工:TCP 连接支持全双工模式,即两端可以同时发送和接收数据,而不用等待对方或交替进行发送和接收。

基于字节流:在 TCP 协议中,数据被分割成多个 IP 分组,并且不同的 IP 分组可以通过不同路径按照任意顺序到达目的地。因此,TCP 数据流被视为一个无限长的字节流,TCP 把这个流切分成若干块(segment),并负责将这些块重新组装成原始的数据。

可靠性:TCP 会利用确认、重传和超时机制等方法来确保数据的可靠性,保证每个数据包能够正确地到达它们的目标,且没有重复。

有序性:TCP 协议可以确保数据报按照发送顺序逐一传递,并在目的地重新组装回来。这就保证了接收方可以准确地重建原始消息。

流量控制和阻塞控制:TCP 协议会根据网络从源头到目的地的延迟情况和连接的带宽大小进行流量控制和拥塞控制。通过使用滑动窗口协议和其他方法,防止发送方发送过多数据,导致网络不能承受负载而发生阻塞。

综上所述,TCP 协议是一个可靠的、通用的传输协议,在互联网中广泛使用,能够在不稳定或高负荷的网络环境下实现稳定的数据传输,并通过对传输过程的状态监控、反馈机制以及流量控制等保护手段来确保数据传输的可靠性。

⭐二、三次握手四次挥手

三次握手和四次挥手是 TCP 协议中的重要概念,下面分别进行详解及其用途:

三次握手
三次握手指建立 TCP 连接时,客户端和服务端之间进行的互相确认过程。它具体包括以下步骤:

第一步(Client -> Server):客户端请求连接,发送 SYN 数据包给服务端。
第二步(Server -> Client):服务端收到 SYN 数据包后,确认收到请求,并发回 ACK 数据包,并根据自己的当前状态返回 SYN+ACK 数据包。
第三步(Client -> Server):客户端接收到服务器的 SYN+ACK 数据包后,返回 ACK 确认数据包,通知服务端连接已建立。
三次握手主要用途是确保双方能够建立可靠的 TCP 连接,验证连接正常并准备好接受和发送数据,同时防止因网络或其他原因导致连接中断或数据丢失。

四次挥手
四次挥手指关闭 TCP 连接时,客户端和服务端之间进行的互相确认过程。它具体包括以下步骤:

第一步(Client -> Server):客户端发起关闭请求,发送 FIN 数据包给服务端。
第二步(Server -> Client):服务端收到 FIN 数据包后,发送 ACK 数据包给客户端,确认已经接收到关闭请求。
第三步(Server -> Client):如果服务端还有未发送的数据,那么它将在 ACK 包中包含它的 FIN 包以通知客户端还需要等待数据传输完成。否则,服务端直接发送 FIN 数据包给客户端,标识服务端已经准备好关闭连接。
第四步(Client -> Server):客户端收到服务器的 FIN 数据包后,发回 ACK 数据包,确认接受关闭请求并通知服务端可以断开连接。
四次挥手主要用途是确保 TCP 连接能够正常地终止,防止客户端和服务端在正常关闭之前断开连接而导致数据丢失,同时释放掉资源以便其他连接使用。


http://www.ppmy.cn/news/47988.html

相关文章

蓝桥 卷“兔”来袭编程竞赛专场-08列置换加密 题解

赛题介绍 挑战介绍 列置换加密是明文以每行固定字数(key 的字母种类数,一般情况下 key 会选择字母不重复的单词)一行一行写下,如果最后一行字数小于每行的固定字数,则使用特殊符号补充,这样就形成了一个矩…

分布式锁Redision

目录 1.ab工具(压测工具)的安装 2.前置 3.优化 3.1synchronized修饰代码方法/代码块 3.2分布式锁事务的解决方案 3.3Redis实现锁问题 3.3.1 set ex方式 3.3.2 set ex方式设置过期时间 3.3.3单redis结点的解决UUID和LUA脚本 3.3.4redission解决分布式锁 4.Redission解…

实验4 Matplotlib数据可视化

1. 实验目的 ①掌握Matplotlib绘图基础; ②运用Matplotlib,实现数据集的可视化; ③运用Pandas访问csv数据集。 2. 实验内容 ①绘制散点图、直方图和折线图,对数据进行可视化; ②下载波士顿数房价据集,并…

(一)Linux 环境下搭建 ElasticSearch (CentOS 7)

目录 1、搭建 Linux 相关环境 2、执行解压操作 3、创建新用户 4、修改配置文件 elasticsearch.yml 5、启动 ElasticSearch 6、修改虚拟机配置文件 7、重新启动 ElasticSearch 8、查看是否启动命令 9、访问 ElasticSearch 1、搭建 Linux 相关环境 没有服务器安装VM&a…

基于遗传算法的中药药对挖掘系统的设计与实现

用数据挖掘技术研究了中药方剂配伍的规律。主要工作:分析了关联规则存在的问题,引入双向关联规则的概念;介绍了遗传算法的基本原理,研究了遗传算法在数据挖掘中的应用;将方剂库转换为位图矩阵,大大提高搜索…

SpringBoot的Interceptor拦截器的简介和实际使用

拦截器(Interceptor) 概念:是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的,用来动态拦截控制器方法的执行。 作用:拦截请求,在指定的方法调用前后,根据业务需要执行…

windows和linux上证书的增删查

文章目录 引言windows上对个人证书的增删查创建证书证书的查找证书的删除证书的安装 Linux上对个人证书的增删查创建证书证书的安装证书的查看证书的删除 Linux上对系统证书的增删查 引言 PS: 我之前看过《图解密码技术》,已经对证书这些概念有基本的了解&#xff…

Java中的数学相关类

文章目录 1.java.lang.Math2.java.math包2.1 BigInteger2.2 BigDecimal2.3 java.util.Random 1.java.lang.Math java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法&#…

Baumer工业相机堡盟工业相机如何联合BGAPI SDK和OpenCVSharp实现Mono12和Mono16位深度的图像保存(C#)

Baumer工业相机堡盟工业相机如何联合BGAPI SDK和OpenCVSharp实现Mono12和Mono16位深度的图像保存(C#) Baumer工业相机Baumer工业相机保存位深度12/16位图像的技术背景代码案例分享1:引用合适的类文件2:BGAPI SDK在图像回调中联合O…

4个实用JS库99%的人可能都不知道

前言 作为一名前端开发者,我通过这些JavaScript库大大提高了自己的效率,比如格式化日期、处理URL参数、调试手机网页等。因此,我想将这些好用的库分享给你们,也希望可以帮助到你们。 1.使用“Day.js”格式化日期和时间 地址&am…

【论文写作】如何写科技论文?万能模板!!!(以IEEE会议论文为例)

0. 写在前面 常言道,科技论文犹如“八股文”,有固定的写作模式。本篇博客主要是针对工程方面的论文的结构以及写作链条的一些整理,并不是为了提高或者润色一篇论文的表达。基本上所有的论文,都需要先构思好一些点子,有…

自定义泛型,自定义泛型接口,自定义泛型方法,JUnit,

class 类名<T,R....>{成员}//...表示可以有多个泛型因义的为静态是和类相关的&#xff0c;在类加载时&#xff0c;对象还没有创建&#xff0c; 泛型是对象创建的时候定 所以&#xff0c;如果静态方法和静态属性使用了泛型&#xff0c;JVM就无法完成初始化注意事项 packag…

paddlepaddle 的 CPU 和 GPU

想记录一下一个 bug 改了一上午改到最后发现并没有 bug 的 bug。 总结&#xff1a; 因为下午要跑很久&#xff0c;为了省 GPU 算力&#xff0c;我想上午先用 CPU 把数据处理部分跑出来&#xff08;感觉数据处理部分不像网络训练那样涉及太多计算&#xff0c;所以感觉用 CPU 就…

【定制功能】LVGL 邮件日志功能

更多源码分析请访问:LVGL 源码分析大全 目录 1、基本说明2、配置方法3、APIs3.1、xs_send_email_log1、基本说明 邮件日志功能是为了方便定位客户问题的方案。在使用此功能时,需要保证网络连接是正常的。 内存使用 日志功能使用的内存不超过 9K: 数据缓存(4096) + 消息缓存…

JDBC入门数据库连接

1. JDBC入门 JDBC&#xff08;Java Database Connectivity&#xff09;是Java程序与数据库进行交互的一种标准接口&#xff0c;它提供了一种简单的方式来连接和操作数据库。在使用JDBC之前&#xff0c;需要先了解以下几个概念&#xff1a; JDBC Driver&#xff1a;JDBC驱动程…

D. Marcin and Training Camp(思维 + 判断一个数二进制位是否是另一个数的子集)

Problem - D - Codeforces 马辛是他大学里的一名教练。有N个学生想参加训练营。马辛是个聪明的教练&#xff0c;所以他只想派那些能冷静合作的学生参加。 让我们关注一下这些学生。每个学生可以用两个整数ai和bi来描述&#xff1b;bi等于第i个学生的技能水平&#xff08;越高越…

十二、详解Kubernetes存储卷的技术原理

Kubernetes存储卷是Kubernetes中用于持久化存储数据的一种抽象概念。它们允许容器在不同的Pod之间共享数据,并且可以在Pod重新调度或迁移时保留数据。本文将详细介绍Kubernetes存储卷的原理。 1.存储卷的概念 Kubernetes存储卷是为了解决容器化环境下数据持久化的问题而引入…

linux_FIFO命名管道-mkfifo函数-进程通信

接上一篇&#xff1a;linux_管道学习-pipe函数-管道的读写-fpathconf函数 本次来分享FIFO命名管道&#xff0c;一些常识&#xff0c;开始上菜&#xff1a; 1.FIFO-mkfifo函数 FIFO常被称为命名管道&#xff0c;以区分管道(pipe)。管道(pipe)只能用于“有血缘关系”的进程间。…

第三章 法的渊源与法的分类

目录 第一节 法的渊源的分类 一、法的渊源释义二、法的渊源种类 第二节 正式法源 一、正式法源的含义二、当代中国的正式法源三、正式法源的一般效力原则 第三节 非正式法源 一、当代中国的非正式法源 第四节 法的分类 一、法的一般分类二、法的特殊分类 第一节 法的渊源的…

Spring AOP核心概念与操作示例

AOP 核心概念 还记得我们Spring有两个核心的概念嘛&#xff1f;一个是IOC/DI&#xff0c;另一个是AOP咯。 先来认识两个概念&#xff1a; AOP(Aspect Oriented Programming)面向切面编程&#xff1b;作用&#xff1a;在不惊动原始设计的基础上为其进行功能增强&#xff0c;类…