1

TCP

一、报文格式

image.png

1.1最少20字节的报文头

1.2每个字段的意义

1.2.1源端口号:发送报文的进程的端口号。
1.2.2目的端口号:接收报文的进程的端口号。
1.2.3序号:待发送数据每一个字节都有一个序号,本报文段所发送的数据的第一个字节的序号,序号范围[0,2^32-1]。
1.2.4确认号:期待收到对方下一个报文段的第一个数据字节的序号确认号为N,意味着0~N-1的字节都已经正确接收
1.2.5数据偏移:由于有选项和填充不确定长度的字段,指出TCP报文段的数据距离TCP报文段头部有多远。也可以理解为实际的TCP首部长度
1.2.6保留:保留给以后使用的字段,目前为0
1.2.7 6个控制位,说明本报文的性质
URG:

Urgent,URG=1表明紧急指针字段有效。不按照原本排队顺序发送,说明本报文段有紧急数据。

ACK:

Acknowledge,ACK=1表明确认号字段有效。ACK=0,确认号无效。
规定建立连接后的报文段ACK=1。

PSH:

Push,交互式通信,发送方立即发送,接收方立即交付上层,不等缓存填满再上交。

RST:

Reset,RST=1表示重新建立连接。

SYN:

Synchronization连接建立时同步序号(个人理解SYN=1就是用来表明建立连接的)。SYN=1,ACK=0用来请求连接。响应SYN=1,ACK=1说明同意建立连接。

FIN:

Finish,FIN=1

1.2.8紧急指针:指向紧急数据的末尾

image.png

1.2.9窗口

范围[0,2^16-1]
发送本报文段的一方的接收窗口大小(注意不是接收方窗口),
窗口值告诉对方从本报文段首部的确认号开始算起,接收方允许对方发送的数据量。窗口值作为接收方让发送方设置其发送窗口的依据。
个人理解,我只能发送信息告诉你我能收N字节数据,那么你下一个报文最多就只能发送N字节数据,发多了缓冲区不够。
**窗口字段明确指出了现在允许对方发送的数据量。窗口值经常在变动着。
**

1.2.10检验和

加上12字节的伪首部
image.png
类似于UDP的检验。

1.2.12选项

添加内容,用于扩展。
比如SACK,窗口扩大,时间戳。

UDP

一、首部格式

image.png

1.1各字段意义

1.1.1源端口号

发送方端口号,需要对方回信时使用,不需要可以全用0,

1.1.2目的端口号

目的端口号。终点交付报文时必须使用

1.1.3长度

UDP数据报长度,最小值8

1.1.4检验和

检测UDP用户数据包在传输中是否有错

二、伪首部格式

image.png
伪首部用于计算检验和


Winson
6 声望1 粉丝

把原本的个人笔记迁移到这里