搞懂 三次握手四次挥手

news2024/9/23 7:18:02

计算机网络体系结构

在学习TCP 三次握手四次挥手之前,让我们先来看下计算机网络分层:主要分为OSI模型和TCP/IP模型.OSI模型比较复杂且学术化,所以我们实际使用的TCP/IP模型。
在这里插入图片描述

// 以连接Mysql服务器为例理解这五层
// 应用层
应用层包含各种应用和服务,例如数据库访问协议(如MySQL协议)、HTTPFTP等。
在这一层,数据库客户端应用通过MySQL协议与MySQL服务器进行通信,发送查询请求、接收查询结果等.
// 传输层
传输层包括TCPUDP协议.
如果使用TCP,该层负责建立连接、数据的可靠传输、流量控制等。
如果使用UDP,它提供了一种更轻量级的传输,但不保证可靠性和顺序性。
// 网络层
网络层包含IP协议,负责进行逻辑寻址,例如IPv4IPv6地址。
在连接计算机和MySQL服务器的网络中,网络层确保数据包按照源和目标IP地址的路由规则进行传输。
// 数据链路层
数据链路层包括网络适配器(网卡)和设备驱动程序。
在这一层,数据链路层负责将比特流组织成数据帧,通过MAC地址进行帧的传输,同时处理帧的错误检测与纠正。
// 物理层
物理层包含物理介质和硬件设备,例如网线、网卡等。
该层负责实际比特流的传输,确保数据能够在计算机和远端MySQL服务器之间的物理连接上可靠传输。

TCP/IP网络传输中的数据

网络中传输的数据包由两部分组成:一部分是协议所要用到的首部,另一部分是上一层传过来的数据。

// 我们用用户客户端A发送,服务端B接收来来说明
1.客户端A会进行编码处理产生报文,交给下面的传输层.(message)
2.传输层将应用层数据封装为报文段并附加一个TCP包首部,然后交给下面的网络层.(segment)
3.网络层会将传输层传过来的数据,加上IP首部,生成IP数据报(datagram),然后交给数据链路层.
4.数据链路层将网络层传过来的数据,加上链路层首部,生成链路层帧(frame),然后传给物理层.
5.物理层将数据链路层的数据转化为比特流传输给服务端B的物理层.
6.服务端B的物理层接收到比特流,并将其转换为数据链路层能够理解的形式,也就是将比特流还原成链路层的帧.(frame)
7.服务端B的数据链路层接收到物理层的帧后,会进行解封装,去掉链路层首部,得到网络层的数据报。(datagram)
8.服务端B的网络层接收到数据链路层的数据报后,进行解封装,去掉网络层的IP首部,得到传输层的报文段。
9.服务端B的传输层接收到网络层的报文段后,进行解封装,去掉传输层的TCP包首部,得到应用层的数据。
10.最终,服务端B的应用层接收到传输层的数据后,进行解码处理,得到最初由客户端A发送的原始应用层数据。这个数据可能是一个HTTP请求、数据库查询等,根据应用层协议的不同而有所不同。

下图可以帮助理解:
在这里插入图片描述

TCP

TCP(Transmission Control Protocol)是TCP/IP协议族中的一个重要协议,与上面提到的网络分层(物理层、数据链路层、网络层、传输层、应用层)密切相关。TCP协议位于传输层,承担了可靠的端到端数据传输的责任。

TCP三次握手

TCP的三次握手(Three-Way Handshake)是建立TCP连接的过程,确保通信的双方都准备好进行数据传输。这过程包括客户端和服务器之间的协商和确认。以下是TCP三次握手的具体步骤:
在这里插入图片描述

// 第一次握手
客户端将请求报文SYN设置为1,sequence Number(上图seq)发送给服务端,然后客户端进入SYN_SENT状态,等待服务器确认.
// 第二次握手
服务器端收到客户端的请求报文,SYN=1知道客户端请求连接,服务端应答SYNACk都为1,返回Acknowledgment Number(上图的acknum,即客户端发送的seq+1),然后也给服务端发送一个seq(这里是个新的数值),然后服务器进入SYN_RCVD状态.
// 第三次握手
客户端收到应答报文后,检查acknum是否是之前自己发送的seq+1,检查ACK是否为1,如果都正确,则发送ACK位置为1,给服务端发送的seq+1返回。服务端收到报文,如果都正确,则连接建立成功.客户端服务端都进入ESTABLISHED状态。完成三次握手.
// 总结
1.客户端发送syn=1,seq1 -> 服务端
2.服务端返回ack=1,syn=1,acknum = seq1+1,seq2 -> 客户端
3.客户端返回ack=1,acknum = seq2+1 -> 服务端

针对三次握手的问题

