【发布时间】:2015-12-13 15:51:16
【问题描述】:
最近我正在研究RFC 793 以了解 TCP 和套接字行为。
我的一个问题是:
当收到SYN时,监听socket应该立即发送ACK还是等待APP层调用accept函数。
RFC 793 中没有解释这些行为,所以有任何 RFC 解释监听套接字的积压/接受行为。
【问题讨论】:
-
"连接的 TCP 客户端套接字的远程端口将与您传递给连接函数的端口不同。" - 这不是真的。请出示 RFC 的相关部分,让您认为它应该是这样的。
-
@SteffenUllrich,我从MAC平台的实验中得到了这个,我认为这是有道理的。如果有两个连接进来并被接受,它们不应该使用同一个端口。附上代码。
-
抱歉,您的代码有误。它只是打印随机地址和端口。我对 sockaddr_storage 不熟悉,但如果我使用简单的 sockaddr_in 并跳过所有这些转换,一切正常。
-
@SteffenUllrich,谢谢。我将编辑问题。如果有多个客户端连接到服务器,这是否意味着服务器将使用远程客户端端口和本地端口将数据包发送到内部 tcp 套接字?
-
服务器套接字绑定到服务器上的特定IP和端口,然后接收以该IP和端口为目的地的所有数据。到此套接字的不同连接将具有相同的目标但不同的源(IP 和/或端口)。