分享免费的编程资源和教程

网站首页 > 技术教程 正文

TCP之TCP Header

goqiw 2024-09-08 17:07:05 技术教程 41 ℃ 0 评论

TCP毫无疑问是传输层最重要的协议,当今互联网的基石,当然随着基于UDP的QUIC协议的发展,其在不少应用场景有取代TCP的趋势,TCP相对与UDP在当前电信运营商具有更高优先级,这势必也限制了QUIC的应用。

TCP(Transmission Control Protocol,传输控制协议),rfc793,传输主要体现在传输层协议,控制主要在于面向连接、可靠的、拥塞控制等特性,TCP通常被称为面向连接的可靠协议也正是由于这些特性,这里主要介绍一下tcp的基础。

TCP Header

tcp包通常称为Segment,每个tcp Segment都包含如上图的TCP Header和数据段,TCP Header各bits定义如下:

比特位

字节数

名称

描述

0~15

2

Source Port

源端口号

16~31

2

Destination Port

目的端口号

32~63

4

Sequence Number

序列号

64~95

4

Acknowledge Number

确认号

96~99

0.5

Data Offset

数据相对位置

100~103

0.5

Reserved

保留(全0)

104~111

1

TCP Flags

报文标识(见图中解释)

112~127

2

Window

用于ACK包中的rwin大小

128~143

2

Checksum

校验和

144~159

2

Urgent Pointer

紧急数据位置(配合Urgent标识)

160~160/479

0~40

TCP Options

可变选项

由上面可知TCP Header由固定的20字节+0~40字节的Options组成,所以TCP Header最长为60字节

TCP Options

常见TCP Options如下几种:

Kind(Type)

Length

Name

RFC

描述 & 用途

0

1

EOL

RFC 793

选项列表结束

1

1

NOP

RFC 793

无操作(用于补位填充)

2

4

MSS

RFC 793

最大Segment长度

3

3

WSOPT

RFC 1323

窗口扩大系数(Window Scaling Factor)

4

2

SACK-Premitted

RFC 2018

表明支持SACK

5

可变

SACK

RFC 2018

SACK Block(收到乱序数据)

8

10

TSPOT

RFC 1323

Timestamps

19

18

TCP-MD5

RFC 2385

MD5认证

28

4

UTO

RFC 5482

User Timeout(超过一定闲置时间后拆除连接)

29

可变

TCP-AO

RFC 5925

认证(可选用各种算法)

253/254

可变

Experimental

RFC 4727

保留,用于科研实验

TCP Option结构通常称为TLV,如下:

Kind / Type(1 Byte)| Length(1 Byte)| Value

TCP wireshark抓包

TCP Header with P4 Lang

header tcp_h {
bit<16>    srcPort;
bit<16>    dstPort;
bit<32>    seqNo;
bit<32>    ackNo;
bit<4>     dataOffset;
bit<4>     res;
bit<8>     flags;
bit<16>    window;
bit<16>    checksum;
bit<16>    urgentPtr;
}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表