// 为什么要三次握手?
主要是为了数据传输的可靠性,而三次握手是保证数据可靠传输又能提高传输效率的最小次数.在传输过程中都必须维护一个序列号,标识发送出去的数据包哪些已经被对方收到.
假如:客户端发送数据包(假设到校为10byte),同时发送一个序列号为1000,那么服务端接收到数据包之后,会返回一个确认号10101000+10),表明发送下一个序列号从1011开始.
// 为什么不是两次?
假设只有2次握手,客户端发送SYN,服务端返回SYNACK,然后客户端突然失效.此时服务器认为连接已经建立,这样如果后面有其他的客户端使用相同的ip地址和端口号连接,服务器可能会误以为是之前的请求,导致连接混乱。

TCP四次挥手

TCP的四次挥手是用于安全关闭一个已经建立的连接.
在这里插入图片描述

// 以客户端主动关闭连接为例
// 第一次挥手
客户端决定关闭连接,向服务端发送一个带有FIN标志的TCP数据包,表示客户端不再发送数据。进入入FIN-WAIT-1状态
// 第二次挥手
服务端收到客户端的FIN请求后,发送一个带有ACK标志的TCP数据包,表示已经收到了关闭请求。此时,服务端进入CLOSE_WAIT状态,等待可能还在传输的客户端的数据传输完成。
// 第三次挥手
当服务端也准备好关闭连接时,发送一个带有FIN标志的TCP数据包给客户端,表示服务端不再发送数据。
// 第四次挥手
客户端收到服务端的FIN请求后,发送一个带有ACK标志的TCP数据包,表示已经收到了服务端的关闭请求。此时,客户端进入TIME_WAIT状态,等待可能未到达的服务端的最终确认.

针对四次挥手的问题

// 为什么TCP的挥手需要四次?
TCP是全双工的连接,必须两端同时关闭连接,连接才算真正关闭。
挥手时可能有数据在传输: 在挥手的时候,客户端和服务端都可能还有未发送完的数据。挥手过程需要等待这些数据传输完成,才能安全关闭连接。

// 为什么需要TIME-WAIT状态?
在网络中,ACK确认可能因为延迟而无法及时到达。通过等待一段时间,服务端可以处理可能的 ACK 延迟,确保客户端已经完全接收到了服务端的关闭请求。

总结

三次握手用于建立连接,确保双方都愿意通信;四次挥手用于关闭连接,保证双方都能安全、可靠地关闭连接。在这些过程中,序列号、确认号、状态转换等都起到关键作用,确保了连接的可靠性和稳定性。

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

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

相关文章

leetcode 125. 验证回文串

题目: 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s,如果它是 回文串 ,返回 true &…

RAG(检索增强生成 )

📑前言 本文主要是【RAG】——RAG(检索增强生成 )的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句…

4.4 千万 TOKEN 心理咨询语料库发布,专为大模型,让人工智能技术更好的服务人

2023 年,全网火爆聊天机器人,不同行业企业开始探索应用大模型于垂直领域,当算法和算力已经被证明是行之有效的,那么重头戏就是数据了,Chatopera 近日发布了心理咨询行业的又一大规模语料 - 包含 4.4 千万 TOKEN 的多轮…

银行的新玩法,用数据分析重塑贷款策略!

大数据产业创新服务媒体 ——聚焦数据 改变商业 随着经济全球化和技术革新的加速,银行业务正面临前所未有的挑战和变革。在这个数字化时代,银行业的传统运作模式受到挑战,特别是在零售贷款领域。这一领域的核心挑战在于如何在激烈的市场竞争…

从AAAI 2024看人工智能研究的最新热点

图 1 由AAAI 2024论文列表生成的词云 AAAI会议作为全球AI领域的顶级学术盛会,被中国计算机学会(CCF)评为A类会议。AAAI2024的会议论文投稿量达到了历史新高,主赛道收到了12100篇投稿论文,9862篇论文经过严格评审后共有…

我们做了个写论文解读的agent

已经2024年了,该出现一个论文解读AI Agent了。 尽管我们公司的主营业务不是做这块的,但,我们还是顺手做了这样一个agent,因为——我们公司的算法同学也需要刷论文啊喂, 而且我们也经常人工写论文解读嘛,所…

【JaveWeb教程】(24) Mybatis入门之Mybatis配置与SQL语句编写 详细代码示例讲解(最全面)

目录 Mybatis入门前言1. 快速入门1.1 入门程序分析1.2 入门程序实现1.2.1 准备工作1.2.1.1 创建springboot工程1.2.1.2 数据准备 1.2.2 配置Mybatis1.2.3 编写SQL语句1.2.4 单元测试 1.3 解决SQL警告与提示 Mybatis入门 前言 在前面我们学习MySQL数据库时,都是利用…

