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

news/2024/11/25 9:36:02/
+----------------+----------------+----------------+----------------+
|    源端口      |    目的端口    |      序号      |    确认号      |
|    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.ppmy.cn/news/1549783.html

相关文章

2024年亚太地区数学建模大赛C题-宠物行业及相关行业的发展分析与策略

随着人们消费理念的发展,宠物产业这一新兴产业,由于经济的快速发展和人均收入的不断增长,在全球范围内逐渐发展起来。1992年,中国小动物保护协会成立,1993年,皇家犬犬和火星等国际宠物品牌进入中国市场。随…

11 —— 打包模式的应用

需求:在开发模式下想让webpack使用style-loader进行css样式的处理;让它把css代码内嵌在js中;在生产模式下提取css代码 —— 判断当前运行命令时所在的环境 方案:借助cross-env全局软件包,设置参数区分打包运行环境 …

Nodejs开发仿马蜂窝旅游小程序API接口,服务器端开发,商家后台 Vue3+微信小程序+koa+mongodb+node.js

文章目录 🚀 开启您的互联网创业新篇章一、🔥 课程亮点:二、🌐 适合人群:学习这个课程后,您将会收获到三、旅游后台管理系统1.后台登录界面2.后台首页 四、前台旅游小程序1.首页展示2.目的地界面3.搜索功能…

P1 练习卷(C++4道题)

1.纷繁世界 内存限制:256MB 时间限制:1s 问题描述 这是一个纷繁复杂的世界。 某一天清晨你起床很迟,没有吃上早饭。于是你骑着自行车去超市,但是你又发现商店的工作人员已经重新贴上了价格标签,零食价格都涨了50%。你…

C++ 函数全解

引言 在C编程中,函数是程序的基本构建块之一。函数可以将代码组织成可重用的模块,提高代码的可读性和可维护性。本文将详细介绍C函数的各种特性,包括函数的定义、调用、参数传递、返回值、重载、内联函数、递归函数、函数指针、Lambda 函数、…

Unity中动态生成贴图并保存成png图片实现

实现原理&#xff1a; 要生成长x宽y的贴图&#xff0c;就是生成x*y个像素填充到贴图中&#xff0c;如下图&#xff1a; 如果要改变局部颜色&#xff0c;就是从x1到x2(x1<x2),y1到y2(y1<y2)这个范围做处理&#xff0c; 或者要想做圆形就是计算距某个点&#xff08;x1,y1&…

Vscode进行Java开发环境搭建

Vscode进行Java开发环境搭建 搭建Java开发环境(Windows)1.Jdk安装2.VsCode安装3.Java插件4.安装 Spring 插件5.安装 Mybatis 插件5.安装Maven环境6.Jrebel插件7.IntelliJ IDEA Keybindings8. 收尾 VS Code&#xff08;Visual Studio Code&#xff09;是由微软开发的一款免费、开…

【c++篇】:探秘红黑树平衡旋转原理--维持树的高度平衡之道

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;c篇–CSDN博客 文章目录 前言一.红黑树的概念和性质定义和性质节点结构与表示 二.模拟实现基…