TCP首部报文段格式

本文详细介绍了TCP首部报文段的格式,包括源端口与目的端口、序列号、确认号、数据偏移、保留字段、紧急、确认、复位、窗口、校验和、紧急指针及选项等字段的作用。这些字段对于理解TCP的工作原理至关重要,特别是序列号和确认号用于解决网络包乱序和丢包问题,窗口字段则涉及流量控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近《计算机网络》这本书看到了传输层的 TCP 协议,因为TCP 的全部功能都体现在它的首部中,因此觉得有必要将这些知识梳理一下。

首先TCP 是面向字节流的。这个流指的是流入到进程或从进程流出的字节序列。面向字节流的含义是:应用程序与 TCP 的交互是一次一个数据块(大小不等),但是 TCP 把应用程序交下来数据仅仅看成是一连串的无结构字节流。而 TCP 不知道所传送字节流的含义。

一、TCP首部报文段格式

一个 TCP 报文段分为首部和数据两部分,只有弄清楚 TCP 首部中各字段的作用才能更好地掌握 TCP 的工作原理。
这里写图片描述

Source Port And Destination Port(源端口与目的端口):各占 2 个字节,分别写入源端口号与目的端口号。

Sequence Number(序列号):占 4 个字节,范围是[0, 232 - 1],序号增加到 232 - 1 后,下一个序号就又回到 0。在 TCP 连接中传送的字节流中的每一个字节都要按顺序编号,起始序号在连接建立时就完成设置。因此序列号可以用来解决网络包乱序(reordering)问题。

例如,一个报文段的序号是 301,而携带的数据共有 100 个字节。这就表明:本报文段的数据的第一个字节的序号是 301,最后一个字节的

TCP报文段首部格式如下: ``` 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | Reserved|C|E|U|A|P|R|S|F| | | Offset| |W|C|R|C|S|S|Y|I| Window | | | |R|E|G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Urgent Pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ``` 其中各字段的含义如下: - 源端口(Source Port):发送端口号,16位,标识发送方的应用程序或进程。 - 目的端口(Destination Port):目标端口号,16位,标识接收方的应用程序或进程。 - 序列号(Sequence Number):32位,用于对发送的数据进行排序和重组。 - 确认号(Acknowledgment Number):32位,用于确认接收到的数据。 - 数据偏移(Data Offset):4位,表示TCP首部的长度,以32位字为单位。 - 保留字段(Reserved):6位,保留供将来使用。 - 控制位(Flags):6位,包括6个标志位,分别为CWR、ECE、URG、ACK、PSH和RST,用于控制TCP连接的建立、维护和关闭。 - 窗口(Window):16位,表示发送端还能接收的数据量。 - 校验和(Checksum):16位,用于检验TCP首部和数据的完整性。 - 紧急指针(Urgent Pointer):16位,仅在URG标志置位时有效,表示紧急数据的偏移量。 - 选项(Options):可选字段,用于扩展TCP功能。 - 填充(Padding):用于使TCP首部的长度为32位的整数倍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值