TCP三次握手在服务器端是由哪个函数完成的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP三次握手在服务器端是由哪个函数完成的?相关的知识,希望对你有一定的参考价值。

TCP三次握手对客户端来说是connect函数来完成。那对主机了?? 是哪个函数来完成啊?是listen?还是说是accept?还是说在在调用listen函数以后内核自动完成3次握手啊

服务端的三次握手时协议栈自动完成的。TCP-IP详解 卷1:18.11.4
在伯克利的T C P实现中采用以下规则:
1) 正等待连接请求的一端有一个固定长度的连接队列,该队列中的连接已被 T C P接受
(即三次握手已经完成)------------TCP协议栈完成三次握手,但还没有被应用层所接受-------应用层accept接受。
注意区分T C P接受一个连接是将其放入这个队列,而应用层接受连接是将其从该队列
中移出。
参考技术A listen启动端口监听,可以接受来自自身XX端口的数据,accept和recv来包

tcp三次握手和四次握手的理解

三次握手:发生在建立tcp的时候

  1、客户端:发送一个syn包给服务端(同步)

  2、服务端:发送一个ack包再加一个syn包给客户端(应答+同步)

  3、客户端:发送一个ack包给服务端(应答)

 

四次握手:发生在断开tcp连接的时候

  1、客户端:发送一个FIN包给服务端

  2、服务端:发送一个ACK包给客户端

  3、服务端:发送一个FIN包给客户端(延时一会发送)

  4、客户端:发送一个ACK包给服务端(延时最大时延2ms,再断开连接)

 

答疑:

  1、最后一次握手,为什么要延时2ms?

    原因1-1:发送的ACK包给服务端,由于网络的原因,有可能会丢失。服务端会不断发FIN包给客户端,此时客户端不能断开连接

 

以上是关于TCP三次握手在服务器端是由哪个函数完成的?的主要内容,如果未能解决你的问题,请参考以下文章

TCP协议三次握手/四次挥手

TCP三次握手四次挥手,通俗易懂版

TCP三次握手详解和四次挥手

面试官问你TCP协议的三次握手过程和四次挥手过程,该如何回答!

TCP三次握手四次挥手

tcp三次握手的过程,accept发生在三次握手哪个阶段?还有UDP协议通讯时怎样得知目标机是不是获得了数据包