关于三次握手的一点疑惑

qiuzhizhe 2007-07-05 11:43:02
书上三次握手的步骤是:
1、客户通过connect发送一个“同步”,请求连接
2、服务器通过listen接受到请求,并确认(accept)客户的“同步”请求,同时自己也发送一个“同步”包。
3、客户确认服务器的“同步”
现在服务器的连接部分程序是:
listen(...);
accept(...);
客户端只有一个:connect(...);

那么我想问:这里只有accept和connect两个函数发送过数据包,何来三次握手呢?难道connect函数会发送两次数据包?
...全文
467 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yztgx 2007-08-08
  • 打赏
  • 举报
回复
你可以用pcap发送原始套接字,模拟一下3次握手的过程,这样了解会更深入一点
yxyhack 2007-08-08
  • 打赏
  • 举报
回复
大家上面已经说的很清楚了,不要混淆API和底层协议的概念,3次握手不是由我们自己来作的,在你调用API的同时API已经帮我们做好这些了(除非你要开发一些底层的特殊功能,比如作DDOS攻击程序什么的)。
vcnewer 2007-08-06
  • 打赏
  • 举报
回复
ls 很详细的说
hdqqq 2007-08-06
  • 打赏
  • 举报
回复
三次握手是协议栈实现的,和accept和connect无关的,上面两个函数只是封装的api
netcreator 2007-08-05
  • 打赏
  • 举报
回复
三次握手完成后,在服务器的缓冲池里就已经有一个已建立的连接了,通常这个池有5个
然后在服务器资源允许的情况下,去accept来清空一个缓冲池里的已连接,并提供服务
三次握手必须立即完成,有超时的,在xp下,半连接是有限制的,是10个,而且通过试验,其三次握手竟然到10分钟时才超时,非常限制使用.
netcreator 2007-08-05
  • 打赏
  • 举报
回复
connect
client : syn
server : syn + ack
client : ack

accept :返回正常使用流的服务器端socket
nizhaorong 2007-07-11
  • 打赏
  • 举报
回复
winsock API 已经完成协议该做的内容了
  • 打赏
  • 举报
回复
syn

syn+ack

确认
zoulijun 2007-07-06
  • 打赏
  • 举报
回复
Accept前就已经握手结束了。
ouyh12345 2007-07-06
  • 打赏
  • 举报
回复
connect就完成了三次握手的过程。
connect等api函数封装了很多细节的东西
mudunke775 2007-07-06
  • 打赏
  • 举报
回复
那么我想问:这里只有accept和connect两个函数发送过数据包,何来三次握手呢?难道connect函数会发送两次数据包?

/////////////////////////////////////////////////////////////////////////

connect只发一次包,3次握手只是一个比喻,并不是互相发了3次包

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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