再问三次握手,最后ACK发了,但是丢失,会导致什么情况?

bineon 2006-11-28 09:20:18
a--syn-->b

b--syn/ack-->a

此时a收到b的syn/ack之后,处于连接已建立状态,此后a发送ack给b,结果中间这个ack丢失了呢?
但是此时b处于syn_rcvd状态而非建立状态,那b该如何处理呢?
三次握手不是应该能保证连接状态的吗?
此时对于a来说,由于连接已经建立,那么如果a发数据包给b,b肯定是接受不到,自然也不会返回数据包的ack,那么a是不是一只不停的发同一数据包呢?
...全文
527 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tcww88 2006-12-09
  • 打赏
  • 举报
回复
本人新手,一些想法,和各位讨论,错误难免,一定请指正。

此时a处于established状态,b处于syn_rcvd状态。

b由于收不到最后一个ack,会重发syn+ack,直到syn timeout,退出连接。即使发过去的syn+ack被a收到,由于a进入了established状态,直接将此包丢弃。
a的情况比较复杂:
1.a发的data一直没有被b收到,此时,a会重发,如果keepalive option没打开,则一直重发。如果keepalive打开,一段时间后a也退出。

2.a发的data被b收到,此时,无论b处于syn_rcvd还是退出状态,收到后都返回rst,然后a退出。
bineon 2006-12-04
  • 打赏
  • 举报
回复
谢谢解释。
但是对于B呢?B此时处于SYN_RCVD状态,何时才会改变该状态呢?
lurenfu 2006-11-30
  • 打赏
  • 举报
回复
重连一定次数就断开
仰望星空WU 2006-11-29
  • 打赏
  • 举报
回复
楼上正解,a会重连
ccxian123 2006-11-28
  • 打赏
  • 举报
回复
A以为连接已建立了可以向B发包,但B会丢掉,由于A收不到B的确认故重传,一定次数后A确定连接断开。

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