本文主要是介绍tcp数据报头解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
tcp数据报报头解析:16bits: 源端口,即发送端的端口
16bits: 目标端口,即到达端的端口
32bits: Seq,tcp数据报序号,tcp数据报太大超过ip数据报容许,需要分段,标记分段序号
32bits: Ack number,回应序号,确认码
4bits: tcp数据报报头大小,4个字节为一个单位
6bits: 保留,尚未使用
6bits: 控制标志码,0关闭,1启动
URG:1紧急数据包,接收端紧急处理
ACK:1响应数据报,和32bits,Ack number有关
PSH:1要求对方立刻传送缓冲区内对应数据包,无需等待满再传送
RST:1表示立刻结束连接,无需等待手续,此时发送方已强制断线
SYN:1表示发送方希望建立连接,表示开始连接的意思
FIN:1表示传送结束,通知对方完毕,是否同意断线,此时发送端还在等待回复
16bits: window(滑动窗口),告诉对方本机的缓存器还可以接收的数据,单位-字节,0表示满,应暂停传输数据
16bits: 数据效验码,如若不等,表示数据报损毁,进而请求重发数据包
16bits: 紧急数据位置,仅当URG=1时启用,表示紧急数据所在的位置
nbits: 任意数据,一般表示接收端可以接收的最大数据容量等
36-nbits: 补足任意数据,使达到32bits,tcp头部需要时32bits整数倍
tcp3次握手建立连接:
first: 发送端发送一个 SYN=1; seq=n,ack=0 的数据报
second: 接收端发送一个 SYN=1,ACK=1;seq=i, ack=n+1 的数据报
third: 发送端发送一个 ACK=1; seq=m,ack=i+1 的数据报
这篇关于tcp数据报头解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!