数据格式
image.png-
数据偏移
1.占4位,取值范围是0x0101~0x1111
2.乘以4:首部长度(Header Length)
3.首部长度是20~60字节 -
保留
占6位,目前全为0 .
小细节
image.png有些资料中,TCP首部的保留(Reserved) 字段占3位,标志(Flags) 字段占9位,Wireshark中也是如此
一个细节
-
UDP的首部中有个16位的字段记录了整个UDP报文段的长度(首部+数据)
但是,TCP的首部中仅仅有个4位的字段记录了TCP报文段的首部长度,并没有字段记录TCP报文段的数据长度 -
分析
1.UDP首部中占1 6位的长度字段是冗余的,纯粹是为了保证首部是32bit对挤
2.TCP\UDP的数据长度,完全可以由IP数据包的首部推测出来
3.传输层的数据长度=网络层的总长度-网络层的首部长度-传输层的首部长度
检验和(Checksum)
-
跟UDP一样, TCP检验和的计算内容:伪首部+首部+数据
伪首部:占用12字节,仅在计算检验和时起作用,并不会传递给网络层
标志位(Flags)
-
URG (Urgent)
当URG=1时,紧急指针字段才有效。表明当前报文段中有紧急数据,应优先尽快传送 -
ACK (Acknowledgment)
当ACK=1时,确认号字段才有效 -
PSH (Push)
暂不做解释 -
RST (Reset)
当RST=1时,表明连接中出现严重差错,必须释放连接,然后再重新建立连接 -
SYN (Synchronization)
1.当SYN=1、ACK=0时,表明这是一个建立连接的请求
2.若对方同意建立连接,则回复SYN=1、ACK=1 -
FIN (Finish)
当FIN=1时,表明数据已经发送完毕,要求释放连接
序号、确认号、窗口
-
序号(Sequence Number)
1.占4字节
2.首先,在传输过程的每一 个字节都会有一 个编号
3.在建立连接后,序号代表:这一次传给对方的TCP数据部分的第一 个字节的编号 -
确认号(Acknowledgment Number)
1.占4字节
2.在建立连接后,确认号代表:期望对方下一次传过来的TCP数据部分的第一个字节的编号 -
窗口(Window)
1.占2字节
2.这个字段有流量控制功能,用以告知对方下一 次允许发送的数据大小(字节为单位)
网友评论