TCP报文格式


前言

TCP报文格式


一、OSI 模型各层通信协议

在这里插入图片描述

二、TCP/IP 模型各层通信协议

在这里插入图片描述

三、TCP协议的报文格式

传输层TCP协议提供了一种面向连接的、可靠的字节流服务,其数据帧格式,大致如下图所示:
在这里插入图片描述

3.1 源端口号

源端口号表示报文的发送端口,占16位。源端口和源IP地址组合起来,可以标识报文的发送地址。

3.2 目的端口号

表示报文的接收端口,占16位。目的端口和目的IP地址相结合,可以标识报文的接收地址。TCP协议是基于IP协议的基础上传输的,TCP报文中的源端口号+源IP与TCP报文中的目的端口号+目的IP一起,组合起来唯一性的确定一条TCP连接。

3.3 序号(Seq)

相当于发送端对发出的字节流进行编号,序号(Sequence Number)占32位。Seq的语义与SYN控制标志的值有关。

(1)当SY

### TCP 报文格式详解 TCP 报文段的结构由固定部分和可选部分组成,其具体字段如下: #### 1. 源端口号(Source Port) - 长度:16 比特 - 功能:标识发送方的应用程序端口。 - 这一字段用于区分同一台主机上的不同应用程序[^1]。 #### 2. 目的端口号(Destination Port) - 长度:16 比特 - 功能:标识接收方的应用程序端口。 - 它确保数据能够正确传递到目标主机上的特定应用层服务[^1]。 #### 3. 序列号(Sequence Number) - 长度:32 比特 - 功能:表示本报文段中第一个数据字节的序列号。 - 在连接建立时,双方会协商初始序列号(ISN),之后每个字节的数据都会有一个唯一的序列号[^2]。 #### 4. 确认号(Acknowledgment Number) - 长度:32 比特 - 功能:当 ACK 标志位被设置为 1 时,该字段有效。它表示期望收到的下一个数据字节的序列号。 - 例如,如果确认号为 501,则意味着已成功接收到序列号为 500 的所有数据[^2]。 #### 5. 数据偏移(Data Offset) - 长度:4 比特 - 功能:表示 TCP 报头的长度,以 32 比特为单位。 - 如果没有选项字段,报头长度值为 5,即 20 字节;如果有选项字段,则长度会增加[^1]。 #### 6. 标志位(Flags) - 长度:6 比特 - 功能:控制 TCP 连接状态和数据传输行为。包括以下标志位: - URG:紧急指针是否有效。 - ACK:确认号字段是否有效。 - PSH:要求接收方立即提交数据给应用层。 - RST:强制终止异常连接。 - SYN:发起连接请求。 - FIN:关闭连接请求[^2]。 #### 7. 窗口大小(Window Size) - 长度:16 比特 - 功能:表示当前允许发送方发送的数据量,用于流量控制。 - 接收方通过调整窗口大小来通知发送方其缓冲区的可用空间。 #### 8. 校验和(Checksum) - 长度:16 比特 - 功能:用于检测 TCP 报文段在传输过程中是否发生错误。 - 校验范围包括伪头部、TCP 报头和数据部分[^1]。 #### 9. 紧急指针(Urgent Pointer) - 长度:16 比特 - 功能:仅在 URG 标志位为 1 时有效,表示紧急数据的结束位置。 - 它帮助接收方快速定位需要优先处理的数据[^1]。 #### 10. 选项字段(Options) - 长度:可变 - 功能:用于实现各种功能扩展,如最大分段长度(MSS)、时间戳等。 - 如果没有选项字段,TCP 报头长度为 20 字节[^1]。 ```python # 示例:创建一个简单的 TCP 报文段结构 class TCPHeader: def __init__(self, source_port, destination_port, sequence_number, acknowledgment_number, flags, window_size, checksum, urgent_pointer): self.source_port = source_port self.destination_port = destination_port self.sequence_number = sequence_number self.acknowledgment_number = acknowledgment_number self.flags = flags self.window_size = window_size self.checksum = checksum self.urgent_pointer = urgent_pointer ``` ### 总结 TCP 报文段的结构设计充分考虑了可靠性和灵活性的需求。通过固定字段与可选字段的结合,TCP 能够支持复杂的网络通信场景[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徕卡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值