源端口和目的端口:TCP是通过通口号来进行应用进程间的通信的。
序号:占32位,序号的范围是0~(2^32-1),当序号变为2^32-1后,下一个序号就要重新从0开始了。假如一个报文段的序号为1001,它的长度为100字节,那么下一个报文段的序号就是1101。
确认号:占32位。确认号是对收到的分组进行确认的。假如A向B发送了一个报文段,A的序号为101,报文段长度为100字节,那么B收到该报文段后,就需要对A发送确认报文段,这个确认报文段里的确认号为201。有以下公式:
如果确认号为N+1,那么表示到序号n位置的所有数据均已收到。
数据偏移:该字段即表示tcp首部的长度,该字段占4位,单位为4字节。所以,一个TCP的首部最大为60字节。
六个控制位:每个控制位都只占一位。
UGR:紧急字段,当该值为1时,表示此报文段含有紧急数据,应优先发送。该字段需要和后面会说到的紧急指针配合使用。
ACK:确认字段。该字段在建立连接和断开连接时会用到,传送数据阶段一律为1。
PSH:推送字段。为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。
RST:重置连接字段志。用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。
SYN:同步字段。用于建立连接时使用。
FIN:终止字段。用于释放连接时使用。
窗口:占16位。窗口值是的范围是【0,2^16-1】之间的整数。注意,它表示的是接受窗口,表示允许接受的字节数。比如,B的向A发送了一个确认报文段,该报文段的确认号为101,窗口值为1000.那么表示B下一个接受的报文段序号应该是101,且报文段长度不能超过1000字节。
校验和:占16位。用来检验报文段有没有错误。
紧急指针:占16位。只有当URG字段为1时,该字段才有意思。它表示紧急数据的长度
相关推荐:《linux视频教程》 总结
以上是内存溢出为你收集整理的TCP数据段的首部格式全部内容,希望文章能够帮你解决TCP数据段的首部格式所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)