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三次握手在服务器端是由哪个函数完成的?的主要内容,如果未能解决你的问题,请参考以下文章