免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1595 | 回复: 0
打印 上一主题 下一主题

[转帖]T/TCP状态变迁 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-19 14:36 |只看该作者 |倒序浏览
大多数状态变迁图都把状态变迁时发送的报文段标在变迁线的边上。例如,从CLOSED 状态到SYN_SENT状态的变迁就标明发送了一个SYN报文段。每个状态中标出处于该状态时要发送的报文段类型。例如:当处于SYN_RECV状态时,要发出一个带有SYN的报文段,其中还包括对所收到SYN的确认(ACK)。而当处于CLOSE_WAIT状态时,要发出对所收到FIN的确认(ACK)。
   
我们之所以要这样做是因为,在T/IP协议中我们经常需要处理可能造成多次状态变迁的报文段。于是在处理一个报文段时,重要的是处理完报文段后连接所处的最终状态,因为它决定了应答的内容。而如果不使用T/TCP协议,每收到一个报文段通常至多只引起一次状态变迁,只有在收到SYN/ACK报文段时才是例外。
   
1)、RFC 793的状态变迁图中,当应用程序发送数据时,会有从LISTEN状态到SYN_SENT状态的变迁。但实际上典型的API很少提供这种功能。


2)、RFC 1122中描绘了一个直接从FIN_WAIT_1状态到TIME_WAIT状态的变迁,这发生在收到了一个带有FIN和对所发FIN的确认(ACK)的报文段时。但是当收到这样一个报文段时,通常都是先处理ACK使状态变迁到FIN_WAIT_2,接着再处理FIN,并变迁到TIME_WAIT状态。
   
3)、除了SYN_SENT之外的所有状态都发送ACK(处于LISTEN这个末梢状态时,则什么也不发送)。这是因为发送ACK是不受条件限制的:标准TCP报文段的首部总是留有ACK的位置。因此,TCP总是确认已接收到的报文段最高序列号(加1),只有在处理主动打开(SYN_SENT)的SYN报文段和一些重建(RST)报文段时才是例外。

                                                        
               文章来源于>>TCP/IP协议分析博客   需转载请注明:Toad的博客
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP