【网络】传输层TCP协议的报头和传输机制
目录
引言
报头和有效载荷
确认应答机制
捎带应答机制
超时重传机制
排序和去重
连接管理机制
个人主页:东洛的克莱斯韦克-CSDN博客

引言
TCP是传输层协议,全称传输控制协议。TCP报头中有丰富的字段以及协议本身会制定完善的策略来保证网络传输的可靠性。
TCP是全双工(可以同时读写)的,因为TCP协议维护了两块缓冲区,一个用来读,一个用来写。建立链接成功会返回给应用层文件描述符,应用层调用该文件描述符写入,数据就刷到写缓冲区,应用层调用该文件描述符读,就会从读缓冲区读取数据。

报头和有效载荷

数据部分称为有效载荷,剩下的称为报头。报头是结构化数据。
源/目的端口号: 表示数据是从哪个进程来, 到哪个进程去
标志位
确认应答机制

在网络通信中,主机A向主机B发消息,主机A不可能知道数据包是否到达了主机B。所以需要主机B向主机A应答,让主机A知道数据包并没有丢失。
需要通过应答来确保单方向上通信的可靠性,单方向是因为主机B不知道自己的应答是否丢失,如果主机B要确认自己的应答是否丢失就需要主机A再向主机B发送应答,这样的话就套娃了,所以没有完全可靠的通信,只能确保单方向上的通信。
捎带应答机制
捎带应答是指TCP发送方在发送数据包时,如果此时正好有确认消息(ACK)需要发送给接收方,则将确认消息捎带在数据包中一起发送,从而减少网络中的确认消息数量,提高网络利用率。这种策略通常建立在延时应答的基础上,因为延时应答使得发送方有机会在等待ACK的过程中积累更多的数据或确认消息进行合并发送。

超时重传机制
基于上述的应答机制可以再思考一下,主机A发出的数据包可能丢了,可能在某个路由下排队。对应的,主机B收到了数据包,那应答的数据包万一丢失了呢?
为了应对上述情况,TCP在发出一个数据包时,会设个时间,只要超出这个时间主机A都认为主机B没有收到数据包,会重新发送。

排序和去重
主机A可能向主机B发了很多数据包,由于网路问题,数据包到达主机B可能乱序了。认识了上述重传机制后主机A可能向主机B发送同样的数据包。那么主机B怎么做到排序和去重呢——TCP报头中的序列号。
连接管理机制
相关文章:
【网络】传输层TCP协议的报头和传输机制
目录 引言 报头和有效载荷 确认应答机制 捎带应答机制 超时重传机制 排序和去重 连接管理机制 个人主页:东洛的克莱斯韦克-CSDN博客 引言 TCP是传输层协议,全称传输控制协议。TCP报头中有丰富的字段以及协议本身会制定完善的策略来保证网络传输的…...
【活动报名】打造编程学习“知识宝库”:高效笔记记录与整理指南
如何高效记录并整理编程学习笔记? 在编程学习的旅程中,拥有一套高效的笔记记录和整理方法至关重要。以下将从三个方向为您详细介绍如何打造属于自己的编程学习“知识宝库”。 方向一:笔记工具选择 选择合适的笔记工具是高效记录编程学习笔记…...
使用Arduino IDE生成带有bootloader的烧录文件
使用Arduino IDE生成bin(烧录)文件 1、在“项目”中,选择“导出已编译的二进制文件” 2、在工程目录中,会出现“build”文件夹 3、在build文件夹中,有hex文件,以及包含bootloader的bin和hex文件 bin和h…...
搭建高可用OpenStack(Queen版)集群(九)之部署nova计算节点
一、搭建高可用OpenStack(Queen版)集群之部署计算节点 一、部署nova 1、安装nova-compute 在全部计算节点安装nova-compute服务 yum install python-openstackclient openstack-utils openstack-selinux -y yum install openstack-nova-compute -y 若yu…...
C# 字符串扩展方法
功能 1.判断一个字符串是否为null或者空字符串 2.判断一个字符串是否为null或者空白字符 3.判断一个字符串是否为数字 4.判断一个字符串是否为邮件 5.判断一个字符串是否为字母加数字 6.判断一个字符串是否为手机号码 7.判断一个字符串是否为电话号码 8.判断一个字符串是否为网…...
JookDB和MobaXterm下载安装使用
文章目录 1.使用背景2.MobaXterm的下载安装使用3.JooKDB的下载安装使用 1.使用背景 由于xshell和xftp等工具都是收费的,即使有破解版但是有的公司里不让用盗版的软件。可以使用MobaXterm来替代。 同理可使用JooKDB来代替收费的navicat 来连接数据库。 2.MobaXterm…...
Docker安装Nacos(详细教程)
Docker安装Nacos的步骤相对直接,但需要注意一些细节以确保安装成功。以下是一个详细的安装步骤指南: 1. 安装Docker 首先,确保你的系统中已经安装了Docker。如果尚未安装,你可以通过访问Docker的官方网站或使用包管理器…...
Pandas:提供了快速、灵活和表达式丰富的数据结构。
引言 Pandas是Python中最为广泛使用的数据分析和操作库之一,特别适用于处理结构化数据。该库的名称源自“Panel Data”的缩写,意为面板数据或多维数据。Pandas基于NumPy构建,继承了其高效的数组计算能力,并在此基础上进一步扩展&…...
强!小目标检测全新突破!检测速度快10倍,GPU使用减少73.4%
强!小目标检测全新突破,提出Mamba-in-Mamba结构,通过内外两层Mamba模块,同时提取全局和局部特征,实现了检测速度快10倍,GPU使用减少73.4%的显著效果! 【小目标检测】是近年来在深度…...
重修设计模式-创建型-原型模式
重修设计模式-创建型-原型模式 原型模式就是利用已有对象(原型)通过拷贝方式来创建对象的模式,达到节省对象创建时间的目的。适用于对象创建成本较大,且同一类的不同对象之间差别不大的场景。 比如一个对象中的数据需要经过复杂…...
S71200 - 编程 - 笔记
1 DEMO 1.1气阀控制 1.2 红绿灯 基于PLC红绿灯控制_哔哩哔哩_bilibili 2 介绍变量DB,M,I,Q的使用 在PLC编程中,通常会使用多种类型的变量来实现逻辑控制、数据存储和输入输出操作。以下是常见的PLC变量类型及其用途ÿ…...
【项目】畅聊天地博客测试报告
项目简介:本项目采用 SSM框架结合 Websocket 技术构建。用户通过简单的注册和登录即可进入聊天室,与其他在线用户实时交流。系统支持文字消息的快速发送和接收、消息实时推送,确保交流的及时性和流畅性。SSM 框架为项目提供了稳定的架构和高效…...
【Next】全局样式和局部样式
不同于 nuxt ,next 的样式绝大部分都需要手动导入。 全局样式 使用 sass 先安装 npm i sass -D 。 我们可以定义一个 styles 文件,存放全局样式。 variables.scss $fs30: 30px;mixin border() {border: 1px solid red; }main.scss use ./variables …...
关于Docker的详细介绍
Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖项打包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,实现虚拟化。以下是关于Docker的详细介绍: ### 一、Docker的定义 Docker是一…...
一台佳能G3811彩色喷墨打印机打印没颜色报5200的维修记录
一台佳能G3811彩色喷墨打印机,用户送修,称打印没有颜色,加电开机连电脑安驱动打印测试,确实没有颜色,于是清洗喷头结果打印机那个显示屏上 ,上来就报错P08,电脑提示5200; 话不多说,开始维修,仅记录当时的维修方法及步骤,其它未列出。。。 维修方法: 1、进维…...
【LeetCode】452.用最少数量的箭引发气球
能够找到问题的解法与把问题足够简化是天壤之别。比如我知道这题可以用贪心算法来解决,但是代码实现的过程中就走上了复杂的路,但是官方题解给的代码则相当简洁。这说明我思考的不够深入,导致化繁为简的能力不够强。 1. 题目 2. 分析 一道贪…...
网络安全流程规范文件解读(安全专业L1级)
技术能力项编号AQ-AQ-L1-02.01(安全维护作业计划执行能力) 课程目标: 通过学习课程,学员可以: 1.了解ZGYD网络安全流程规范 2.独立执行安全维护作业计划。 流程规范 一、《ZGYD远程接入安全管理办法》 二、《ZGYD网络运维账号口令管理办…...
Java、python、php版的邮件发送与过滤系统的设计与实现 (源码、调试、LW、开题、PPT)
💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…...
st算法求RMP
st算法(sparse_tabel)可以在O(N log N)的预处理后实现O(1)的查询效率。 rmq:Range Maximum (Minimum) Query的缩写,顾名思义是用来求某个区间内的最大值或最小值,通常用在需要多次询问一些区间的最值得问题中。 #inc…...
零基础学习Redis(1) -- Redis简介
Redis是一个在内存中存储数据的一个中间组件,可用作数据库或数据缓存,通常在分布式系统中使用 (不了解分布式? 点击传送) 1. Redis特性 在内存中存储数据,通过键值对的方法存储key为string,v…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
