免费注册 查看新帖 |

Chinaunix

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

腾讯面试题:tcp三次握手的过程,accept发生在三次握手哪个阶段? . [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-06-26 15:21 |只看该作者 |倒序浏览
先说一下自己的观点   不知是否正确 高手指正我觉得腾讯 这个题目 似乎 有点问题啊
accept 好像可以发生在3次握手之前  也可以发生在3次握手之后。。。。。
  
不信 可以试试
1.没有accept   3次握手照样成功。也就是说你可以等到3次握手成功以后,再调用accept
  
2.你也可以先调用accept,后面再开始3次握手,但是,这种情况下,accept会阻塞直到3次握手成功为止。------------------------------------------------------------------------------------------------------------------------------------------------------- 网友评论:accept发生在三次握手之后。

第一次握手:客户端发送syn包(syn=j)到服务器。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包(ask=k)。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。
三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接。 ------------------------------------------------------------ 答案到底是神马。。。。。。。。。。。

论坛徽章:
0
2 [报告]
发表于 2012-06-27 17:07 |只看该作者
3次握手发生在客户端 connect 时 而服务器accept 只是从内核取出可以已完成握手的队列中取出一个。。

论坛徽章:
0
3 [报告]
发表于 2012-06-27 17:07 |只看该作者
accept 应该与3次握手中的哪一个都没有关系。。

论坛徽章:
0
4 [报告]
发表于 2012-07-01 17:49 |只看该作者
也许腾讯出的就是一道错题

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
5 [报告]
发表于 2012-07-03 22:39 |只看该作者
不应该是connect么?strace看一下哦

论坛徽章:
0
6 [报告]
发表于 2012-07-19 00:52 |只看该作者
accept 只是取出连接,与握握握手 没关系吧。

论坛徽章:
0
7 [报告]
发表于 2012-07-19 11:42 |只看该作者
Unix网络编程里面不是有个图么,服务器调用accept阻塞,然后客户端connect完成三次握手后,accept返回。不是哪个阶段,accept与三次握手应该没关系

论坛徽章:
0
8 [报告]
发表于 2012-07-19 14:58 |只看该作者
http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html   这里对三次握手 介绍的比较清楚,可以看看。

论坛徽章:
0
9 [报告]
发表于 2012-08-07 14:53 |只看该作者
accept确实是从 内核取出而且,有没有accept,感觉应该对三次握手没影响

论坛徽章:
0
10 [报告]
发表于 2012-08-15 12:49 |只看该作者
服务器被动等待,客户端主动连接发生三次握手,accept只跟状态转移有关,从完成队列中取出一个连接,状态变为connect。
也就是说accept之前就完成了三次握手的行为,在accept也经历了好几次状态转移,这个时候都处于未完成队列里面。
书上的图画的蛮清楚的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP