网络编程4——TCP协议的三大安全机制:三次握手四次挥手+确认应答机制+超时重传机制

文章目录

  • 前言
  • 一、TCP协议段与机制
    • TCP协议的特点
    • TCP报头结构
    • TCP协议的机制与特性
  • 二、TCP协议的 连接管理机制
    • TCP建立连接:三次握手
    • TCP断开连接:四次挥手
  • 三、TCP协议的 确认应答机制
  • 四、TCP协议的 超时重传机制
  • 总结


前言

本人是一个刚刚上路的IT新兵,菜鸟!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果这篇文章可以帮助到你,劳请大家点赞转发支持一下!

本篇文章主要介绍了传输层的TCP协议中的三大安全机制,今天分享的全都是理论,因此大家一定要认真。


一、TCP协议段与机制

TCP协议的特点

特点说明
有连接刻意保存对端的相关信息
可靠传输尽全力将数据传输过去不是百分百成功,自己会知道数据传输是否成功
面向字节流以一个字节为基本单位(一个数据可以分成几份 多次发多次收)
有接收缓冲区,也有发送缓冲区后续文章介绍
大小不受限对于要传输的数据大小没有要求
全双工一条通信路径,双向通信。(可以同时发送和接收数据)

TCP报头结构

在这里插入图片描述

6位标志位
在这里插入图片描述


TCP协议的机制与特性

TCP的协议段格式,比UDP的协议段格式复杂一万倍!😵😵
所以他的机制与功能也比UDP更加强大!!😇😇

TCP对数据传输提供的管控机制,主要体现在两个方面: 安全和效率
这些机制和多线程的设计原则类似: 保证数据传输安全的前提下,尽可能的提高传输效率

TCP协议的机制与特性
1️⃣连接管理
2️⃣确认应答
3️⃣超时重传
4️⃣流量控制
5️⃣拥塞控制
6️⃣滑动窗口
7️⃣延时应答
8️⃣捎带应答
9️⃣面向字节流
🔟异常处理

  • 1️⃣-5️⃣是TCP协议保证数据传输安全的 安全机制
  • 6️⃣-8️⃣是TCP协议提高传输效率的 效率机制
  • 9️⃣-🔟是TCP协议的 其他特性

二、TCP协议的 连接管理机制

连接管理包括
TCP建立连接:三次握手
TCP断开连接:四次挥手

知识点须知

  • SYN:同步报文段 ,指一方要向另一方,申请建立连接。
    位于6位标志位中的第5位,默认是0,当第5位比特位为1是则认为这是一个SYN报文。
  • ACK:应答报文 , 指对收到对方数据包的确认。
    位于6位标志位中的第2位,默认是0,当第2位比特位为1是则认为这是一个ACK报文。
  • FIN:结束报文 , 指一方要向另一方提出释放连接。
    位于6位标志位中的第6位,默认是0,当第6位比特位为1是则认为这是一个FIN报文。

6位标志位在这里插入图片描述


切记!!!!!

  • TCP是如何实现可靠性的?
    答:依靠 确认应答机制 与 超时重传机制 实现可靠性的。
    可千万不是靠三次握手与四次挥手啊!!!

TCP建立连接:三次握手

握手指的是通信双方,进行一次网络交互。

  • 三次握手相当于 客户端 和 服务器 之间,通过三次交互,建立了连接

建立连接一定是客户端主动发起的

在这里插入图片描述


上述过程:
1️⃣客户端向服务器发送一个SYN( 确认服务器是否可以收到数据 )

2️⃣服务器收到SYN返回给客户端一个ACK( 1.告诉客户端,服务器可以收到数据 2.服务器知道客户端可以发送数据 )

3️⃣服务器向客户端发送一个SYN( 确认客户端是否可以收到数据 )

4️⃣客户端收到SYN返回给服务器一个ACK( 1.告诉服务器,客户端可以收到数据 2.客户端知道服务器可以发送数据 )

  • 这四次交互是为了检验服务器与客户端的收发数据的功能是否正常。

  • 明明完成了四次交互,为什么叫做三次握手呢??

原因是服务器返回给客户端的ACK与发送给客户端的SYN合并成一个报文了。
因此这个报文的标志位的第2位与第5位都是1,就代表这个报文即使ACK报文又是SYN报文。

这两个报文是一定会合并的,因为这个ACK报文与SYN报文是同一个时机触发的(都是由内核来完成的),所以才称之为三次握手,而不是四次握手


TCP断开连接:四次挥手

挥手指的是一方提出的释放连接请求。

断开连接客户端与服务器都有可能主动发起的,下面假设客户端主动申请断开连接
在这里插入图片描述
上述过程与三次握手的过程非常相似,只不过SYN报文换成了FIN报文。

