HCIP的学习(2)

news2025/2/27 8:20:57

TCP----传输控制协议

是一种面向连接的可靠传输协议
注:与我之前博客HCIA的学习(2)结合一起看

面向连接:数据传输前收发双方建立一条逻辑通路

特点:

  • TCP是一种面向连接的传输协议
  • 每一条TCP连接有且只能存在两个端点,形成一种端到端的连接形式。
  • 可靠、有序、无丢失和无重复
  • TCP是提供全双工通讯。
    • 发送缓存
      • 想要发送的应用层数据
      • 已经发送但未收到确认的数据
    • 接收缓存
      • 按需到达但还未被应用程序提取的数据
      • 乱序到达的数据
  • TCP是面向字节流的。
源IP、源端口、目IP、目端口----->TCP会话的四元组信息。

套接字:IP:Port
TCP报文段

在这里插入图片描述

在这里插入图片描述

确认序列号表明是接收方期望收到发送方发送的下一个字节的序号;且表示之前的所有数据均已接收。–>累积确认

ACK确认位:当ACK=1时,确认序列号有意义。在连接建立后所有传输的报文段都必须将该标记位置为1。
SYN同步位:代表连接请求。
FIN终止位:表明此报文段发送方数据已发送完毕,要求释放连接。

RST复位:当TCP连接出现严重错误时,必须释放连接,然后重新建立传输连接。
URG紧急位:当URG=1时,表明此报文段中存在紧急数据,是高优先级数据,应尽快传输给应用层程序处理,不再缓存在排队。配合紧急指针使用。
PSH推送位:当PSH=1时,接收方应尽快交付数据给应用层程序,不再等待缓存填满再向上交付。

在这里插入图片描述

TCP的可靠性

排序机制
MTU---最大传输单元(数据帧,二层,协商在数据链路层)
MSS---最大段长度----TCP分段--->该参数是需要在TCP建立握手过程中通过前两次SYN报文段来进行协商确定。(可选项字段。)

如果在本地进行了分段操作,则不需要进行分片操作

确认机制和重传机制
RTT---往返时间
RTO---超时重传时间;略大于RTT时间--->动态变化的数值。加倍的形式进行变化(可能服务器资源紧缺,避免资源加剧)。

超时重传—快速重传

在快速重传机制中,并不是因为RTO时间到达从而触发重传机制,该重传机制是根据对端的反馈信息进行重传,当连续3次收到相同的ACK报文时,发送端会重传数据。这3个连续的ACK报文被称为冗余ACK

累积确认----选择确认

确认报文在TCP可选项里携带未接收到的数据信息(例:1000-1999缺失)

选择确认机制也是需要进行协商的。不协商默认累计确认,现在大部分电脑携带选择确认机制。

流控—流量控制机制
窗口:指定的是无需等待确认应答,而可以继续发送数据包的最大值。

窗口大小体现在缓存区的大小

TCP要求发送方依据接收窗口rwnd来控制数据的发送量。rwnd等于接收方接收缓存大小减去已存数据量大小。即rwnd变量是可变的。

在这里插入图片描述

TCP面向连接
TCP连接的建立
TCP连接建立需要解决的问题:
1、要使双方均知晓对方的套接字信息。
2、允许双方进行参数协商(MSS、窗口值、是否使用选择确认机制)
3、给各设备进行资源分配

在这里插入图片描述

CLOSED:关闭状态

LISTEN:监听状态

SYN-SENT:同步已发送状态

SYN-RCVD:同步已接收状态

ESTABLISHED:连接已建立状态

  1. 服务器先分配接收缓存空间(服务器状态:CLOSED---->LISTEN)
  2. 客户端建立接收缓存空间,然后发送请求建立连接,同时将接收缓存空间大小发送出去(客户端状态:CLOSED—>SYN-SENT)
  3. 接收到报文,建立发送缓存空间
  4. 服务器发送确认报文并请求建立连接(携带接收缓存空间大小)(全双工通讯)(服务器状态:LISTEN—>SYN-RCVD)
  5. 客户端接受到报文,同时建立发送缓存空间(客户端状态:SYN-SENT—>ESTABLISHED)
  6. 客户端发送确认报文,并且可以携带数据,服务器接受到(服务器状态:SYN-RCVD—>ESTABLISHED)

序列号:seq=x,y

x,y:随机生成

  • 42亿序列号可能用完(序列号=初始+数据大小(以字节为单位:1T>>42亿字节))
  • 为了安全,如果一个固定序列号,那任意机器获取其中一个数据,得到数据大小,然后用固定序列号+数据大小伪造信息,如断开连接等等
  • 循环使用:用四元组信息加一个随机因子进行md5计算得出随机值

数据错乱(序号回绕):例如客户端发送序列号为A的报文并进行超时重传,但A报文并未丢失,直到客户端发送一轮循环(A–>Z–>A),要发新一轮A时,之前的A报文抢先新A报文发送到服务器,会导致正常报文(新A)被服务器丢弃,接收伪(错误)报文(旧A),严重会导致计算机宕机