企业的 Android 移动设备管理 (MDM) 解决方案

移动设备管理可帮助您在不影响最终用户体验的情况下,通过无线方式管理和保护组织的移动设备群,现代 MDM 解决方案还可以控制 App、内容和安全性,因此员工可以毫无顾虑地在托管设备上工作。移动设备管理软件可有效管理个人设备上的公司空间。M…

Vue3函数式弹窗实现

要在一些敏感操作进行前要求输入账号和密码,然后将输入的账号和密码加到接口请求的header里面。如果每个页面都去手动导入弹窗组件,在点击按钮后弹出弹窗。再拿到弹窗返回的账号密码后去请求接口也太累了,那么有没有更简单的实现方式呢&#…

02.neuvector之Enforcer容器功能介绍

原文链接 一、功能介绍 Enforcer容器在neuvector中主要负责网络与DLP/WAF的规则策略的实现以及网络数据的采集上报; 以DaemonSet的方式运行,主要有三个进程monitor、agent、dp;进程分别主要职责如下: monitor:负责监…

计网期末复习(一)

计网期末复习(一) – WhiteNights Site 标签:计算机网络 诶,期末。诶,复习。 TCP/IP参考模型的网络层提供的是? 区别于传输层,网络层提供不可靠无连接的数据报服务 当时看到TCP/IP就选了可靠有…

k8s的node亲和性和pod亲和性和反亲和性 污点 cordon drain

node亲和性和pod亲和性和反亲和性 污点 cordon drain 集群调度: schedule的调度算法 预算策略 过滤出合适的节点 优先策略 选择部署的节点 nodeName:硬匹配,不走调度策略,node01 nodeSelector:根据节点的标签选择,会走调度的算法 只…

Docker五部曲之三:镜像构建

文章目录 前言Docker构建架构构建指令构建上下文本地目录Git存储库压缩文件纯文本文件.dockerignore文件 Dockerfile解析器指令环境变量命令执行格式exec格式shell格式 FROMRUNCMDLABELEXPOSEENVADDCOPYENTRYPOINTVOLUMEUSERWORKDIRARGONBUILDSHELL 多级构建 前言 本文均翻译自…

yolov7中断训练后继续训练

1、训练指令 (1)添加resume参数,参数值改为true (2)weights参数,参数值改为中断前上次训练权重 中断后继续训练命令: python.exe train.py --weights runs/train/exp9/weights/last.pt --re…

pandas增强—数据表的非等式连接和条件连接。

Pandas 支持 equi-join,其中 join 中涉及的键被认为是相等的。这是通过 merge 和 join 函数实现的。但是,在某些情况下,所涉及的Key可能不相等;联接中还涉及一些其他逻辑条件、这称为非等式连接或不等式连接或者条件连接。 这种情况下使用pa…

vue-echarts踩坑,本地开发可以渲染echarts图表,线上环境图表渲染不出来

main.js全局注册v-chart组件 import VueECharts from "vue-echarts"; Vue.component("v-chart", VueECharts);在页面中使用 如上图,我开始写的静态数据,在data中定义了chartOption1:{…配置项…}, 在接口数据返回之后,…

学习笔记-MySql数据库介绍与连接

一.MySQL数据库介绍 MySQL是一个关系型数据库管理系统,在 WEB 应用方面,MySQL是最好的 RDMS (Relational Database Management System,关系数据库管理系统) 应用软件,它是由瑞典MySQL AB 公司开发,目前属于 Oracle 旗…

css宽度适应内容

废话不多说,看如下demo,我需要将下面这个盒子的宽度变成内容自适应 方法有很多,如下 父元素设置display:flex 实现子元素宽度适应内容 如下给父元素设置flex能实现宽度自适应内容 <!DOCTYPE html><html lang"en"><head><meta charset"U…

高工微报告|智驾前视一体机趋势

传统智驾前视一体机赛道上&#xff0c;1V3R、1V5R产品如何升级备受关注。 根据日前调研获取的信息&#xff0c;1V3R、1V5R向轻量级行泊一体&#xff08;典型为5V5R12U方案&#xff0c;算力平台5-20TOPS&#xff09;迈进的具体市场空间&#xff0c;仍在验证阶段。 其中&#x…

【MIdjourney】镜头效果关键词

1.景深(depth of field) 景深&#xff08;DOF&#xff09;&#xff0c;是指在摄影机镜头或其他成像器前沿能够取得清晰图像的成像所测定的被摄物体前后距离范围。镜头光圈、镜头距离、及焦平面到拍摄物的距离是影响景深的重要因素。 在MIdjourney中&#xff0c;该关键字会使得…