【网络协议】TCP报文格式

1.源端口和目的端口

源端口字段占16比特,用来写入源端口号。源端口号用来标识发送该TCP报文段的应用进程。

目的端口字段占16比特,用来写入目的端口号。目的端口号用来标识接收该TCP报文段的应用进程。

2.序号

当序号增加到最后一个时,下一个序号又回到0。序号字段的值用来指出本TCP报文段数据载荷的第一个字节的序号。

3.确认序号

指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认。

只有当ACK置为1时,确认号字段才有效,ACK取值为0时,确认号字段无效。TCP规定:在TCP连接建立后所有传送的TCP报文段都必须把ACK置1。

4.首部长度

该字段以4字节为单位,用来指出TCP报文段的有效载荷部分的起始处距离TCP报文段的起始处有多远,这实际上指出了TCP报文段的首部长度。

5.保留字段

保留字段占6比特位,保留为今后使用,目前应置为0。

6.窗口字段

用来指出发送本报文段的一方的接收窗口的大小,即接收缓存的可用空间大小,这表征接收方的接受能力.可以使用接收方接受能力的大小来控制发送方的数据发送量,这就是所谓的流量控制.

7.校验和

检查整个TCP报文段在传输过程中是否出现了误码。

8.标志位

(1)SYN

同步标志位(SYN)用于TCP双方建立连接。

(1)当SYN=1且ACK=0时,表明这是一个TCP连接请求报文段。

(2)若对方同意建立连接,则应在响应的TCP报文段的首部中使SYN=1且ACK=1。

综上所述,SYN为1的报文段要么是一个连接请求报文段,要么是一个连接响应报文段。

(2)FIN

终止标志位(FIN)用于释放TCP连接。

当FIN=1时,表明此TCP报文段的发送方已经将全部数据发送完毕,现在要求释放TCP连接。

(3)RST

复位标志位(RST)用于复位TCP连接。

当RST=1时,表明TCP连接中出现严重差错(例如由于主机崩溃或其他原因),必须释放连接,然后再重新建立连接。

RST置1也可以拒绝一个非法的TCP报文段或拒绝打开一个TCP链接。

(4)PSH

推送标志位(PSH)用于提醒对方尽快将报文交付给应用层。

出于效率的考虑,TCP可能会延迟发送数据或向应用程序延迟交付数据,这样可以一次处理更多的数据(返回的ACK报文中窗口大小会更大)。但是当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。在这种情况下,应用程序可以通知TCP使用推送(PUSH)操作。

发送方TCP把PSH置为1,并立即创建一个TCP报文段发送出去,而不需要积累到足够多的数组在发送。

接收方TCP收到PSH为1的TCP报文段,就尽快交付给应用进程,而不再等到接收到足够多的数据在发送。

(5)ACK
只有当ACK置为1时,确认号字段才有效,ACK取值为0时,确认号字段无效。TCP规定:在TCP连接建立后所有传送的TCP报文段都必须把ACK置1。
(6)URG

当URG置为1时,紧急指针字段有效;当URG置为0时,紧急指针字段无效。

16位紧急指针以字节为单位,用来指明紧急数据的长度。

当发送方有紧急数据时,可将紧急数据“插队”到发送缓存的最前面,并立即封装到一个TCP报文段中进行发送。紧急指针会指出本报文段数据载荷部分包含了多长的紧急数据,紧急数据之后是普通数据。

接收方收到紧急标志位为1的TCP报文段,会按照紧急指针字段的值从报文段数据载荷中取出紧急数据并直接上交应用进程,而不必在接收缓存中排队。

9.选项:

TCP报文段首部除了20字节的固定部分,还有最大40字节的选项部分。增添选项可以增加TCP的功能。

最大报文段长度(Maximum Segment Size,MSS)选项:

