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)首部格式 的相关文章

  • 网络基础面试题(二)

    11 什么是网桥 防火墙的端口防护是指什么 网桥是一种网络设备 用于连接两个或多个局域网 LAN 并转发数据包 它能够根据MAC地址来识别和转发数据 提高网络的传输效率和安全性 防火墙的端口防护是指对防火墙上的各个端口进行保护和限制 只允许
  • 浅谈能耗系统在马来西亚连锁餐饮业的应用

    1 背景信息 Background 针对连锁餐饮业能耗高且能源管理不合理的问题 利用计算机网络技术 通讯技术 计量控制技术等信息化技术 实现能源资源分类分项计量和能源资源运行监管功能 清晰描述各分店总的用能现状 实时监测各供电回路的电压 电
  • DreadHunger恐惧饥荒海上狼人杀服务器搭建架设教程windows系统

    DreadHunger 恐惧饥荒海上狼人杀服务器搭建架设教程windows系统 大家好我是艾西 在11月底我有发文 DreadHunger 恐惧饥荒海上狼人杀官方停服的消息 当时在官方的公告模版中公布了在2024年一月一日会将服务端公开让喜
  • 成为一个黑客,就按照这个路线来!

    前几天一个同学在聊天中提到毕业后想要从事网络安全方向的工作 虽然他本身也是学计算机的 但是又怕心有余而力不足 因为 从事网络安全方面的工作向来起点都比较高 大学里少有开设这类课程的 在学校能够学到的知识比较有限 网上的关于这方面课程的质量又
  • CMAKE_MAKE_PROGRAM is not set 解读

    目录 CMAKE MAKE PROGRAM 未设置 错误原因 解决方案 示例1 GNU Make 示例2 Ninja CMakeLists txt 的结构 示例 CMakeLists txt 文件 总结 CMAKE MAKE PROGRAM
  • Linux 系统日志及其归档

    主要记录Linux 系统需要关注的日志文件 以及日志归档服务 rsyslogd 系统日志服务 rsyslogd 日志服务 rsyslogd reliable and extended syslogd 可靠 可扩展的系统日志服务 Rsyslo
  • 如何解读服务器的配置和架构?

    在当今数字化时代 服务器作为企业或组织的重要基础设施 其配置和架构对于保障业务的稳定运行至关重要 如何解读服务器的配置和架构 成为了一个备受关注的话题 本文将围绕服务器配置和架构的解读进行深入探讨 帮助读者更好地理解服务器的性能 扩展性和安
  • 掌握内网渗透之道,成为实战高手,看《内网渗透实战攻略》就够了

    文末送书 文末送书 今天推荐一本网络安全领域优质书籍 内网渗透实战攻略 文章目录 前言 如何阅读本书 目录 文末送书 前言 当今 网络系统面临着越来越严峻的安全挑战 在众多的安全挑战中 一种有组织 有特定目标 长时间持续的新型网络攻击日益猖
  • 基于成本和服务质量考虑的不确定性下,电动汽车充电网络基础设施需求预测和迭代优化的分层框架研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • Web 安全漏洞之 OS 命令注入

    什么是 OS 命令注入 上周我们分享了一篇 Web 安全漏洞之 SQL 注入 其原理简单来说就是因为 SQL 是一种结构化字符串语言 攻击者利用可以随意构造语句的漏洞构造了开发者意料之外的语句 而今天要讲的 OS 命令注入其实原理和 SQL
  • Jmeter 性能-并发量计算

    并发概念 指网站在同一时间访问的人数 人数越大瞬间带宽要求更高 服务器并发量分为 业务并发用户数 最大并发访问数 系统用户数 同时在线用户数 估算业务并发量的公式 C nL T C C 3 C的平方根 说明 C是平均的业务并发用户数 n是l
  • 远程控制软件安全吗?一文看懂ToDesk、RayLink、TeamViewer、Splashtop相关安全机制_raylink todesk

    目录 一 前言 二 远程控制中的安全威胁 三 国内外远控软件安全机制 ToDesk RayLink Teamviewer Splashtop 四 安全远控预防 一 前言 近期 远程控制话题再一次引起关注 据相关新闻报道 不少不法分子利用远程
  • socket网络编程几大模型?看看CHAT是如何回复的?

    CHAT回复 网络编程中常见的有以下几种模型 1 阻塞I O模型 Blocking I O 传统的同步I O模型 一次只处理一个请求 2 非阻塞I O模型 Non blocking I O 应用程序轮询调用socket相关函数检查请求 不需
  • 基于java的物业管理系统设计与实现

    基于java的物业管理系统设计与实现 I 引言 A 研究背景和动机 物业管理系统是指对物业进行管理和服务的系统 该系统需要具备对物业信息 人员信息 财务信息等进行管理的能力 基于Java的物业管理系统设计与实现的研究背景和动机主要体现在以下
  • 揭秘网络世界的幕后密码——Wireshark网络协议分析软件

    在我们日常生活中 计算机和互联网已经成为不可或缺的一部分 然而 很少有人真正了解网络背后复杂的工作原理和通信协议 幸运的是 有一款强大而实用的软件 Wireshark 可以帮助我们深入了解网络世界的幕后密码 Wireshark是一款免费的网
  • 国外拨号VPS指南:开启你的全球网络之旅

    在当今数字化时代 互联网已经成为了我们生活的一部分 而要在全球范围内畅通无阻地访问互联网 拥有一个可靠的国外拨号VPS是非常重要的 无论您是为了工作 学习还是娱乐 国外拨号VPS都可以为您提供更广泛的网络体验 本文将为您提供国外拨号VPS的
  • Mysql中设置只允许指定ip能连接访问(可视化工具的方式)

    场景 Mysql中怎样设置指定ip远程访问连接 Mysql中怎样设置指定ip远程访问连接 navicat for mysql 设置只有某个ip可以远程链接 CSDN博客 前面设置root账户指定ip能连接访问是通过命令行的方式 如果通过可视
  • 内网安全:隧道技术详解

    目录 隧道技术 反向连接技术 反向连接实验所用网络拓扑图及说明 网络说明 防火墙限制说明 实验前提说明 实战一 CS反向连接上线 拿下Win2008 一 使用转发代理上线创建监听器 二 上传后门执行上线 隧道技术 SMB协议 SMB协议介绍
  • 【无标题】

    大家都知道该赛项的规程和样题向来都是模棱两可 从来不说具体的内容 导致选手在备赛时没有头绪 不知道该怎么训练 到了赛时发现题目和备赛的时候完全不一样 那么本文将以往年信息安全管理与评估赛项经验来解读今年2023年国赛的规程 帮助选手们指明方
  • ESP10B 锁定连接器

    ESP10B 锁定连接器 ESP10B 电机新增内容包括双极型号标准 NEMA 尺寸 17 23 和 34 的步进电机现在包括输出扭矩范围从 61 盎司英寸到 1291 盎司英寸的双极型号 该电机配有带锁定连接器的尾缆 可轻松连接 每转可步

随机推荐

  • 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字