TCP
一、报文格式
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紧急指针:指向紧急数据的末尾
1.2.9窗口
范围[0,2^16-1]
发送本报文段的一方的接收窗口大小(注意不是接收方窗口),
窗口值告诉对方从本报文段首部的确认号开始算起,接收方允许对方发送的数据量。窗口值作为接收方让发送方设置其发送窗口的依据。
个人理解,我只能发送信息告诉你我能收N字节数据,那么你下一个报文最多就只能发送N字节数据,发多了缓冲区不够。
**窗口字段明确指出了现在允许对方发送的数据量。窗口值经常在变动着。
**
1.2.10检验和
加上12字节的伪首部
类似于UDP的检验。
1.2.12选项
添加内容,用于扩展。
比如SACK,窗口扩大,时间戳。
UDP
一、首部格式
1.1各字段意义
1.1.1源端口号
发送方端口号,需要对方回信时使用,不需要可以全用0,
1.1.2目的端口号
目的端口号。终点交付报文时必须使用
1.1.3长度
UDP数据报长度,最小值8
1.1.4检验和
检测UDP用户数据包在传输中是否有错
二、伪首部格式
伪首部用于计算检验和
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。