不要被最大报文段长度的名称所误导,MSS用来指出的是TCP报文段有效载荷部分的最大长度,而不是整个TCP报文段的长度。MSS的选择并不简单。
>若选择较小的MSS,网络的利用率就会降低。设想在极端的情况下,TCP报文段只包含1字节的数据载荷,但有20字节的TCP首部,在网络层封装成IP数据报时又会添加20字节的IP首部,为了传输1字节的数据,额外要传输共40字节的 TCP首部和IP首部,到了数据链路层还要加上一些开销,因此网络的利用率不会超过1/40。
>若选择很大的MSS,则TCP报文段在网络层封装成IP数据报时,有可能要分片成多个短的数据报片。在目的站要将收到的各个短数据报片装配成原来的TCP报文段,当传输出错时还要进行重传,这些都会使开销增大。
一般认为,TCP报文段的MSS应尽可能大些,只要在网络层将TCP报文段封装成IP数据报时不需要分片就行。在TCP连接建立的过程中,双方可以将自己能够支持的MSS写入该字段中。在以后的数据传输阶段,MSS取双方提出的较小的那个数值。若主机未填写这一项,则MSS的默认值是536。因此,所有在因特网上的主机都应能够接受的TCP报文段的长度为20+536=556字节。

窗口扩大选项:

用来扩大窗口,提高吞吐率。

时间戳选项:有以下两个功能

>用于计算往返时间(RTT)

>用来处理序号超范围的情况,又称为防止序号绕回。

选择确认选项:

用来实现选择确认功能。

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

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

相关文章

26551-2011 畜牧机械 粗饲料切碎机

声明 本文是学习GB-T 26551-2011 畜牧机械 粗饲料切碎机. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了粗饲料切碎机的产品型号、技术要求、试验方法、检验规则、标志、包装、运输与贮存。 本标准适用于加工农作物秸秆等粗饲料…

Mysql生产随笔

目录 1. Mysql批量Kill删除processlist 1.1查看进程、拼接、导出、执行 1.2常见错误解决方案 2.关于时区 3.内存占用优化 记录一下生产过程中的一些场景和命令使用方法,不定期进行更新 1. Mysql批量Kill删除processlist 1.1查看进程、拼接、导出、执行 sho…

【AIPOD案例操作教程】斜流风扇轮毂优化

AIPOD是由天洑软件自主研发的一款通用的智能优化设计软件,致力于解决能耗更少、成本更低、重量更轻、散热更好、速度更快等目标的工程设计寻优问题。针对工业设计领域的自动化程度低、数值模拟计算成本高等痛点,基于人工智能技术、自研先进的智能代理学习…

linux部署页面内容

/bin:该目录包含了常用的二进制可执行文件,如ls、cp、mv、rm等等。 /boot:该目录包含了启动Linux系统所需的文件,如内核文件和引导加载程序。 /dev:该目录包含了所有设备文件,如硬盘、光驱、鼠标、键盘等等…

新手十分钟也能完成的Unity小游戏打砖块

由Siki学院打砖块游戏启发完成一个非常非常简单,纯新手也能十分钟做出来的小游戏——打砖块。 一.搭建场景 首先我们先在一个空白的3D项目中创建一个Plane平面,将其放置于世界中央位置,长宽设置为2,并为其添加一个材质Material&am…

二十,镜面IBL--打印BRDF积分贴图

比起以往&#xff0c;这节应该是最轻松的了&#xff0c; 运行结果如下 代码如下&#xff1a; #include <osg/TextureCubeMap> #include <osg/TexGen> #include <osg/TexEnvCombine> #include <osgUtil/ReflectionMapGenerator> #include <osgDB/Re…

挂件板死机刷固件

用ESP32-DevKitC_V4刷固件的工具flash_download_tool_3.9.5.exe 挂件板子端口接线依次为V&#xff08;接3V3&#xff09;、R&#xff08;接TXD&#xff09;、T&#xff08;接RXD&#xff09;、G&#xff08;接GND&#xff09;、L&#xff08;悬空&#xff09; 1.选择ESP8266&…

关于TUM数据集

2、验证回环检测算法&#xff0c;需要有人工标记回环的数据集。然而人工标记回环是很不方便的&#xff0c;我们会考虑根据标准轨迹计算回环。即&#xff0c;如果轨迹中有两个帧的位姿非常相近&#xff0c;就认为它们是回环。请根据TUM数据集给出的标准轨迹&#xff0c;计算出一…

MySQL学习笔记19

MySQL日志文件&#xff1a;MySQL中我们需要了解哪些日志&#xff1f; 常见日志文件&#xff1a; 我们需要掌握错误日志、二进制日志、中继日志、慢查询日志。 错误日志&#xff1a; 作用&#xff1a;存放数据库的启动、停止和运行时的错误信息。 场景&#xff1a;用于数据库的…

BACnet/IP协议采集网关支持modbus RTU采集

