HCIP的学习(2)

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.mfbz.cn/a/468613.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kafka2.x版本配置SSL进行加密和身份验证

背景:找了一圈资料,都是东讲讲西讲讲,最后我还没搞好,最终决定参考官网说明。 官网指导手册地址:Apache Kafka 先只看SSL安全机制方式。 Apache Kafka 允许客户端通过 SSL 进行连接。默认情况下,SSL 处于…

婴儿专用洗衣机哪个牌子比较好?热诚安利五大出类拔萃婴儿洗衣机

婴儿洗衣机可以用于单独清洗宝宝的衣物,可以有效避免了与大人衣物一起混洗带来的细菌交叉感染。毕竟,在婴儿吃奶或者接触其他材料时,其抵抗力是比较弱的,再加上普通洗衣机无法对婴儿的衣物进行有效的消毒处理,轻则会对…

SpringCache和redis区别?什么是SpringCache?

目录 一、Redis介绍1.1 Redis缓存1.2 redis缓存使用前提1.3 redis使用缓存的时机 二、实际操作案例2.1 常规准备工作2.2 引入配置redis2.2.1 引入redis的启动依赖2.2.2 在application.yml里面配置redis的地址信息等2.2.3 创建redisTemplate的配置类,指定键值序列化方…

探索区块链世界:从加密货币到去中心化应用

相信提到区块链,很多人会想到比特币这样的加密货币,但实际上,区块链技术远不止于此,它正在深刻地改变我们的生活和商业。 首先,让我们来简单了解一下什么是区块链。区块链是一种分布式数据库技术,它通过将…

Linux docker1--环境及docker安装

一、基础环境要求 Docker分为ce版本(免费,试用7个月)和ee版本(收费)。 最低配置要求:64位操作系统,centOS 7及以上,内核版本不低于3.10 二、部署docker 1、查看服务的基础环境是否满…

MVC接收请求教程

mvc接收各种请求 1-环境搭建 1.1-准备apifox发送请求 1.2-项目搭建 ①创建Web骨架的Maven项目 ​ --打开2023-IDEA ,选择New Project ​ --选择Maven Archetype ​ --注意点:Catalog默认就行了 ​ --Archetype选择webapp ​ --JDK跟着黑马敲最好…

情感书单图片怎么制作?书单制作教程分享

情感书单图片怎么制作?情感书单图片制作是一项富有创意和挑战性的任务,它要求我们不仅要有对书籍的热爱,还要有一定的审美和设计能力。幸运的是,现在市面上有许多专业的软件可以帮助我们实现这一目标,让情感书单图片的…

好书推荐 《ARM汇编与逆向工程 蓝狐卷 基础知识》

《ARM 汇编与逆向工程 蓝狐卷 基础知识》 与传统的 CISC(Complex Instruction Set Computer,复杂指令集计算机)架构相比,Arm 架构的指令集更加简洁明了,指令执行效率更高,能够在更低的功耗下完成同样的计…

并发编程Semaphore(信号量)浅析

目录 一、简介二、API三、使用3.1 demo13.1 demo2 四、适用场景 一、简介 Semaphore(信号量)是 Java 中用于控制同时访问特定资源的线程数量的工具类。Semaphore 维护了一组许可证,线程在访问资源之前必须先获取许可证,访问完毕后…

【ADF4351】使用FPGA进行SPI寄存器配置、使用FPGA计算各个频率的频点,ADF4351配置程序

简介 特性 输出频率范围:35 MHz至4,400 MHz 小数N分频频率合成器和整数N分频频率合成器 具有低相位噪声的VCO 可编程的1/2/4/8/16/32/64分频输出 典型抖动:0.3 ps rms EVM(典型值,2.1 GHz): 0.4% 电源:3.0 V至3.6 V …

Acwing.2060 奶牛选美(DFS)

题目 听说最近两斑点的奶牛最受欢迎,约翰立即购进了一批两斑点牛。 不幸的是,时尚潮流往往变化很快,当前最受欢迎的牛变成了一斑点牛。 约翰希望通过给每头奶牛涂色,使得它们身上的两个斑点能够合为一个斑点,让它们…

构建卓越数据应用体系,释放企业数据资产的最大价值

随着数字化浪潮的汹涌而至,数据已经成为驱动社会发展的重要资源。在这个信息爆炸的时代,如何有效地收集、管理、分析和应用数据,成为摆在我们面前的一大挑战。数据应用体系的建设,不仅关乎企业竞争力的提升,更是推动整…

前端模块化开发

模块化发展历程 一个模块单独抽离成一个文件,(缺点: 命名冲突,全靠约定)命名空间的方式,导出一个对象(确定:命名冲突还是存在,可在外部修改,没解决依赖关系的…

fastadmin实验教学管理最近新增功能的技术盘点

在与用户交流中,发现了有些功能不够便捷,特抽出时间优化了一下 一键锁定 优化背景:先通过实验日期或实验名称先搜索,然后选中对应的复选框,再点击“锁定”,这样容易漏选或错选 1.工具栏新增自定义按钮“一…

目标检测——PP-YOLOv2算法解读

PP-YOLO系列,均是基于百度自研PaddlePaddle深度学习框架发布的算法,2020年基于YOLOv3改进发布PP-YOLO,2021年发布PP-YOLOv2和移动端检测算法PP-PicoDet,2022年发布PP-YOLOE和PP-YOLOE-R。由于均是一个系列,所以放一起解…

面向未来的前沿人工智能监管

策制定者应该为未来十年人工智能系统更加强大的世界做好准备。这些发展可能会在人工智能科学没有根本性突破的情况下发生,只需扩展当今的技术以在更多数据和计算上训练更大的模型即可。 用于训练前沿人工智能模型的计算量在未来十年可能会显着增加。到 2020 年代末…

Linux初识环境变量

🌎环境变量【上】 文章目录: 环境变量 什么是环境变量 关于命令行参数 环境变量       简单了解       为什么需要环境变量       系统中其他环境变量 总结 前言: 环境变量是一种非常重要的概念,它们对于系统的…

springboot酒店管理系统 论文【源码】

springboot酒店管理系统开发说明 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件&#xff1…

路由器级联

目录 一、实现功能二、实现步骤2.1 接线步骤 三、效果3.1 常规连接3.2 路由器级联 一、实现功能 主路由器:可有WiFi功能,LAN口下接各设备,并接一个辅路由器辅路由器:开启WiFi功能,有线或无线下接各设备功能&#xff1…

长安链正式发布三周年,技术更迭支撑产业变革

导语: 2024年1月27日长安链正式发布三周年,开源社区借开年之际与大家一同回顾长安链三年来的技术发展历程,每一个里程碑的建设都得益于与长安链同行的合作伙伴与开发者,希望在2024年可以共同携手继往开来,为数字经济发…
最新文章