现在的位置: 首页 > 综合 > 正文

TCP 报文与协议

2013年10月10日 ⁄ 综合 ⁄ 共 630字 ⁄ 字号 评论关闭

TCP的报文格式为:

 

其中有六个标记位:ACK、 SYN 、FIN、 RST、 PSH 、URG,这些标记位在TCP协议中起着很大的作用,各个标记为的值分别为0/1。

ACK包是ACK标记为1的包。SYN/ACK包是指SYN和ACK标记为均为1的包。下面列举包组合的常用用途:

SYN:同步

ACK:确认

SYN+ACK:初始化一个连接

ACK+FIN:关闭一个连接

RET:快速关闭一个连接,不需要等到对方的确认

FIN不可单独使用,否则会被认为是一个非法包。另外还有一些非法组合,例如SYN+FIN。

 

 

 

TCP建立连接和关闭连接过程:

 

 

 

 

 

 

 

状态迁移图:(只描述了正常情况下的状态迁移)

 

 为什么会出现time_wait状态??是确保服务器端一定收到了ACK,在服务器端发送FIN后,进入到LAST_ACK转态,在它长时间等待后仍然收不到ACK包,它会认为包已经丢失,会重发FIN包。所以会设置一个等待时间2MSL以确保服务器端可以正常关闭。

 

 

参考来源:

http://blog.csdn.net/phunxm/archive/2009/12/27/5085792.aspx

 

http://www.hackbase.com/tech/2009-09-15/56055.html

 

http://lavafree.javaeye.com/blog/700885

 

不可忽略的Keep Alive:

http://tomyz0223.javaeye.com/blog/603187

 

 

抱歉!评论已关闭.