首页 > 试题广场 >

tcp三次握手的过程,accept发生在三次握手哪个阶段()

[单选题]
tcp三次握手的过程,accept发生在三次握手哪个阶段()
  • 第一次握手
  • 第二次握手
  • 第三次握手
  • 三次握手后
推荐
accept发生在三次握手之后。
第一次握手:客户端发送syn包(syn=j)到服务器。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包(ask=k)。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。
三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接。
编辑于 2016-04-09 18:22:50 回复(2)
发表于 2016-04-26 09:07:40 回复(1)
连接在三次握手之后从syn队列移到accept队列,accept系统调用就从accept队列消费新连接
发表于 2017-08-30 19:55:57 回复(0)
发表于 2017-08-17 21:02:08 回复(0)


第一次握手:客户端发送syn包(syn=j)到服务器。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包(ask=k)。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。
三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接
编辑于 2016-08-02 09:33:20 回复(0)
http://blog.163.com/zyf_win/blog/static/12206289220109205015343/
发表于 2016-06-18 16:16:13 回复(0)
服务器端  
socket-->bind-->listen-->accept  
客户端  
socket-->connect
发表于 2016-01-20 16:53:06 回复(0)
发生在三次握手之后
http://blog.csdn.net/vivid_110/article/details/51000513

     经过上面繁杂的介绍,那么我们来一步步分析一下“三次握手”的过程:

                          1、服务端处于LISTEN状态,客户端处于CLOSED状态;

                          2、客户端打开,并进行SYN的发送,处于SYN_SENT状态;

                          3、服务端收到此条消息后,转为SYN_RCVD状态,并对客户端进行消息回复;

                          4、客户端收到此条消息后,转为ESTABLISHED状态,并发送一个ACK的确认消息。

                          5、服务端收到此条消息后,转为ESTABLISHED状态。

    至此,三次握手完成。

    然而,聪明的你,通过上面的分析,你可能会得到这样的结论:accept()发生在第3步,原因是,此时accept()函数需要给此次连接分配资源。的确,最初是想这样设计的。但是,设想一个情景,若有10000个客户端都和该服务端进行连接,发送SYN,服务端收到之后,这些客户端却不再理会服务端的回复,然而此时服务端的资源却都用accept()分配了。这就是所谓的“DDOS攻击”。

    为了解决这个问题,accept()于是被放在三次握手之后。

    当然,这样也不能保证不能被攻击,当然这是后话。

发表于 2017-06-21 14:21:34 回复(0)
accept为函数
发表于 2018-09-15 10:17:52 回复(0)
accept函数是用来获取连接的,只有在三次握手后才能调用。
发表于 2018-02-12 15:36:43 回复(0)
accept函数
发表于 2017-07-14 21:23:08 回复(0)
服务器端  
socket-->bind-->listen-->accept  
客户端  
socket-->connect
发表于 2017-04-12 08:30:10 回复(0)
发表于 2016-10-01 18:38:11 回复(0)
三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接。
发表于 2016-06-28 10:01:07 回复(0)