TCP报文段(segment)首部格式

2023-10-28

TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCP segment)。

IP传给链路层的数据单元称作IP数据报(IP datagram)。

通过以太网传输的比特流称作(Frame)。

逐层封装:

  • 源端口号

发送端端口号,字段长16位(2字节)

  • 目标端口号

目标端端口号,字段长16位(2字节)

  • 序列号(sequence number)

指发送数据的第一个字节的编号,字段长度为32位。

TCP是面向字节流的,每个字节都按顺序编号,由于该字段为32位,即序列号可表示2^32(4294967296个字节,4G字节)的数据,序列号到达最大值后,从0重新开始编号。

注意:一个连接的序列号不是从0或者1开始的,而是建立连接时由计算机生成的随机数作为其初始值。

  • 确认应答号(acknowledge number)

指期望收到下一个报文段的第一个数据字节的序列号。该字段段长度也是32位。

ack = seq + 数据长度(单位字节)。

若收到的确认号为N,则表明:到N-1个字节的所有的数据均已被收到。

比如:A往B发送数据,B收到了A发过来的序列号为501的报文段,该报文长200字节,则表名B收到了(501~700序列号的数据,所以B往A发送的确认号应该是701。

  • 数据偏移(data offset,也表示tcp首部长度)

表示tcp报文段的数据距离tcp报文段的起始处有多远。(实际就表示tcp首部的长度)。

该字段长4位,可表示0101~1111 个数,单位:"4字节"。所以tcp首部的长度范围:20字节~60字节

  • 保留位(reserved)

该字段长4位,主要为以后tcp扩展使用。一般都为0。

  • 控制位(control flag)

该字段长8位。分别如下:

  • CWR(Congestion Window Reduced)

CWR标志和ECE标志都是用于IP首部的ECN字段。

  • ECE(ECN-Echo)

ECE标志表示ECN-Echo,为1时会通知通信对方,从对方到这边的网络有拥塞。

如果在收到数据包的IP首部(IP协议)中ECN为1,则会将TCP首部中的ECE设置为1.

CWR和ECE控制位是tcp/ip协议随着发展增加的功能:拥塞控制通知(Explict Congestion Notification,简称“ECN".

"ECN"是一个对IP协议和TCP协议的扩展,定义于RFC 3168(2001)。ECN允许拥塞控制的端对端通知而避免丢包。

  • URG

为1时,表示有紧急数据需要处理。发送方会将紧急数据插入到报文段的最前面,而在紧急数据后面的数据仍是普通数据。需要与tcp首部的紧急指针(urgent pointer)配合使用。

  • ACK

仅当ACK=1时,确认好字段才有效。当ACK=0时,确认号无效。tcp规定,在建立连接后所有传送的报文段都必须将ACK置为1

  • PSH

当PSH=1时,发送方会立即创建一个报文段发送出去。接收方在收到PSH=1的报文段,就尽快地交付给接收方应用进程,而不用等到整个缓存填满了再交付。

  • RST

当RST=1时,表示tcp连接出现严重差错,必须释放连接,然后重新建立连接。RST=1还用来拒绝非法的报文段或者拒绝打开一个连接。

  • SYN

当SYN=1时,表明这是一个连接请求或者连接接受报文。

  • FIN

用来关闭连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,请求释放该tcp连接。

  • 窗口大小(window size)

占2字节。表示发送方的通信对方(即接收方)允许发送方发送的数据量(字节为单位)。发送方的发送窗口大小也是依据于此。因为接收方的数据缓存空间是有限的,应用进程也在动态处理数据缓存空间的数据,所以该窗口值经常是动态变化着。

  • 校验和(checksum)

占2字节,检验首部和数据两部分。

  • 紧急指针(urgent pointer)

占2字节。紧急指针仅当URG=1时才有意义。它支出本报文段中的紧急数据的字节数(紧急数据结束后仍是普通数据)。注意:即使窗口为0时,也可发送紧急数据。

  • tcp选项(tcp option)

长度可变,最大40字节。只有"data offset">5时,才会有tcp选项。

tcp选项格式有两种:

1)1字节长的选项(也就是8位),只有Kind。比如:

2)4字节长的选项(也就是32位),有1字节Kind + 1字节Length + 选项数据 + [padding]。比如:

  • 填充(padding)

