TCP报文结构、确认应答机制、超时重传机制、连接管理机制

news2025/2/3 20:55:02

TCP报文结构、确认应答机制、超时重传机制、连接管理机制

  • 一、TCP报文结构
  • 二、确认应答机制
  • 三、超时重传机制
  • 四、连接管理机制
    • 4.1 三次握手建立连接
    • 4.2 四次挥手断开连接

一、TCP报文结构

在这里插入图片描述
可靠传输是TCP中最最核心的特性!!!

上篇博客我们已经介绍过了UDP报文结构:UDP的报文结构和注意事项

而TCP的报文结构更为复杂:(实际上仍然是依次顺序排列的)
在这里插入图片描述

二、确认应答机制

拿"我"和"女神"来举例子~~
在这里插入图片描述

回复的"好啊好啊"就是"确认报文",也称为ACK报文 ack => acknowledge (应答)
在这里插入图片描述

而有时可能会出现"后发先至"的情况:
在这里插入图片描述

一旦出现这个情况,"我"的理解就出现差异了!
解决方案:针对请求和应答报文进行编号~
在这里插入图片描述

TCP是字节流的协议,编号的时候也是以字节为单位进行编号的!
在这里插入图片描述
TCP将每个字节的数据都进行了编号,即为序列号。

在这里插入图片描述
每一个ACK都带有对应的确认序列号,意思是告诉发送者,我已经收到了哪些数据;下一次你从哪里开始发。

确认应答机制,就是TCP保证可靠性的最核心机制!!!

三、超时重传机制

确认应答机制描述的是数据报顺利到达对方,对方给了个响应。但是传输过程中可能会丢包,如果丢包又该如何?

为啥会"丢包"?
网络环境是非常复杂的,我能上网是因为我接入了运营商的网络。运营商这边就有很多很多的路由器/交换机,共同组建出一个非常庞大复杂的网络。某个交换机上面,不光是传输我的数据报,也在传输别人的数据报。
某个时刻,很多很多数据报都经过这个交换机,而交换机的转发能力不是无限的 (有上限),很多数据报都走这里导致达到交换机的转发上限,无法快捷地完成转发了,就可能会导致有一部分数据报就超时了!!!
就和大城市经常会堵车一样~~

在这里插入图片描述
过了一会,我这里仍然等不到女神的回复,我就认为之前发的消息丢了!于是我就重新再发一遍!!

在这里插入图片描述

站在概率论的角度来看:
假设单个报文丢包的概率是10% (极大的数字了),则连续两个报文丢包的概率为10%×10%=1%;假设单个报文丢包的概率是1%,连续两个报文丢包的概率0.01×0.01=0.0001,即万分之一 ~~

当然也可能是ACK丢包了:
在这里插入图片描述

站在发送者的角度,"我"只是没收到ACK,但无法区分是我发的数据丢了,还是ACK丢了,所以二者都需要进行重传!!!

在这里插入图片描述

但如果是ACK丢包了,此时重传后,接收方会收到两条重复的消息?
NO!TCP会针对相同的消息进行去重 (根据序号来去重即可)!! 保证了应用层代码通过socket读取数据的时候,读到的不是重复数据~~

在这里插入图片描述

四、连接管理机制

在正常情况下,TCP要经过三次握手 (本来是4次,但中间两次可以合并在一起) 建立连接,四次挥手断开连接!!

4.1 三次握手建立连接

在这里插入图片描述
通信双方,各自向对方申请,尝试和对方建立连接然后再各自给对方回应~~
建立连接的过程其实是四次的数据交互!

在这里插入图片描述

为啥要建立连接?建立连接的意义是什么??

  1. 投石问路。检查一下当前网络情况是否畅通!
    三次握手建立连接并不传输任何业务数据~~
  2. 检查通信双方的发送能力和接收能力是否都是正常的。
    举个例子:
    在这里插入图片描述
  3. 三次握手过程中,也是在协商一些重要的参数。
    举个例子,TCP的序号并非是从1开始的,通常都是建立连接的时候协商了一个数字。目的是保证两个连接的序号有差别!如果连接断开又快速重连,接收方就可以区分当前收到的数据是当前连接的还是上个连接的~~

在这里插入图片描述

4.2 四次挥手断开连接

通信双方各自向对方申请断开连接,再各自给对方回应。
在这里插入图片描述

在这里插入图片描述

ACK:确认报文段;
SYN:同步报文段;
FIN:结束报文段。

所以一般情况下断开连接不会合并为三次~~ (但TCP还有一个捎带应答机制,若触发可能合并为三次)

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

企事业单位如何做好服务器数据防泄露,防病毒工作

目前现状 无论是中小企业还是大型企事业单位,均有属于自己的内网或公有云服务器。这些服务器有的是专门的SVN、GIT代码服务器,有的是文档存储服务器,有的是应用服务器。服务器是企业的核心命脉,所有知识产权及多年心血都集中汇总…

【学习笔记】JDK源码学习之HashMap(附带面试题)

最近发布 AND 其他好文 :地址 什么是 HashMap ?它和 Map 之间又有什么样的关系呢?我们是否能拿它在并发中使用呢? 带着以上问题,让我们一同走入这让人着迷的 HashMap 。 1、什么是HashMap? HashMap 基于…

DOM算法系列005-获取给定节点所属的window对象

UID: 20221220091217 aliases: tags: source: cssclass: created: 2022-12-20 我们知道,在一个HTML页面中,可以包含很多个框架或框架集,那么,当给定一个节点,我们如何获取这个节点所属的window对象呢? 首先…

