免费注册 查看新帖 |

Chinaunix

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

tcp状态转换 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-21 11:58 |只看该作者 |倒序浏览
本帖最后由 gta 于 2010-03-21 12:54 编辑

两个问题
(1)考虑如下情景:
client和server建立了tcp连接,client发送1字节数据给server,然后close socket。client端的close操作会导致一个fin被发送给server。因为网络问题,fin到达server时,先前发送的一字节数据还未到达,此时server是ack这个fin segment,还是ack 客户端最初的syn segment,好使客户端重发数据?


(2)tcp在FIN_WAIT_1和LAST_ACK状态中,如果2msl时间内收不到另一方对FIN的ACK,是不是直接进入CLOSED状态?如果是,考虑以下情景:

客户端在FIN_WAIT_2状态,服务端在CLOSE_WAIT状态,然后服务端close socket,发送一个FIN给客户,从而进入LAST_ACK状态。由于网络问题,该FIN无法送达客户端,这样,2msl之后,服务端的tcp直接进入CLOSED状态。但客户端的tcp因为一直无法收到FIN,是不是就一直要停机在FIN_WAIT_2状态?


ps:谁有tcp协议的automaton全图啊,我咋觉得《tcp/ip详解》上那个自动机没画全呢

论坛徽章:
0
2 [报告]
发表于 2010-03-21 12:43 |只看该作者
没全?
  1.                                     
  2.                               +---------+ ---------\      active OPEN  
  3.                               |  CLOSED |            \    -----------  
  4.                               +---------+<---------\   \   create TCB  
  5.                                 |     ^              \   \  snd SYN   
  6.                    passive OPEN |     |   CLOSE        \   \           
  7.                    ------------ |     | ----------       \   \         
  8.                     create TCB  |     | delete TCB         \   \      
  9.                                 V     |                      \   \     
  10.                               +---------+            CLOSE    |    \   
  11.                               |  LISTEN |          ---------- |     |  
  12.                               +---------+          delete TCB |     |  
  13.                    rcv SYN      |     |     SEND              |     |  
  14.                   -----------   |     |    -------            |     V  
  15. +---------+      snd SYN,ACK  /       \   snd SYN          +---------+
  16. |         |<-----------------           ------------------>|         |
  17. |   SYN   |                    rcv SYN                     |   SYN   |
  18. |   RCVD  |<-----------------------------------------------|   SENT  |
  19. |         |                    snd ACK                     |         |
  20. |         |------------------           -------------------|         |
  21. +---------+   rcv ACK of SYN  \       /  rcv SYN,ACK       +---------+
  22.    |           --------------   |     |   -----------                  
  23.    |                  x         |     |     snd ACK                    
  24.    |                            V     V                                
  25.    |  CLOSE                   +---------+                              
  26.    | -------                  |  ESTAB  |                              
  27.    | snd FIN                  +---------+                              
  28.    |                   CLOSE    |     |    rcv FIN                     
  29.    V                  -------   |     |    -------                     
  30. +---------+          snd FIN  /       \   snd ACK          +---------+
  31. |  FIN    |<-----------------           ------------------>|  CLOSE  |
  32. | WAIT-1  |------------------                              |   WAIT  |
  33. +---------+          rcv FIN  \                            +---------+
  34.    | rcv ACK of FIN   -------   |                            CLOSE  |  
  35.    | --------------   snd ACK   |                           ------- |  
  36.    V        x                   V                           snd FIN V  
  37. +---------+                  +---------+                   +---------+
  38. |FINWAIT-2|                  | CLOSING |                   | LAST-ACK|
  39. +---------+                  +---------+                   +---------+
  40.    |                rcv ACK of FIN |                 rcv ACK of FIN |  
  41.    |  rcv FIN       -------------- |    Timeout=2MSL -------------- |  
  42.    |  -------              x       V    ------------        x       V  
  43.     \ snd ACK                 +---------+delete TCB         +---------+
  44.      ------------------------>|TIME WAIT|------------------>| CLOSED  |
  45.                               +---------+                   +---------+

  46.                       TCP Connection State Diagram
  47.                                Figure 6.
复制代码

论坛徽章:
0
3 [报告]
发表于 2010-03-21 12:58 |只看该作者
rfc 793上的吧?似乎还是不全,比方说FIN_WAIT_1状态,2msl timeout了,会进入closed状态(这个我是实验过的),这图上就没画出来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP