[网络][tcp协议]:tcp报头

tcp(传输控制协议)是一种面向字节流的传输层协议,相较于udp协议,tcp能保证传输数据的可靠性与准确性,tcp也是目前最常见的传输层协议

本文主要介绍tcp报头各个字段的含义与用途

注:保留6位和6位标记位是目前最普遍的写法,在我查资料时,发现有一些拓展情况,会在后文细说

最简单的两个字段,

  • 16位源端口号                                                                                                          即自身进程绑定的端口号
  • 16位目的端口号                                                                                                       即通信目标绑定的端口号

  两个与长度有关的

  • 四位首部长度                                                                                                           代表tcp报头长度,因为有选项的存在,tcp报头长度1不是固定的,1的首部长度代表4字节(1:4),4位首部长度最多是16,也就是说,tcp报头最多是64字节 
  • 16位窗口大小                                                                                                           代表接收方缓存区的大小,因为tcp的读写使用了文件流,当传输大量数据时,可能会把对方的文件缓冲区打满导致传输失败,tcp的解决方案是,双方在通信时提前告知对方自己的缓冲区大小,让对方选择适合的大小进行传递

两个序号

  • 32位序号                                                                                                                    tcp给每次发送的字节流的起的一个独一无二的序号,在实际情况中,tcp进行通信时会把大型文件拆成多个小字节包,每次发几个小包,这时序号就起到了一个保证可靠性和排序的作用,实际通信时,这个序号就是小字节包在大型文件的相对下标或者小文件包对应的指针
  • 32位应答序号                                                                                                             上一次收到的序号+1;tcp为了保证传输可靠性,会在每一次收到请求后先返回一个应答,表示我收到了。应答报头会把请求报头的序号+1作为自己的应答序号;相当于告诉请求方,我收到了应答序号之前的数据

tcp为了减轻网络负担,有时会应答和请求一块发

保留六位+六位标记位

  • 六位标记位代表                                                                                                             当前报头的具体类型,以下是ai生成的具体六位
    • URG(Urgent):紧急位,当URG=1时,表示该报文段包含紧急数据,需要优先处理。紧急指针字段在此标志位为1时才有效。
    • ACK(Acknowledgement):确认位,当ACK=1时,表示确认号字段有效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。
    • PSH(Push):推送位,当PSH=1时,提示接收端应用程序立刻从TCP缓冲区把数据读走,而不是等到缓冲区满了再向上层传递。
    • RST(Reset):重置连接位,当RST=1时,表示TCP连接出现了严重错误,必须释放连接,然后再重新建立连接。
    • SYN(Synchronize):同步位,用于建立连接。
    • FIN(Finish):结束位,标记数据是否发送完毕。当FIN=1时,表示数据已经发送完成,可以释放连接
  • 保留6位                                                                                                                          可以理解为当初指定协议时,制作者认为6位标记位可能不够,未来可能会有一些新的,如今已经有3位在部分时候被使用
    • 扩展控制标志:随着网络通信的复杂性增加,可能需要引入新的控制标志来支持额外的协议行为。例如,某些实验性协议可能会利用这些保留位来实现新的连接管理机制。

    • 协议扩展:保留位可以用于支持TCP协议的扩展,例如在某些特殊场景下,用于标记报文段的优先级或特殊处理需求。

    • 未来协议兼容性:保留位的存在为未来协议的扩展提供了灵活性,使得TCP能够在不完全重新设计协议的情况下引入新特性。

  • 4位首部长度                                                                                                                 代表整个报头长度,1代表有4字节,tcp报头最长为64字节,4位首部长度最小为5

  • 16位窗口大小                                                                                                               代表我方网络可接受的一个适宜的文件大小

  • 16位校验和                                                                                                                   用于检测数据是否有误(不需要关心)

  • 16位紧急指针                                                                                                               用于描述当前文件的紧急行(不需要关心)

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

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

相关文章

【虚幻C++笔记】引擎源码下载及编译步骤

目录 1.在GitHub上访问虚幻引擎源代码2.安装Visual Studio 20223.解压完成以后,打开源码的根目录,选择Setup.bat运行4.选择GenerateProjectFiles.bat运行,生成uE5.sln文件,点击这个文件打开项目5.设置编译的选项,选择DevelopmentE…

【数学建模】层次分析法(AHP)详解及其应用

层次分析法(AHP)详解及其应用 引言 在现实生活和工作中,我们经常面临复杂的决策问题,这些问题通常涉及多个评价准则,且各准则之间可能存在相互影响。如何在这些复杂因素中做出合理的决策?层次分析法(Analytic Hierarchy Process…

科普:为何要对特征进行分箱?

一、为何要对特征进行分箱? 分箱(Binning)是将连续型或离散型特征转化为区间型变量的过程,其核心目标是提升模型效果和解释性,具体原因如下: 1. 业务需求 可解释性:将特征转化为业务可理解的…

理解langgraph工作流的驱动逻辑,以适应langgraph工作流模式的编程。

langgraph的工作流模式虽然方便直观,但习惯了普通函数式编程的数据流处理。刚开始接触时,确实容易试图用函数式编程的思维去适配它,特别是langgraph数据传递由状态字典管理,而非函数返回值,导致代码不够自然&#xff0…

线性dp(数字三角形,LIS,LCS,LCIS)

文章目录 线性dp数字三角形题目思路 LIS(最长上升子序列)代码(n^2)二分优化(nlogn) LCS(最长公共子序列)代码 LCS——>>LIS思路代码 最长公共子串最长公共上升子序列(LCIS) 线…

Spring Validation参数校验

Spring Validation是Spring框架中用于数据校验的核心模块&#xff0c;通过注解简化数据校验逻辑。 1. 依赖引入&#xff08;SpringBoot项目&#xff09; Spring Boot项目&#xff1a;自动包含spring-boot-starter-validation <dependency><groupId>org.springfra…

《AI大模型趣味实战》No2 : 快速搭建一个漂亮的AI家庭网站-相册/时间线/日历/多用户/个性化配色(中)

快速搭建一个漂亮的AI家庭网站-相册/时间线/日历/多用户/个性化配色(中) 摘要 在上一篇文章中&#xff0c;我们介绍了如何搭建一个基础的家庭网站&#xff08;V1.0版本&#xff09;&#xff0c;包含了用户管理、相册管理、时间线和日历等功能。本文将继续深入&#xff0c;详细…

pythonSTL---sys

sys 是 Python 标准库中的一个内置模块&#xff0c;它提供了许多与 Python 解释器和系统环境进行交互的功能。 sys方法 1. 导入 sys 模块 在使用 sys 库的功能之前&#xff0c;需要先导入它&#xff1a; import sys2. 命令行参数 (sys.argv) sys.argv 是一个包含命令行参数…

软件需求分类、需求获取(高软46)

系列文章目录 软件需求分类&#xff0c;需求获取 文章目录 系列文章目录前言一、软件需求二、获取需求三、真题总结 前言 本节讲明软件需求分类、需求获取的相关知识。 一、软件需求 二、获取需求 三、真题 总结 就是高软笔记&#xff0c;大佬请略过&#xff01;

Zabbix7.0+DeepSeek大模型实现人工智能告警分析

一、方案概述 本方案基于Zabbix7.0监控系统,通过底层webhook脚本机制集成Deepseek做故障分析提供解决方案,构建智能化运维体系。 其核心架构包括: Zabbix监控平台:负责实时监控和告警触发 Webhook接口:实现告警信息的传递 Deepseek AI平台:提供故障智能分析能力 二、…

CPU相关:实时cpu信息接口

[rootxxx ~]# cat /proc/cpuinfo #通过实时cpu信息接口查看cpu信息

Certbot实现SSL免费证书自动续签(CentOS 7版 + Docker部署的nginx)

前置安装&#xff0c;可参考Certbot实现SSL免费证书自动续签&#xff08;CentOS 7 nginx/apache&#xff09; 如果是通过 Docker 运行 Nginx&#xff0c; certbot 无法直接检测到本地的 Nginx 配置。解决方案是 使用 standalone 模式 或 挂载 Webroot 方式获取 SSL 证书&…

A SURVEY ON POST-TRAINING OF LARGE LANGUAGE MODELS——大型语言模型的训练后优化综述——第2部分

3、微调&#xff08;上一部分内容&#xff09; 4、LLMs的对齐 大型语言模型&#xff08;LLMs&#xff09;中的对齐涉及引导模型输出以符合人类预期和偏好&#xff0c;特别是在安全关键或用户面对的应用程序中。本章讨论了实现对齐的三个主要范式&#xff1a; 带有反馈的人工…

热key探测技术架构设计与实践

参考&#xff1a; 得物热点探测技术架构设计与实践 Redis数据倾斜与JD开源hotkey源码分析揭秘 京东热点检测 HotKey 学习笔记 hotkey: 京东App后台中间件&#xff0c;毫秒级探测热点数据&#xff0c;毫秒级推送至服务器集群内存&#xff0c;大幅降低热key对数据层查询压力 …

Windows 环境图形化安装 Oracle 23ai

文章目录 Windows 环境安装23ai下载Oracle 23ai安装包安装安装详细图形界面连接Oracle 23ai 安装过程中遇到的错误安装过其他版本数据库&#xff0c;设置了ORACLE_HOME或 TNS_ADMIN解决方法 无法访问Windows Installer Serviece (error 1719)解决方法 其他注意 参考&#xff1a…

RabbitMQ支持的复杂的消息交换模式

RabbitMQ支持多种复杂的消息交换模式&#xff0c;这些模式通过不同的交换机类型和队列特性实现&#xff0c;能够满足多样化的业务需求。以下是RabbitMQ支持的主要复杂消息交换模式&#xff1a; 1. Direct Exchange&#xff08;直连交换机&#xff09; 直连交换机根据消息的路由…

基于SpringBoot3+Druid数据库连接池与外部PostgreSQL的Kubernetes Pod YAML全解析

说明 一个基于Spring Boot 3 Druid 外部PostgreSQL的Kubernetes Pod YAML详细解析&#xff0c;包含最佳实践和关键配置说明&#xff1a; YAML apiVersion: apps/v1 kind: Deployment metadata:name: springboot-applabels:app: springboot-app spec:replicas: 2selector:ma…

Android 全局工具类 AppHolder:高效管理 Application 和 Activity

引言 介绍 AppHolder 的作用&#xff1a;全局管理 Application 和 Activity&#xff0c;简化开发。适用场景&#xff1a;需要全局上下文和生命周期管理的场景。 功能特性 全局上下文管理。Activity 生命周期监听。Fragment 生命周期监听&#xff08;可选&#xff09;。应用状态…

PyTorch 深度学习实战(14):Deep Deterministic Policy Gradient (DDPG) 算法

在上一篇文章中&#xff0c;我们介绍了 Proximal Policy Optimization (PPO) 算法&#xff0c;并使用它解决了 CartPole 问题。本文将深入探讨 Deep Deterministic Policy Gradient (DDPG) 算法&#xff0c;这是一种用于连续动作空间的强化学习算法。我们将使用 PyTorch 实现 D…

【深度学习与大模型基础】第5章-线性相关与生成子空间

线性相关是指一组向量中&#xff0c;至少有一个向量可以表示为其他向量的线性组合。具体来说&#xff0c;对于向量组 v1,v2,…,vn&#xff0c;如果存在不全为零的标量 c1,c2,…,cn使得&#xff1a; c1v1c2v2…cnvn0 则称这些向量线性相关。否则&#xff0c;它们线性无关。 举…