在网络套接字编程中,我知道listen()和accept()的作用。
但是,我想知道的是,在TCP中,三次握手发生在哪里。
是listen()执行三次握手,还是accept()?
我的意思是做syn(客户端)// syn / ack(服务器)// ack(客户端)数据包。
答案:三次握手发生在accept()中。当客户端发送SYN时,服务器通过accept()接受连接并发送SYN-ACK响应,然后客户端再发送ACK来建立连接。
但是,我想知道的是,在TCP中,三次握手发生在哪里。
是listen()执行三次握手,还是accept()?
我的意思是做syn(客户端)// syn / ack(服务器)// ack(客户端)数据包。
答案:三次握手发生在accept()中。当客户端发送SYN时,服务器通过accept()接受连接并发送SYN-ACK响应,然后客户端再发送ACK来建立连接。
listen()
和accept()
都不是TCP(或任何其他支持的协议)的直接接口。当然,Danny_ds是正确的,listen()
必须在执行任何握手之前返回(或能够返回),但这并不意味着系统在建立连接之前等待accept()
调用。 - John Bollinger