解决方法:在TCP首部里的选项里加一个时间戳(例:服务器发送报文里携带上一个客户端报文发送的时间和这个报文发送的时间,客户端接收报文时会查看报文里携带的上一个客户端报文发送的时间,如果与客户端现在的时间相差过大就会认为此报文为无效报文丢弃)

RTT就是根据时间戳算出来的,(动态变化)网络波动小,RTT小

**TCP的保活计时器:**2h(当第三次握手报文发出后,客户端挂了,服务器的保持连接时间,如果在时间内客户端回复,即继续用这个连接,如果2h服务器未收到客户端的信息,服务器则发送10次探测报文,如果客户端回复,则保持连接,未收到回复则断开连接)

同步申请建立连接:
在这里插入图片描述

TCP连接释放
1、对双方各自资源的释放过程
2、任何一方都可以在数据传输结束后发送连接释放通知

在这里插入图片描述

ESTABLISHED:连接已建立状态

FIN-WAIT-1:终止等待1状态

CLOSE-WAIT:关闭等待状态

FIN-WAIT-2:终止等待2状态

LAST-ACK:最后确认状态

TIME-WWAIT:时间等待状态

CLOSED:关闭状态

MSL:最大报文段寿命,即一个报文段在网络中能传输的最大时间(2min)

  1. 客户端发送FIN和ACK报文(客户端状态:ESTABLISHED—>FIN-WAIT-1)
  2. 服务器接收到并发送ACK报文(服务器状态:ESTABLISHED—>CLOSE-WAIT)此时进入半关闭状态,时间较长,因为中间服务器还有数据要传输
  3. 客户端接收到ACK报文(客户端状态:FIN-WAIT-1—>FIN-WAIT-2)
  4. 服务器发送FIN和ACK报文(服务器状态:CLOSE-WAIT—>LAST-ACK)
  5. 客户端接收到FIN和ACK报文并发送ACK报文(客户端状态:FIN-WAIT-2—>TIME-WWAIT)
  6. 服务器接收到ACK报文(服务器状态:LAST-ACK—>CLOSED)
  7. 客户端进入TIME-WWAIT状态,需等待2MSL后,中间客户端未接收到任何服务器发送的报文,即进入CLOSED状态

多次u+1:TCP过程中若不携带数据,相当于一个报文

**TCP延迟确认机制:**当服务器与客户端同时没有数据发送时,让服务器发送的第一个报文等待服务器将发送缓存释放的时间,与第二个报文一起发送(机制开启才可以同时释放,也是数据报文和确认报文合并的原因)

同步申请释放连接:
在这里插入图片描述

CLOSING:同时关闭状态

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

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

相关文章

(德迅零域)微隔离安全平台是什么,有什么作用?

网络隔离并不是新的概念,而微隔离技术(Micro-Segmentation)是VMware在应对虚拟化隔离技术时提出来的,但真正让微隔离备受大家关注是从2016年起连续3年微隔离技术都进入Gartner年度安全技术榜单开始。在2016年的Gartner安全与风险管…

动态规划(算法竞赛、蓝桥杯)--单调队列优化修建草坪

1、B站视频链接&#xff1a;E44 单调队列优化DP 修剪草坪_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; typedef long long LL; const int N1e510; int n,k,q[N]; LL w[N],f[N],sum;int main(){cin>>n>>k; k; //for(int i1;i<n;i){ci…

用python模拟天体运动(二体运动与天体轨道稳定问题)

目录 1. 模拟天体运动的代码 2. 运行效果 3. 非平方反比(轨道稳定性问题) 1. 模拟天体运动的代码 接下来我们将用python模拟实现天体运动 以下是我们所需要的库&#xff1a; import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy …

如何视频转文字?试试这三款工具!

随着信息化时代的来临&#xff0c;视频内容愈发丰富多样&#xff0c;但如何从海量的视频中快速提取出关键信息呢&#xff1f;视频转文字工具应运而生&#xff0c;它们能够帮助我们高效地将视频内容转化为可编辑的文字形式。那么&#xff0c;在众多的视频转文字工具中&#xff0…

科学计算免费课程集锦

《计算材料学》&#xff08;2023秋&#xff09;点击学习 计算材料学是一门新兴的、发展迅速的综合性基础科学。特别是原子层面上的微观模拟&#xff0c;已经构成了相当丰富的理论体系&#xff0c;为解决复杂材料体系规律、性质的研究提供了重要手段。在这样的学科发展背景下&a…

【Vue3】走进Pinia,学习Pinia,使用Pinia

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

基于GEC6818的QT开发之——通过不同按键控制DHT11模块的数据采集与动态显示

基于GEC6818的QT开发之——通过不同按键控制DHT11模块的数据采集与动态显示 使用环境: ubantu16 QT5.7 开发板GEC6818 实现要求&#xff1a; 利用A53按键1、按键2与温湿度传感器完成QT界面动态显示温湿度记录&#xff0c;并指定温湿度记录超过指定范围&#xff0c;进行报警&…

十四届蓝桥杯 BC A.日期统计

