【网络协议】TCP报文格式

news2024/11/24 15:36:45

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.coloradmin.cn/o/1048881.html

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

相关文章

【C语言_题库】舍罕网的失算?明明是我的失算!

test 舍罕王 失算 相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着 8 * 8 共 64 格的象棋说:“陛下,请您赏给我一些麦子吧。就在棋盘的第 1 格放 1 粒,第 2…

leetCode 198.打家劫舍 动态规划

198. 打家劫舍 - 力扣(LeetCode) 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入&#…

机器学习---BP算法

1. 多级网络 层号确定层的高低:层号较小者,层次较低,层号较大者,层次较高。 输入层:被记作第0层。该层负责接收来自网络外部的信息。 第j层:第j-1层的直接后继层(j>0)&#xff…

sub0 里斯本精彩回顾:探索波卡区块的创新空间

sub0 Europe 2023 已在葡萄牙里斯本圆满结束!sub0 大会是波卡生态开发者大会,由波卡协议的主要开发方 Parity Technologies 举办的开发者大会,汇聚了全球 Substrate 开发者和学习者,旨在为 Polkadot 和 Kusama 生态的开发者、贡献…

【红日靶场】vulnstack2-完整渗透过程

文章目录 一、网络拓扑二、描述配置环境渗透开始信息收集开始攻击干掉杀软cs上线权限提升 内网探测横向移动再次横向rdp连接痕迹清除 总结: 一、网络拓扑 网络配置: 二、描述 红队实战系列,主要以真实企业环境为实例搭建一系列靶场&#x…

Library ‘iconv2.4.0‘ not found 问题及解决方法

今天升级了一下Mac mini 和Xcode,运行项目就报Library iconv2.4.0 not found的错误 mac mini 升级:13.0 --> 13.6 xcode升级到:15.0(15A240d) 可以肯定 项目在旧版本下,是能通过编译 并且能运行的。 废话不多说&#xff0c…

网络安全——自学(黑客)方法

如果你想自学网络安全,首先你必须了解什么是网络安全!,什么是黑客!! 1.无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如 Web 安全技术,既有 Web 渗透2.也有 Web 防…

再生之术:遗忘 Root 密码的 CentOS8 Stream 解决方案

文章目录 大魔头 RootGRUB 引导界面BootLoaderGRUB主要功能选择启动的操作系统编辑内核启动参数 进入GRUB 引导界面编辑内核启动参数单用户模式 进入内核编辑界面rd.break进入单用户模式 大魔头 Root 哈哈,你好!今天,让我们来聊聊 Linux 系统…

提高效率!掌握项目管理工具中任务优先级的使用技巧

在项目管理中,我们经常会遇到一些具有强制依赖关系的任务。这些任务之间的关系是绝对的,并且毫无疑问必须首先完成什么。例如,您必须先设计一个产品,然后才能构建它,并且必须先构建它,然后才能绘制它。然而…

嵌入式芯片-NE555

目录 1、比较器(运放) 2、相反门(非门) 3、或非门 4、双稳态触发器 5、NE555功能框图 1、比较器(运放) 2、相反门(非门) 3、或非门 4、双稳态触发器 5、NE555功能框图

FastestDet---模型训练

代码:https://github.com/dog-qiuqiu/FastestDet 一、构造数据集 数据集格式YOLO相同,每张图片对应一个txt标签文件。标签格式:“category cx cy wh”,category为类别id,cx, cy为归一化标签框中心点的坐标,w, h为归一化标签框的宽度和高度, .txt标签文件内容示例如下: 0…

基于SpringBoot的医院管理系统

目录 前言 一、技术栈 二、系统功能介绍 病床信息管理 药房信息管理 个人中心管理 药房信息 病床类别 科室信息管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息互联网信息的飞速发展,医院也在创建着属于自己的管理系统。本文介…

如何像人类一样写HTML之代码编辑器的选择与基础框架

文章目录 前言一、 HTML是什么?二、 HTML的发展历史三、 HTML的优点a. 简单易学b. 跨浏览器兼容性c. 良好的可读性 四、 超文本是什么?五、 代码编辑器的选择:VSCodea. 安装VSCodeb. 创建HTML文件方式1方式2 c. 编写HTML代码安装Live Server插…

【算法基础】数组和链表,动态数组,循环数组,链表的变种

目录 1 数组(Array) 1.1 定义和特点 1.2 基本操作 1.3 数组的时间复杂度 1.4 应用场景 2 链表(Linked List) 2.1 定义和特点: 2.1.1 单向链表(Singly Linked List) 2.1.2 双向链表&…

Axure RP9 引入eCharts图表

一、 ECharts 地址:https://echarts.apache.org/zh/index.html 概述:一个基于 JavaScript 的开源可视化图表库 提供了很多图标样式案例 二、 Axure引入eCharts图表步骤 步骤一:打开Axure,添加矩形元素,调整矩形所…

Mybatis 二级缓存

之前我们介绍过映射器与XML配置职责分离,本篇我们在此基础上介绍Mybatis中二级缓存的使用。 如果您对映射器与XML配置职责分离不太了解,建议您先进行了解后再阅读本篇,可以参考: Mybatis 映射器与XML配置职责分离https://blog.c…

轻松解决软件游戏msvcr120.dll丢失问题,msvcr120.dll丢失的修复步骤分享

msvcr120.dll 丢失可能会让许多软件和游戏无法正常运行,给用户带来无尽的困扰。当你尝试打开某个程序时,可能会弹出一个提示框,告诉你缺少 msvcr120.dll 文件。当你尝试运行某个游戏时,可能会遇到无法启动或运行一段时间后崩溃的问…

java项目中数据权限实现思路

一、需求: 同样的页面,不同的账号登录进去,看到的数据不一样。 二、权限管理的方式 RBAC模型 角色与数据权限的关系: 比如管理员角色,他的数据权限是全部,那么拥有该角色的用户,所能看到的数…

基于YOLOv8模型的蜜蜂目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOv8模型的蜜蜂目标检测系统可用于日常生活中检测与定位蜜蜂目标,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数据集…

低代码软件:业务经理的利器!快速掌握使用技巧

低代码的出现,让应用开发不再是开发人员的专属工作。要知道在企业中,业务开发压力加上开发人手不够导致开发团队会积压大量请求。不仅拖慢了业务进程,也难免造成开发软对和业务团队之间的矛盾。 而成熟的业务经理在行业中深耕多年&#xff0…