当前位置: 首页 > article >正文

TCP(Transmission Control Protocol,传输控制协议)报文段的首部格式

+----------------+----------------+----------------+----------------+
|    源端口      |    目的端口    |      序号      |    确认号      |
|    2字节       |    2字节       |      4字节     |      4字节     |
+----------------+----------------+----------------+----------------+
|   数据偏移     |   保留字段     |URG|ACK|PSH|RST|SYN|FIN|    窗口    |
|   0.5字节      |    0.75字节    |  0.75字节      |      2字节     |
+----------------+----------------+----------------+----------------+
|      检验和    |    紧急指针    |              (选项部分)             |
|      2字节     |      2字节     |       (长度可变,最长40字节)       |
+----------------+----------------+-------------------------------------+

TCP报文段首部格式

TCP报文段的首部由固定的20个字节和可选的、最多40个字节的选项部分组成。因此,TCP报文段首部的最小长度为20个字节,最大长度为60个字节。

1. 源端口(Source Port):2字节
  • 源端口字段用于标识发送方的端口号。
2. 目的端口(Destination Port):2字节
  • 目的端口字段用于标识接收方的端口号。
3. 序号(Sequence Number):4字节
  • 序号字段用于标识TCP报文段中携带的用户数据的第一个字节的编号。这个编号是以字节为单位的,并且在整个TCP连接中是唯一的。
  • 序号字段的取值范围是0到232-1后,下一个序号会回到0。
4. 确认号(Acknowledgment Number):4字节
  • 确认号字段用于标识期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号。
  • 确认号字段也是对之前收到的所有数据的确认。若确认号为N,则表示N-1之前的数据已经收到了。
5. 数据偏移(Data Offset):4位(0.5字节)
  • 数据偏移字段用于指出TCP报文段的数据载荷部分距离TCP首部的距离,实际上它就是TCP报文段首部的长度。
  • 数据偏移字段的单位是32位字(即4字节)。因此,数据偏移字段的最大值是15,对应的TCP首部最大长度为60字节(包括选项部分)。
6. 保留字段(Reserved):6位(0.75字节)
  • 保留字段用于今后使用,目前应置为0。
7. 控制位(Control Bits):共6位(0.75字节),包括以下几个标志位:
  • URG(Urgent Pointer):紧急指针有效标志,占1位。当URG=1时,表明紧急指针字段有效,告诉系统此报文段中有紧急数据,应尽快传送。
  • ACK(Acknowledgment):确认标志位,占1位。仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有的传送的报文段都必须把ACK置为1。
  • PSH(Push):推送标志位,占1位。当PSH=1时,接收方TCP会尽快地将报文段交付给接收端进程,而不用再等到整个缓存都填满了后再向上交付。
  • RST(Reset):复位标志位,占1位。当RST=1时,表明TCP连接中出现了严重错误,必须释放连接,然后再重新建立传输连接。RST置为1还用来拒绝一个非法的报文段或拒绝打开一个连接。
  • SYN(Synchronize):同步标志位,占1位。在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段;当SYN=1而ACK=1时,表明这是一个连接接受报文段。
  • FIN(Finish):终止标志位,占1位。用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。
8. 窗口(Window):2字节
  • 窗口字段用于指出发送本报文段的一方的接收窗口的大小,即接收方目前允许对方发送的数据量(以字节为单位)。这个字段是接收方让发送方设置其发送窗口的依据,称为流量控制。
9. 检验和(Checksum):2字节
  • 检验和字段用于检验传输过程中是否出现了误码。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。
10. 紧急指针(Urgent Pointer):2字节
  • 紧急指针字段仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据)。
11. 选项(Options):长度可变,最长可达40字节
  • 选项字段用于增加TCP的功能。常见的选项包括最大报文段长度MSS、窗口扩大选项、时间戳选项等。

http://www.kler.cn/a/412130.html

相关文章:

  • win10中使用ffmpeg和MediaMTX 推流rtsp视频
  • day11_JS初识_语法
  • 计算机网络socket编程(5)_TCP网络编程实现echo_server
  • 如何制作项目网页
  • NLP论文速读(剑桥大学出品)|分解和利用专家模型中的偏好进行改进视觉模型的可信度
  • 【设计模式】【行为型模式(Behavioral Patterns)】之状态模式(State Pattern)
  • 【系统设计】图书管理系统设计-2-数据库创建
  • Acunetix v24.10.241106172web漏洞扫描工具安装教程+分享(linux+Windows)
  • TCP socket api详解 续
  • Android 常用命令和工具解析之GPU相关
  • 如何制作项目网页
  • netconf 代码示例-客户端
  • 2023.11 Graph-Enriched Biomedical Language Models: A Research Proposal
  • 斐波那契数列 相关问题 详解
  • 算法篇:贪心算法
  • vue3 属性透传
  • Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No “exports“ main defined
  • 本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
  • 详解Qt 中使用虚拟键盘(软键盘qtvirtualkeyboard)
  • 【面试分享】主流编程语言的内存回收机制及其优缺点
  • fastjson不出网打法—BCEL链
  • Leetcode 290 word Pattern
  • 【Qt】Qt 在main.cpp中使用tr()函数报错
  • 【设计模式】【结构型模式(Structural Patterns)】之装饰模式(Decorator Pattern)
  • WordPress文章目录插件,LuckyWP Table of Contents自动生成文章插件
  • vue图片导入的几种方式及优劣对比