【发布时间】:2022-01-25 18:18:35
【问题描述】:
我用 C 编写了一个简单的程序。
目前我正在尝试在服务器和客户端之间建立 TCP 握手。
-
所以当我收到 [SYN] 标志时,我会用 [SYN+ACK] 标志(以及任何序列号,所以我选择它为零)和任何 ACK 号来响应
-
并且在代码中,当我在 TCP 握手的最终数据包中从客户端收到服务器 ACK 标志时,我会发送 ACK 标志以及我自己选择的序列号(任何数字),并且 ACK numebr = 收到的 SYC 数据包的序列号增加一,因为没有数据已经从服务器传输过来了。
但我没有收到任何 ACK 数据包。我的客户端一直在发送 SYN 数据包,而我的服务器一直用 Syn +ACK 数据包响应。
我想知道 TCP 握手过程中的序列号和确认号是无关紧要的,因此我可以专注于其他领域,这可能是我的客户端忽略我的 SYN 响应 SYC+ACK 数据包(如 IP 和 tcp 校验和)的原因。还是我先处理的序列号和确认号有什么问题
此外,我在 Linux 中使用从服务器程序创建的 TUN 设备
【问题讨论】:
-
参见 RFC 793 datatracker.ietf.org/doc/html/rfc793#section-3.4 3.4 节中的图表