关于三次握手的一点疑惑,该怎么处理

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

那么我想问:这里只有accept和connect两个函数发送过数据包,何来三次握手呢?难道connect函数会发送两次数据包?

------解决方案--------------------
那么我想问:这里只有accept和connect两个函数发送过数据包,何来三次握手呢?难道connect函数会发送两次数据包?

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

connect只发一次包,3次握手只是一个比喻,并不是互相发了3次包
------解决方案--------------------
connect就完成了三次握手的过程。
connect等api函数封装了很多细节的东西
------解决方案--------------------
Accept前就已经握手结束了。
------解决方案--------------------
winsock API 已经完成协议该做的内容了
------解决方案--------------------
connect
client : syn
server : syn + ack
client : ack

accept :返回正常使用流的服务器端socket
------解决方案--------------------
三次握手完成后,在服务器的缓冲池里就已经有一个已建立的连接了,通常这个池有5个
然后在服务器资源允许的情况下,去accept来清空一个缓冲池里的已连接,并提供服务
三次握手必须立即完成,有超时的,在xp下,半连接是有限制的,是10个,而且通过试验,其三次握手竟然到10分钟时才超时,非常限制使用.
------解决方案--------------------
三次握手是协议栈实现的,和accept和connect无关的,上面两个函数只是封装的api
------解决方案--------------------
大家上面已经说的很清楚了,不要混淆API和底层协议的概念,3次握手不是由我们自己来作的,在你调用API的同时API已经帮我们做好这些了(除非你要开发一些底层的特殊功能,比如作DDOS攻击程序什么的)。
------解决方案--------------------
你可以用pcap发送原始套接字,模拟一下3次握手的过程,这样了解会更深入一点