"tcp选项"不足4字节的整数倍时,尾部填充的数据。

抓包样例明细:

参考:

RFC 9293: Transmission Control Protocol (TCP)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TCP报文段(segment)首部格式 的相关文章

  • 如何使用内网穿透实现iStoreOS软路由公网远程访问局域网电脑桌面

    文章目录 简介 一 配置远程桌面公网地址 二 家中使用永久固定地址 访问公司电脑 具体操作方法是 简介 软路由 是PC的硬件加上路由系统来实现路由器
  • “性能压测揭密:关键指标分析!“

    在进行全链路压测和性能测试时 需要关注多个关键性能指标 KPIs 来评估系统的性能表现 以下是一些常见的性能测试指标 1 吞吐量 Throughput 系统在单位时间内能够处理的请求数量或事务数量 通常以每秒请求数 RPS TPS 来衡量
  • 6类典型场景的无线AP选型和部署方案

    你们好 我的网工朋友 前段时间刚给你们来了篇解决无线频繁断网的技术文 解决无线频繁断网 这个办法值得收藏 不少朋友私聊 说想再聊聊无线AP的选型和部署方案 这不就安排上了 无线网络覆盖项目中 无线AP的合理选型和部署非常重要 在设计施工中
  • 服务器超线程的好处

    服务器超线程的好处 1 提高性能 超线程通过提高整体系统吞吐量显着提高服务器性能 通过允许多个线程在单个物理内核上同时执行 超线程减少了空闲时间并最大限度地利用了可用资源 这会加快任务执行速度并缩短应用程序的响应时间 尤其是在多线程工作负载
  • 网络空间安全女生就业,怎么学?

    我实验室的学长们基本都是以红队和复现为主 如果学校好点可能还有更多的选择 如果想在这个方向深入下去 推荐流程是先打两年CTF 把大概的技术方向摸一摸 大一的话 如果学校还不错 那就优先建议打好基础 包括C语言 Python一类 建议把CTF
  • Linux 系统日志及其归档

    主要记录Linux 系统需要关注的日志文件 以及日志归档服务 rsyslogd 系统日志服务 rsyslogd 日志服务 rsyslogd reliable and extended syslogd 可靠 可扩展的系统日志服务 Rsyslo
  • 服务器集群是如何提高计算性能的?

    服务器集群是一种将多台服务器连接起来协同工作的技术 通过集群配置 可以提高计算性能 可靠性和可扩展性 以下是服务器集群如何提高计算性能的详细解释 一 并行处理能力 服务器集群的核心优势在于其并行处理能力 通过将多个服务器组成一个集群 可以将
  • 如何解读服务器的配置和架构?

    在当今数字化时代 服务器作为企业或组织的重要基础设施 其配置和架构对于保障业务的稳定运行至关重要 如何解读服务器的配置和架构 成为了一个备受关注的话题 本文将围绕服务器配置和架构的解读进行深入探讨 帮助读者更好地理解服务器的性能 扩展性和安
  • 自定义编写zabbix_agent脚本

    vi usr lib systemd system zabbix agent servicce Unit Description Zabbix Agent After syslog target After network target S
  • 基于成本和服务质量考虑的不确定性下,电动汽车充电网络基础设施需求预测和迭代优化的分层框架研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • 【CTF必看】从零开始的CTF学习路线(超详细),让你从小白进阶成大神!

    最近很多朋友在后台私信我 问应该怎么入门CTF 个人认为入门CTF之前大家应该先了解到底 什么是CTF 而你 学CTF的目的又到底是什么 其次便是最好具备相应的编程能力 若是完全不具备这些能力极有可能直接被劝退 毕竟比赛的时候动不动写个脚本
  • 线程安全(中)--彻底搞懂synchronized(从偏向锁到重量级锁)

    接触过线程安全的同学想必都使用过synchronized这个关键字 在java同步代码快中 synchronized的使用方式无非有两个 通过对一个对象进行加锁来实现同步 如下面代码 synchronized lockObject 代码 对
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • 基于java的物业管理系统设计与实现

    基于java的物业管理系统设计与实现 I 引言 A 研究背景和动机 物业管理系统是指对物业进行管理和服务的系统 该系统需要具备对物业信息 人员信息 财务信息等进行管理的能力 基于Java的物业管理系统设计与实现的研究背景和动机主要体现在以下
  • Mysql中设置只允许指定ip能连接访问(可视化工具的方式)

    场景 Mysql中怎样设置指定ip远程访问连接 Mysql中怎样设置指定ip远程访问连接 navicat for mysql 设置只有某个ip可以远程链接 CSDN博客 前面设置root账户指定ip能连接访问是通过命令行的方式 如果通过可视
  • 搞懂 三次握手四次挥手

    计算机网络体系结构 在学习TCP 三次握手四次挥手之前 让我们先来看下计算机网络分层 主要分为OSI模型和TCP IP模型 OSI模型比较复杂且学术化 所以我们实际使用的TCP IP模型 以连接Mysql服务器为例理解这五层 应用层 应用层
  • 短信系统搭建主要因素|网页短信平台开发源码

    短信系统搭建主要因素 网页短信平台开发源码 随着移动互联网的快速发展 短信系统已成为企业和个人进行信息传递的重要工具 建立一个高效可靠的短信系统对于企业来说非常重要 下面我们将介绍一些影响短信系统搭建的主要因素 1 平台选择 在搭建短信系统
  • ESP10B 锁定连接器

    ESP10B 锁定连接器 ESP10B 电机新增内容包括双极型号标准 NEMA 尺寸 17 23 和 34 的步进电机现在包括输出扭矩范围从 61 盎司英寸到 1291 盎司英寸的双极型号 该电机配有带锁定连接器的尾缆 可轻松连接 每转可步
  • 2023下半年软考「单独划线」合格标准公布

    中国计算机技术职业资格网发布了 关于2023年度下半年计算机软件资格考试单独划线地区合格标准的通告 2023下半年软考单独划线地区合格标准各科目均为42分 01 官方通告 关于2023年度下半年计算机软件资格考试单独划线地区合格标准的通告