思路&#xff1a; 循环2023的每一天&#xff0c;一共八位数&#xff1b;年份是确定的&#xff0c;只需要循环月份和天数&#xff0c;注意这里已知2023的2月份天数为28天。用b数组 int b[8]{2,0,2,3,month/10,month%10,d/10,d%10};//枚举2023的每一天来和已知数据的八位数字比较…

ESP32蓝牙系列二:协议和规范

本文以ESP32的API接口对GAP GATT ATT再做分析 一、GAP ESP32 BLE 通⽤用访问规范 (GAP) 接口 API 的实现和使⽤用流程&#xff0c; GAP 协议层定义了了 BLE 设备的发现流程&#xff0c;设备管理理和设备连接的建立。 BLE GAP 协议层采⽤用 API 调⽤和事件 (Event) 返回的设计…

从零开始学习在VUE3中使用canvas(四):globalAlpha(全局透明度)

一、简介 在canvas中&#xff0c;我们可以使用下面的方式设置全局透明度&#xff1a; const ctx canvas.getContext("2d");ctx.globalAlpha 0.5; 当然&#xff0c;在设置透明度的时候也可以直接填充带透明度的颜色 ctx.fillStyle "rgba(175, 20, 184, 0.5…

白酒:新型酶制剂在酿造过程中的作用与应用

随着生物技术的不断发展&#xff0c;新型酶制剂在许多领域都得到了广泛的应用。在豪迈白酒的酿造过程中&#xff0c;新型酶制剂也发挥了重要作用。云仓酒庄紧跟科技前沿&#xff0c;积极探索新型酶制剂在酿造过程中的应用&#xff0c;以提高产品质量和生产效率。 首先&#xff…

YOLOV4-车道线检测-车距离预测

1.前言 最近在看华为的CANN框架&#xff0c;发现了一些很有意思的开源算法(本文所有的代码都出自华为开源git发布的代码)&#xff0c;华为最近出了AI PRO开发板&#xff0c;想着现在开发板上用用(不想重新配置环境了&#xff0c;麻烦还累)&#xff0c;看着代码有onnx的模型&…

《深入Linux内核架构》第2章 进程管理和调度 (3)

目录 2.5 调度器的实现 2.5.1 概观 2.5.2 数据结构 2.5.3 处理优先级 2.5.3.1 nice和prior 2.5.3.2 vruntime 2.5.3.3 weight权重 2.5.4 核心调度器 2.5 调度器的实现 调度器的任务&#xff1a; 1. 执行调度策略。 2. 执行上下文切换。 无论用户态抢占&#xff0c;还是…

Spring MVC入门(4)

请求 获取Cookie/Session 获取Cookie 传统方式: RequestMapping("/m11")public String method11(HttpServletRequest request, HttpServletResponse response) {//获取所有Cookie信息Cookie[] cookies request.getCookies();//打印Cookie信息StringBuilder build…

大数据主要技术

1.大数据文件系统&#xff1a; GFS(谷歌的分布式文件系统&#xff09; HDFS&#xff08;hadoop distrubuted file system&#xff09;分布式文件系统&#xff0c;衍生自GFS 2.大数据平台 MapReduce &#xff1a;谷歌的大数据处理平台&#xff0c;服务于搜索 Hadoop&#…

C#混淆心得

C#混淆心得 近期遇到混淆C#代码的需求&#xff0c;在网上找了很多办法&#xff0c;在此记录一下。 混淆的本质就是让代码变丑&#xff0c;让别人看不懂。 为什么要混淆&#xff1a; 1.保护核心代码 可以在一定程度上避免别人偷代码&#xff0c;从而保护重要的部分&#xf…

蓝桥杯单片机快速开发笔记——超声波测距

一、原理分析 超声波测距是一种常见的测距方法&#xff0c;其原理是利用超声波在空气中传播的速度恒定且较快的特性&#xff0c;通过发送超声波信号并接收回波&#xff0c;计算出物体与传感器之间的距离。以下是超声波测距的原理和应用&#xff1a; 原理&#xff1a; 发送超声…

Linux安装Mysql5.7数据库

一、前置条件 系统版本&#xff1a;Linux CentOS 7.5 MySQL版本&#xff1a;mysql5.7.31 二、操作步骤 2.1、关闭mysql服务 service mysqld stop 提示使用命令&#xff1a;systemctl stop mysqld.service 2.2、grep查找已安装的mysql服务 rpm -qa | grep -i mysql 2.3、卸载…

机器学习(1)机器学习的概念与应用领域

文章目录 一、前提二、机器学习的概念与应用领域1.认识①亚瑟•塞缪尔的定义②汤姆米切尔的定义 2.相关术语数据术语训练模型术语获得模型后术语 3.应用领域语音识别计算机视觉自然语言处理①自然语言分析②自然语言生成 大数据分析 一、前提 Python语言具有数量庞大且功能相对…

记录一次爬虫接单项目【采集国际淘宝数据】

1.背景 前几天接了一个爬虫的单子&#xff0c;上周六已经完成这个单子&#xff0c;也收到了酬劳&#xff08;数目还不错&#xff0c;哈哈哈&#xff0c;小喜了一下&#xff09;。这个项目大概我用了两天写完了&#xff08;空闲时间写的&#xff09;。 2.介绍 大概要采集的数据…