【网络】传输层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…...
Go语言SDK开发实战:为AI编程助手Cursor构建高效API客户端
1. 项目概述:一个为AI编程助手Cursor定制的Go语言SDK如果你和我一样,日常重度依赖Cursor这类AI编程助手来提升开发效率,同时又是个Go语言的忠实拥趸,那你肯定遇到过这样的场景:想用Go写个脚本,自动化处理一…...
AI量化交易实战:从机器学习模型到加密货币对冲基金系统构建
1. 项目概述:一个面向加密货币的AI对冲基金框架最近几年,AI在量化交易领域的应用已经从实验室走向了实战,尤其是在波动性极高的加密货币市场。如果你对量化交易和机器学习感兴趣,并且想找一个能直接上手、结构清晰的实战项目来学习…...
Pro Trinket:Arduino UNO的紧凑型替代方案与双模编程实战
1. Pro Trinket:当Arduino遇上“口袋工程学”如果你和我一样,在创客圈子里摸爬滚打多年,肯定经历过这样的场景:一个基于Arduino UNO的酷炫原型在面包板上运行得风生水起,但当你试图把它塞进一个精致的3D打印外壳&#…...
ComfyUI ControlNet Aux 终极指南:30+种预处理器让AI图像生成更精准
ComfyUI ControlNet Aux 终极指南:30种预处理器让AI图像生成更精准 【免费下载链接】comfyui_controlnet_aux ComfyUIs ControlNet Auxiliary Preprocessors 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux 想让您的AI图像生成具备真实…...
RTX 5090功耗600W:高功耗显卡的系统级挑战与实战装机指南
1. 项目概述:从一则功耗新闻到显卡生态的深度解构最近,一则关于英伟达下一代旗舰显卡RTX 5090功耗可能高达600W的消息,在硬件圈和AI计算领域激起了不小的波澜。对于普通玩家而言,这或许只是一个“电老虎”又升级了的谈资ÿ…...
DashClaw:模块化命令行工具的设计哲学与实战应用
1. 项目概述:一个为开发者打造的“瑞士军刀”式命令行工具最近在折腾一个自动化部署脚本时,遇到了一个老生常谈的问题:我需要从一堆杂乱的日志文件里,快速提取出特定时间段的错误信息,同时还要把这些信息按照严重程度分…...
量子纠错程序的形式化验证方法与工程实践
1. 量子纠错程序验证的核心挑战量子纠错(Quantum Error Correction, QEC)是量子计算实现实用化的关键技术屏障。与传统经典计算不同,量子系统面临着更为复杂的噪声环境:退相干、门操作误差、测量错误等量子特异性噪声会迅速破坏脆…...
2026年冰袋吸水粉厂家大揭秘:选择指南与行业趋势题
随着冷链物流行业的快速发展,冰袋吸水粉作为冷链运输中不可或缺的保冷材料,其市场需求持续增长。然而,市场上冰袋吸水粉的质量参差不齐,如何选择一家值得信赖的厂家成为许多采购商关注的重点。本文将从行业背景、技术特点及市场趋…...
告别手动点点点:用CAPL脚本实现CANoe诊断自动化测试(附VIN码读取与文件写入完整代码)
告别手动点点点:用CAPL脚本实现CANoe诊断自动化测试(附VIN码读取与文件写入完整代码) 在汽车电子测试领域,诊断功能验证是每个测试工程师的日常必修课。想象一下这样的场景:你需要反复验证几十个ECU的VIN码读取功能&am…...
Midjourney极简艺术风格实战手册(2024V6.2最新适配版):含17个已验证失效词黑名单与8组高通过率--sref权重组合
更多请点击: https://intelliparadigm.com 第一章:Midjourney极简艺术风格的核心定义与美学边界 极简艺术风格在 Midjourney 中并非单纯减少元素,而是通过语义压缩、形式提纯与负空间策略构建高度凝练的视觉语言。其核心在于以最少的视觉单元…...