楼宇自动化在现代建筑中扮演着重要的角色&#xff0c;它可以集成和控制各种设备和系统&#xff0c;提高建筑的能效和舒适性。然而&#xff0c;不同的设备和系统通常使用不同的通信协议&#xff0c;这给楼宇自动化的实施带来了一定的挑战。为了解决这个问题&#xff0c;BACnet和…

面试问到MySQL模块划分与架构体系怎么办

面试问到Mysql模块划分与架构体系怎么办 文章目录 1. 应用层连接管理器&#xff08;Connection Manager&#xff09;安全性和权限模块&#xff08;Security and Privilege Module&#xff09; 2. MySQL服务器层2.1. 服务支持和工具集2.2. SQL Interface2.3. 解析器举个解析器 …

vuepress+gitee免费搭建个人在线博客(无保留版)

文章目录 最终效果&#xff0c;一睹为快&#xff01;一、工具选型二、什么是VuePress三、准备工作3.1 node 安装3.2 Git安装3.3 Gitee账号注册 四、搭建步骤4.1 初始化VuePress4.2 安装VuePress4.3 初始化目录4.4 编写文章 五、部署到Gitee5.1 创建仓库5.2 个人空间地址设置4.3…

1.vue3脚手架在vscode下面建立

一、下载安装node.js Node.js (nodejs.org) 二、安装vue3脚手架 #添加项目脚手架 npm install -g vue/cli 三、建立项目 #项目建立 vue create {appname} 测试项目安装成功&#xff1a;运行npm run serve命令 npm run serve 证明脚手架、项目环境已配置好 四、添加配件&#x…

高光时刻丨极智嘉斩获2023中国物流与采购联合会科学技术一等奖

不久前&#xff0c;中国物流与采购联合会宣布了2022年度科学技术奖获奖名单&#xff0c;其中包括了一项令人瞩目的成就。这项成就源自于极智嘉与国药物流、南京医药、九州通医药以及多所高校的合作&#xff0c;他们共同努力&#xff0c;成功研究并应用了一项关键技术&#xff0…

26531-2011 地理标志产品 永春老醋

声明 本文是学习GB-T 26531-2011 地理标志产品 永春老醋. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了永春老醋地理标志产品的术语和定义、保护范围、产品分级、要求、试验方法、检验规 则和标签、标志、包装、运输、贮存的要…

【3】贪心算法-最优装载问题-加勒比海盗

算法背景 在北美洲东南部&#xff0c;有一片神秘的海域&#xff0c;那里碧海蓝天、阳光 明媚&#xff0c;这正是传说中海盗最活跃的加勒比海&#xff08;Caribbean Sea&#xff09;。 有一天&#xff0c;海盗们截获了一艘装满各种各样古董的货船&#xff0c;每一 件古董都价值连…

【数据仓库设计基础(二)】维度数据模型

文章目录 一. 概述二. 维度数据模型建模过程三. 维度规范化四. 维度数据模型的特点五. 维度数据模型1. 星型模式1.1&#xff0e;事实表1.2&#xff0e;维度表1.3&#xff0e;优点1.4&#xff0e;缺点1.5&#xff0e;示例 2. 雪花模式2.1&#xff0e;数据规范化与存储2.2&#x…

无人车开源软件架构

参考视频&#xff1a;Apollo自动驾驶入门课程 开源软件架构 开放式软件层分为三个子层&#xff1a;实时操作系统、运行时框架和应用程序模块层 实时操作系统&#xff08;RTOS&#xff09; 可确保在给定时间内完成特定任务&#xff0c;“实时”是指无人车的操作系统能够及时进…

Serlet API详解

目录 一、HttpServlet 1.1 处理doGet请求 1.2 处理doPost请求 二、HttpServletRequest 2.1 核心方法 三、HttpServletRespons 3.1 核心方法 一、HttpServlet 在编写Servlet代码的时候&#xff0c;首先第一步要做的就是继承HttpServlet类&#xff0c;并重写其中的某些方法 核心…

数字散斑干涉测量仿真研究

一、引言 数字散斑干涉技术(digital speckle pattern interferometry&#xff0c;DSPI)是一种测量物体表面微小变形的测量技术&#xff0c;在生物医学检测、缺陷无损检测、精密制造、材料与结构力学参数评估等领域起着日益重要的作用&#xff0c;具有实时性、高精度、非接触、…