【填坑向】Linux获取Java程序resource下的文件路径(这次的坑好像没填住……

​╮( ̄▽ ̄"")╭没错,就是那个传说中的FileNotFoundException,文件找不到了 一开始,特别单纯的俺是把文件直接放在项目根目录的,获取文件地址的位置就只写了一个文件名(相对路径&…

Nature子刊:生命的最初几个小时内可快速学习音位辨别—基于fNIRS研究

摘要 人类新生儿可以区分音素,但这种能力背后的神经机制尚不清楚。新生儿的大脑可以学会区分自然(前)元音和逆向(后)元音(在子宫中学习不到的)。利用功能近红外光谱,我们检测了出生…

工控CTF之协议分析2——MMS

协议分析 流量分析 主要以工控流量和恶意流量为主,难度较低的题目主要考察Wireshark使用和找规律,难度较高的题目主要考察协议定义和特征 简单只能简单得干篇一律,难可以难得五花八门 常见的工控协议有:Modbus、MMS、MQTT、CoA…

关于3D可视化的几个知识点

3D可视化,运用三维仿真技术实现信息感知、智能调度以及主动式运营维护,把复杂抽象的数据信息,以合适的人们视觉元素及视角用3D立体方式进行一比一还原呈现! 近些年,将繁琐的信息通过可视化的图表视觉化展现出来的应用场…

惠普Elite蜻笔记本系统损坏怎么U盘重装教学

惠普Elite蜻笔记本系统损坏怎么U盘重装教学,有用户使用的惠普Elite蜻笔记本系统受到了其他恶意程序的损坏,导致无法正常的开启使用。所以想要去进行电脑系统的重装。那么如何U盘重装电脑系统,一起来看看详细的重装步骤吧。 准备工作&#xff…

有哪些实用的软件开发项目管理工具?

给大家介绍下,目前最新的免费项目管理工具,希望对大家有所帮助。 1、 Co-Project智能项目管理工具 智能项目管理平台,是CoCode旗下的软件开发全生命周期的项目管理平台,涵盖了从需求、计划、设计、开发、测试再到交付的整个项目周…

青少年关联网络功能地形的性别差异

我们发现了个性化联想网络功能地形的规范性性别差异,包括腹侧注意、默认模式和额顶网络。此外,染色体富集分析显示,功能地形多变量模式的性别差异在空间上与x连锁基因的表达以及星形细胞和兴奋性神经元细胞类型的特征相耦合。这些结果突出了性…

实景三维模型色彩差异大,用模方与DasViewer直接对模型调色

在实际项目生产过程中,由于受到采集天气、设备、时间、季节、航高等各类因素的影响,重建后的三维模型尤其是大面积模型中,纹理不可避免的出现明暗不一、颜色不均匀的现象,导致后期处理时间与成本增高,影响项目工期。 三…

Apache Flink

目录 处理无边界和有边界数据 数据可以作为无边界流或有边界流处理 随时随地部署应用程序 以任何规模运行应用程序 利用内存性能 Apache Flink 起源于一个叫作 Stratosphere 的项目,它是由 3 所地处柏林的大学和欧洲其他一些大学共同进行的研究项目&#xff0c…

[附源码]计算机毕业设计Node.js湖南旅游景点网站(程序+LW)

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

Java码客过去的一周年

入坑伊始 2021年12月20日 我本身就是一名计算机科学与技术的大学生,应该也算是行内的科班出身,但是在2021年12月20日之前,也就是离19届大学生考研差不多一年的时间,那时候有一周的SSM网站编程实训课程,惊讶的是虽然学…

别再用 JWT 作为 Session 系统了,问题重重,后果很危险!

SON Web Tokens,又称 JWT。本文将详解:为何 JWT 不适合存储 Session,以及 JWT 引发的安全隐患。望各位对JWT有更深的理解! 十分不幸,我发现越来越多的人开始推荐使用 JWT 管理网站的用户会话(Session&…

从头到尾Spring概念,家族,核心技术使用,事务这一篇就够了!!!

目录 1.了解Spring家族 家族成员 Spring常用项目介绍 2.Spring Framework体系结构 概述 体系图 3.Spring框架提供的核心技术 IOC控制反转 1.IOC与Spring的关系 2.什么是Bean DI 依赖注入 IoC/DI技术实现 1.基于XML的实现 2.基于注解的实现 3.基于java的实现 AO…

【案例实践】InVEST实践与进阶及在生态系统服务供需、固碳、城市热岛、论文写作中的应用

【查看原文】InVEST实践与进阶及在生态系统服务供需、固碳、城市热岛、论文写作等实际项目中的具体应用 【专家】: 白老师(研究员):长期从事生态系统结构-格局-过程-功能-服务的变化与响应关系等研究工作;重点围绕生…

使用 .NET MAUI 开发 ChatGPT 客户端

最近 chatgpt 很火,由于网页版本限制了 ip,还得必须开代理,用起来比较麻烦,所以我尝试用 maui 开发一个聊天小应用,结合 chatgpt 的开放 api 来实现(很多客户端使用网页版本接口用 cookie 的方式&#xff0…

含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入)

所谓文无第一,武无第二,云原生人工智能技术目前呈现三足鼎立的态势,微软,谷歌以及亚马逊三大巨头各擅胜场,不分伯仲,但目前微软Azure平台不仅仅只是一个PaaS平台,相比AWS,以及GAE&am…

【云原生】k8s的pod基础

内容预知 1.pod的相关知识 1.1 pod的基础概念 1.2 k8s中pod的两种使用方式 1.3 pod 容器的常规使用流程 1.4 k8s中pod结构设计的巧妙用意 通常把Pod分为两类 2. 容器的分类 2.1 pause基础容器(infrastructure container) (1&#xf…