随机推荐

  • Canny边缘检测算法原理及其VC实现详解(一)

    目录 1 边缘检测原理及步骤 2 Canny边缘检测算法原理 2 1 对原始图像进行灰度化 2 2 对图像进行高斯滤波 2 3 用一阶偏导的有限差分来计算梯度的幅值和方向 2 4 对梯度幅值进行非极大值抑制 2 5 用双阈值算法检测和连接边
  • jsp下拉框级联查询以及java代码实现

    需求描述 我们在开发过程中 很多页面查询 新增修改页面的下拉 需要通过一个下拉框的值 确定另一个下拉的值 典型的就是 选择年级 另一个下拉需要展示对应的班级 选择了班级 需要展示对应的学生 下面是存放地方 建筑物 级联查询建筑物与房间的例子
  • 《二叉搜索树OJ》

    文章目录 1 根据二叉树创建字符串 https leetcode cn problems construct string from binary tree 2 二叉树的层序遍历 https leetcode cn problems bin
  • v4l2框架API详解

    v4l2是linux内核中视频设备驱动框架 主要为了上层访问视频提供统一得标准接口 用户空间系统调用 open write read 内核空间 video device gt v4l2 device gt v4l2 subdev gt se
  • 【Windows系统】磁盘、Partition和Volume的联系与区别

    1 磁盘 Disk 磁盘 以下摘自微软 磁盘设备和分区 Win32 apps Microsoft Learn 硬盘由一组堆积的盘片组成 其中每个盘片的数据都以电磁方式存储在同心圆或 轨道中 每个盘片都有两个头 一个在盘片的两侧 在磁盘旋转时
  • ubuntu16安装新软件之后无法看到运行中的新软件

    安装新软件后 在启动器上点击新软件图标后 有小圆圈转动 看不到新软件界面 解决方法 系统设置 硬件显示 勾选 镜像显示 M 提醒 可能会限制分辨率选项 点击 应用 按钮 但字体模糊 解决方案 ctrl alt t打开命令行模式 xrandr
  • php yii2模块,Yii2模块自定义模块目录

    请教一下各位 yii2的模块创建后 比如如下的forum模块 官方的标准是如下目录结构 请问可以在该模块下手动创建一个目录么 比如common目录 如果可以的话调用该目录里的类文件与Yii1 1中的components一样么 现在想把该模块
  • Integer和int及String的总结

    Integer和int及String的总结 秉承着总结发表是最好的记忆 我把之前遇到的问题在这里总结和大家分享一下 希望大家共同进步 一 Integer和int 首先说下自动拆装箱 基本数据类型转换为包装类型的过程叫装箱 反之则是拆箱 其中
  • matlab 利用while循环计算平均值和方差

    一 该程序是用来测输入数据的平均值和方差的 公式 二 项目流程 1 State the problem假定所有测量数为正数或者0 计算这一系列测量数的平均值和方差 假定我们预先不知道有多少测量数据被录入 一个负数标志着测量数据输入结束 2
  • 网络层重点协议-IP协议(结构分析)

    IP协议数据报格式 一 4位版本号 用来表示IP协议的版本 现有的IP协议只有两个版本IPv4和IPv6 二 4位首部长度 IP协议数据报报头的长度 三 8位服务类型 3位优先权字段 已经弃用 4位TOS字段 和1位保留 字段 必须置为0
  • 实验4

    一 实验目的 1 掌握DPCM编解码系统的基本原理 2 初步掌握实验用C C Python等语言编程实现DPCM 编码器 并分析其压缩效率 二 实验内容 1 DPCM编解码原理 DPCM是差分预测编码调制的缩写 是比较典型的预测编码系统 在
  • 基于SPI机制和DataX插件热加载破坏双亲委派的思考

    在开始阅读之前请先思考以下两个问题 并希望您能再接下来的文章中找到答案 1 如果我自己实现了一个新的java lang String类 并通过UrlClassLoader加载使用该类 能否覆盖JDK中的 java lang String 2
  • 五、Eureka服务注册、续约、剔除、下线源码分析

    Eureka 概念的理解 1 服务的注册 当项目启动时 eureka 的客户端 就会向 eureka server 发送自己的元数据 原始数据 运行的 ip 端口 port 健康的状态监控等 因为使用的是 http ResuFul 请求风格
  • vmlinuz/vmlinux、Image、zImage与uImage的区别

    前言 内核镜像和其他的镜像并没有本质上的区别 都是用同一套交叉编译工具链来生成的 内核有这么多不同类型的镜像是为了满足各种启动方式 本质上和其他镜像都是一样的 只是在此基础上做了修改 生成镜像的过程 1 源代码经过编译链接变成elf格式的可
  • QT : 屏蔽qDebug调试信息

    DEFINES QT NO WARNING OUTPUT DEFINES QT NO DEBUG OUTPUT C Qt Qt5 7 0 5 7 msvc2013 include QtCore qlogging h cpp view pla
  • (转)[Unity3D]关于Assets资源目录结构管理

    转 Unity3D 关于Assets资源目录结构管理 分享个我们项目常用的目录结构 微调过很多次 最终到了这个版本 个人认为这种管理资源方式是不错的 欢迎探讨各个细节 更新于2013 5 30 Asserts Editor 自写的灵活方便插
  • Hbase导入、导出数据到本地文件

    注意导入 导出操作是在控制台中运行 而不是Hbase Shell中 导出 命令格式是 hbase org apache hadoop hbase mapreduce Export 表名 文件路径 hbase org apache hadoo
  • VS2017出现C4996 'fopen': This function or variable may be unsafe. Consider using fopen_s instead.错误

    VS2017利用fopen和fscanf读取文件时出现以下错误信息 C4996 fopen This function or variable may be unsafe Consider using fopen s instead To
  • Layout state should be one of 100 but it is 10的问题

    目前的解决方法是把View inflate方法换成LayoutInflater inflate方法 不过目前发生问题的原因还不明白和最后的解决方法还没摸清楚 先占个坑然后解决它 2018 12 29 目前发现的问题就是在adapter里设置
  • TCP报文段(segment)首部格式

    TCP传给IP的数据单元称作TCP报文段或简称为TCP段 TCP segment IP传给链路层的数据单元称作IP数据报 IP datagram 通过以太网传输的比特流称作帧 Frame 逐层封装 源端口号 发送端端口号 字段长16位 2字