上述过程:
1️⃣客户端向服务器发送一个FIN( 告知服务器,客户端要断开连接 )

2️⃣服务器收到FIN返回给客户端一个ACK( 服务器知道了 )

3️⃣服务器向客户端发送一个FIN( 告知客户端,服务器要断开连接 )

4️⃣客户端收到SYN返回给服务器一个ACK( 客户端知道了 )

不用担心第四次的ACK返回不了,内核会一直维护TCP直到四次挥手结束的。

别想了,就是四次挥手,中间的ACK与FIN不是一定合并的。
原因: ACK与FIN是不同时机触发的
ACK是由内核完成的,会在收到FIN的时候第一时间返回ACK
FIN是调用close方法或进程结束时才会触发的

因此这就和你写的代码有很大的关系了,有两种情况。

1.服务器发现客户端断开连接后,立刻调用close方法,服务器的ACK还没发,那么此时就FIN与ACK就会合并起来一起发出去。
2.服务器发现客户端断开连接后,并没有立刻调用close方法,而是执行了其他操作,服务器的ACK已经发出去了,此时FIN就只能单独发了。

这两个报文是不一定会合并的,所以才称之为四次挥手。


三、TCP协议的 确认应答机制

TCP协议是可靠传输,而保证可靠传输的最核心的机制就是确认应答机制。

确认应答机制的大概内容就是, 每次收到数据 ,都会 给对端发送一个应答报文(ACK) ,应答报文与TCP报文的格式一样

在这里插入图片描述
发送端可以根据有没有收到对端应答报文,来确定这条信息是不是安全可靠的传输给了对端。

但是此时也会遇到一个问题!
在这里插入图片描述

这是正常的回答。但是在网上经常会出现后发先至的情况。就变成了下面这样。

在这里插入图片描述

明明是明晚要回家的意思,因为后发先至,滚啊先到了,变成了回复第一句话的应答,好啊好变成了回复第二句话的应答。那么这个意思可就完全变了。😇😇😇

可以为每句话与回答添加序号
在这里插入图片描述
这样就不会弄巧成拙了。

所以真实的TCP数据传输也引入了序号和确认序号。协议段中的32位序号与32位确认序号

因为TCP传输数据的基本单位是字节,
所以就给发送的每个字节都编了序号。
在这里插入图片描述


在这里插入图片描述

应答报文中确认序号的意义就是告诉发送方,确认序号之前的字节我都收到了,并且确认序号就是你下一个要发送数据的编号。
对应上图中的两个应答报文即,
1001号前面的字节都收到了,你该发1001字节了。
13139号前面的字节都收到了,你该发13139字节了。


确认序号 须知

  • 发送方的确认序号是无意义的数据
  • 确认序号的规则,取自己接收到数据的最后一个字节的 下一个字节的序号 (假设对面发了1000个字节过来,但是我收到的最后一个字节编号是10,那么我给发送方的应答报文ACK中确认序号就是11)。
  • 确认序号的作用:接收方通过ACK的确认序号,告诉发送方哪些数据已经收到了,便于发送方判断数据是否安全完整的送达。

四、TCP协议的 超时重传机制

如果一切都顺利,那么自然一切都好。

但是网络环境是十分复杂的,两台设备进行网络交互,中间要经过许许多多的节点,如果中间任何一个节点,出现了问题都会导致丢包。
因此网络传输中都会有概率出现丢包。

丢包:设备间进行传输的数据包,丢失了一部分或全部丢失都叫做丢包。

以下两种丢包情况会触发超时重传机制:
1️⃣

客户端发送的数据丢失,
服务器没有收到数据,不会返回ACK

在这里插入图片描述
2️⃣

服务器收到数据,但是返回的ACK丢包了。

在这里插入图片描述


这两种情况下,客户端向服务器发送数据,客户端会等待一段时间(TCP为了保证无论在任何环境下都能比较高性能的通信,因此会动态计算这个最大超时时间) 如果一段时间后没有收到应答报文ACK ,发送方就视为数据丢包,就会 触发超时重传机制:重新再发送一遍数据

如果是应答报文ACK丢包,也就是说接收方会重复收到两遍数据,不用担心,TCP已经帮我们处理好了。
TCP会在接收缓冲区中根据数据的序号自动去重,保证应用程序读不到重复数据。

当然了,重新传送的数据也有可能会再次丢包。一旦出现连续丢包,那么网络就出现了非常严重的问题。

TCP针对多次丢包的思路是:多次进行超时重传。
但是没进行一次超时重传,超时等待的时间都会变长(降低重传频率)。
连续多次重传仍无法收到ACK的话,TCP就会尝试重置连接(相当于重新连接),如果重置连接也失败,TCP就会断开连接,放弃通信。

