TCP/IP协议01 各种基础协议的数据包结构

本博客主要总结一下TCP/IP协议中各层协议的数据包的结构。

(1)数据链路层。

数据链路层整体结构:

数据

长度

数据链路层头部

14字节

数据链路层数据

实际数据长度

数据链路层尾部

4字节

数据链路层头部的结构:

数据

长度

目的MAC

6字节

MAC

6字节

协议类型(IP:0x0800ARP0x0806

2字节

数据链路层尾部的结构:

数据

长度

数据校验和

4字节

(2) IP层。

(a) IP层数据包整体结构。

数据

长度

IP头部

20字节(无选项)

IP层数据

不定长度

(b) IP层数据包头部的结构。

 

其中各个字段说明如下:

数据

说明

版本

IPV4:  0x4,即二进制0100。通常版本和头部长度组成字节为0x45。

头部长度

IHL(Internet Header Length)。单位为4字节。4位二进制最大值为15。因此最大可以表示4x15=60字节。最小为20字节(值为0x5),最大60字节(值为0xf)。

TOS

TOS(Type Of Service,服务类型)。各位的含义稍后专门介绍

总长度

整个数据包的总长度,包括IP头部和数据。

标识

每发送一个数据包,标识增加1.

标识

是否分片等。

BIT00,未用。

BIT1DF,为1表示不要分片。

BIT2MF,为1表示还有更多片。

片偏移

本片的数据与第1片数据开始位置的距离

TTL

TTL(Time to live)允许经过的路由器的最大数量,一般32,64,128。当TTL0时数据包被丢弃。

协议

IP数据包的数据载荷的封装协议。含义稍后专门介绍。

头部校验和

设置时每16位进行反码求和,验证时结果为0则通过。

IP地址

发送数据包的IP地址

目的IP地址

接收数据包的IP地址

选项

可选。头部长度为20时不包含任何选项。

TOS中各位的含义如下表所示,其中4-7位最多只能允许其中一位为1,一般全部为0.

说明

0-3

优先权,一般被忽略。

4

1表示最小延迟

5

1表示最大吞吐量

6

1表示最高可靠性

7

1表示最小费用

IP数据包支持的协议:

协议

说明

1

ICMP

2

IGMP

6

TCP

17

UDP

(3)UDP层。

(aUDP层数据包整体结构。

数据

长度

UDP头部

20字节(无选项)

UDP层数据

不定长度

(c) UDP层数据包头部的结构。

 

其中UDP头部中的长度字段表示UDP数据包的总字节数(UDP头部长度+UDP有效数据的长度),最多65535个字节。

(4)TCP层。

(aTCP层数据包整体结构。

数据

长度

TCP头部

8字节(无选项)

TCP层数据

不定长度

TCP层数据包头部的结构。

 

其中各字段的含义如下表所示:

数据

说明

源端口号

发送者端口号

目的端口号

接收者端口号

顺序号

本数据包中实际数据的第1个字节在所有实际数据中的位置。第1个数据包为0,后面一个数据包的顺序号为前数据包的顺序号+前一个数据包的实际数据的长度。

确认号

希望收到的下一个数据包的顺序号。如果已收到的数据包的顺序号为X,实际数据长度为L,则发送的确认号可以为X+L。本字段当标志位ACK=1时有效。

头部长度

TCP头部的长度。单位为4字节。4位二进制最大值为15。因此最大可以表示4x15=60字节。最小20字节。

保留

标志位

标志位共6位,U、A、P、R、S、F。具体含义稍后解释。

窗口大小

接收方能够一次接收的字节数。

校验和

TCP头部和实际数据的校验和

紧急指针

BSD模式下表示该位置的前一个字节是紧急数据(OOB)

TCP标志位的含义:

说明

URG

紧急指针是否有效

ACK

确认序号是否有效

PSH

接收方应当尽快将这个数据包交给应用层

RST

重置TCP连接

SYN

发起一个TCP连接

FIN

释放一个TCP连接

猜你喜欢

转载自www.cnblogs.com/coe2coe/p/9065327.html