A.C*_*Cho 5 c sockets networking
在网络套接字编程中,我知道listen()和accept()做什么.
但是,我想知道的是,在tcp中,3-way,三向握手在哪里发生.
listen()执行3向握手,还是接受()?
我的意思是做syn(客户端)// syn/ack(服务器)// ack(clinet)数据包.
Bar*_*mar 12
应用程序调用后listen(),TCP堆栈将对任何传入连接执行3次握手.这些连接在内核中排队,accept()然后从队列中检索下一个连接并返回它.
有一个backlog参数listen,它指定了这个队列应该有多大(尽管我认为一些实现会忽略它,并使用堆栈中内置的限制).当队列已满时,堆栈将不再执行传入连接的握手; 客户端应该重试,当队列有空间时,它们的连接将成功.
它以这种方式完成,以便客户端SYN/ACK在正常情况下(当积压队列有空间时)尽快收到,因此它不必重新传输SYN.