TCP协议数据格式
TCP协议间交换的数据单元称为“TCP段”,包括两部分:⾸部和数据。标准⾸部长20字节,带有选项的⾸部会更长。
1. 源端⼝和⽬的端⼝
各占2字节,端⼝号加上IP地址,共同构成socket。互相通信的进程使⽤⼀对socket,包括协议、源IP、源端⼝、⽬的IP、⽬的端⼝,这五个元素唯⼀确定⼀个TCP连接。
2. 序号
占4字节,是TCP段所发送的数据部分第⼀个字节的序号。在TCP传送的数据流中,每⼀个字节都有⼀个序号。建⽴连接时,发送⽅将初始序号(Initial Sequence Number, ISN)填写到第⼀个发送的TCP段序号中。
3. 确认号
占4字节,是期望收到对⽅下次发送的数据的第⼀个字节的序号,也就是期望收到的下⼀个TCP段的⾸部中的序号,等于已经成功收到的TCP段的最后⼀个字节序号加1。确认号在ACK标志为1时有意义,除了主动发起连接的第⼀个TCP段不设置ACK标志外,其后发送的TCP 段都会设置ACK标志。
4. 数据偏移
占4⽐特,表⽰数据开始的地⽅离TCP段的起始处有多远。实际上就是TCP段⾸部的长度。由于⾸部长度不固定,因此数据偏移字段是必要的。数据偏移以32位为长度单位,因此TCP⾸部的最⼤长度是60(15*4)个字节。
5. 控制位
⼀共6个,占6⽐特,设置为1时有效。按顺序依次为:URG、ACK、PSH、RST、SYN、FIN。
URG紧急位,为1时,⾸部中的紧急指针有效
ACK确认位,为1时,⾸部中的确认号有效
PSH推位,为1时,要求把数据尽快交给应⽤程序
RST复位标志,为1时,复位连接,⼀般在出错或关闭连接时使⽤
SYN同步位,在建⽴连接时使⽤,当SYN=1⽽ACK=0时,表明这是⼀个连接
请求报⽂段。对⽅若同意建⽴连接,在发回的报⽂段中使SYN=1和
socket通信报文格式
ACK=1
FIN结束位,为1时,表⽰发送⽅完成了数据发送
6. 窗⼝
占2字节,表⽰报⽂段发送⽅期望接收的字节数,可接收的序号范围是从接收⽅的确认号开始到确认号加上窗⼝⼤⼩之间的数据。
7. 校验和
校验和包含了伪⾸部、TCP⾸部和数据,校验和是TCP强制要求的,由发送⽅计算,接收⽅验证。
8. 紧急指针
URG标志为1时,紧急指针有效,表⽰数据需要优先处理。紧急指针指出在TCP段中的紧急数据的最后⼀个字节的序号,使接收⽅可以知道紧急数据共有多长。
9. 选项
最常⽤的选项是最⼤段⼤⼩(Maximum Segment Size,MSS),向对⽅通知本机可以接收的最⼤TCP
段长度。MSS选项只在建⽴连接的请求中发送。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论