在三次握手和四次挥手协议中,客户端和服务器端各用到什么函数?

三次握手与accept()函数的关系?

  1、客户端发送SYN给服务器。

  2、服务器发送SYN+ACK给客户端。

  3、客户端发送ACK给服务器。

  4、连接建立,调用accept()函数获取连接。

在三次握手和四次挥手协议中,客户端和服务器端各用到什么函数?(这里涉及到底层的socket知识)

Socket server 和client通信流程图:

        

Socket三次握手连接图:

       

  从图中可以看出,当客户端调用connect()函数时,触发了连接请求,向服务器发送了SYN J 包,这是connect进入阻塞状态(先调用connect()函数,然后发送SYN包);服务器监听到连接请求,即收到SYN J包,调用accept()函数接收请求(先收到SYN包,然后调用accept()函数),向客户端发送SYN K,ACK J+1,这时accept进入阻塞状态;客户端收到服务器的SYN K,ACK J+1之后,这是connect返回,并对SYN K进行确认;服务器收到ACK K+1时,accept返回,至此三次握手完毕,连接建立。

  总结:客户端的connect()函数在三次握手的第二次之后返回,而服务器端的accept()在三次握手的第三次后返回。

Socket四次挥手断开连接图:

       

猜你喜欢

转载自www.cnblogs.com/HuiH/p/12600472.html