总结

以上就是今天要讲的内容,本文分享了TCP协议中的三个安全机制,今天分享的内容大多是理论,希望大家可以细细品读,如果有哪里不理解,可以私信或评论区沟通。

路漫漫不止修身,也养性。

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

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

相关文章

【Ubuntu学习MySQL——安装MySQL】

首先得su,然后输入密码,进入到root模式下,以下命令均在root用户模式下进行 1.在这里我们使用RPM包来安装Mysql,所以首先安装RPM包 apt install rpm2.安装完RPM包之后,检测系统是否自带安装MySQL,如果没有…

部署Git服务器

哈喽,大家好,本次为大家演示如何部署git服务器. 首先要准备gitea和phpstudy_pro phpstudy一路nest即可,可以帮你安装mysql和阿帕奇。 登录127.0.0.1:3000注册gitea即可。 如何在上传公钥的时候出现500的错误,加入这句便可解决…

vue运行background-removal-js库

前段时间在github上有个能在浏览器扣图的js库蛮火https://github.com/imgly/background-removal-js 演示网站:demo 不仅仅能将人物主体扣出,还能处理动物、植物等 最近我萌发出在vue中运行这个库的想法,记录一下 下载、配置 首先当然是通…

【专题速递】音频生成、TTS和AIGC在音乐上的运用

// AIGC的发展为音频带来了什么?AIGC如何赋能音乐创作?如何识别虚假音频?TTS可以在哪种场景下解决特定问题?7月29日LiveVideoStackCon2023上海站音频新体验专场,为您解答。 音频新体验 随着多媒体和通信网络技术的不…

嵌入式开发--XW09A触摸芯片的使用

XW09A触摸芯片 XW09A是厦门市芯网电子科技有限公司出品的一颗触摸芯片,支持9键多点触摸,I2C接口,带中断引脚。 以下摘抄自芯片手册 极高的灵敏度,可穿透13mm 的玻璃,感应到手指的触摸 超强的抗干扰和ESD 能力,不加任何…

Debian 11 x64 安装 MySQL 8.0.33

更新 sudo apt update sudo apt install gnupg安装 DEB Package wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.25-1_all.deb sudo dpkg -i mysql-apt-config_0.8.25-1_all.deb具体版本见官方网站:MySQL Community Downloads,这里仅以版本 …

AI 对抗超级细菌:麦克马斯特大学利用深度学习发现新型抗生素 abaucin

内容一览:鲍曼不动杆菌是一种常见的医院获得性革兰氏阴性病原体,通常表现出多重耐药性。利用传统方法,发现抑制此菌的新型抗生素很困难。但利用机器学习可以快速探索化学空间,从而增加发现新型抗菌分子的可能性。近期,…

Vue3 动态路由、动态组件使用示例

前期回顾 Vue3 TS Vite —— 大屏可视化 项目实战_vue3可视化大屏_彩色之外的博客-CSDN博客大屏可视化项目实战_vue3可视化大屏https://blog.csdn.net/m0_57904695/article/details/131014666?spm1001.2014.3001.5501 目录 👍 动态组件 👀 动态路…

Java支付SDK接口远程调试 - 支付宝沙箱环境【公网地址调试】

文章目录 1.测试环境2.本地配置3. 内网穿透3.1 下载安装cpolar内网穿透3.2 创建隧道 4. 测试公网访问5. 配置固定二级子域名5.1 保留一个二级子域名5.2 配置二级子域名 6. 使用固定二级子域名进行访问 转载自cpolar极点云文章:Java支付宝沙箱环境支付,SD…

解密Docker容器网络

一个Linux容器能看见的“网络栈”,被隔离在它自己的Network Namespace中。 1 “网络栈”的内容 网卡(Network Interface)回环设备(Loopback Device)路由表(Routing Table)iptables规则 对于一…

97、基于stm32单片机智能药箱药盒温湿度体温光照时钟wifi手机APP监控(程序+原理图+PCB源文件+手机APP源码+硬件设计资料+元器件清单等)

单片机类型选择 方案一:可以使用现在比较主流的单片机STC89C5单片机进行数据处理。这款单片机具有的特点是内存和51的单片机相比多了4KB内存,但是价格和51单片机一样。并且支持数据串行下载和调试助手。此款单片机是有ATMEL公司生产,可用5V电…

详细解释lvs的工作原理

vsl用于集群中的直接路由它的原理如下 如果在公司并发太高了怎么解决 1.加配置cpu 内存 带宽 ssd高效硬盘 2.加服务器 为用户提供服务 横向扩展 集群是什么 由的多台主机构成,相当于一台大型计算机,只提供一个访问入口(域名与ip地址) 集群用在那个场景 高并发场景 vrrp是…