【发布时间】:2013-10-12 15:16:44
【问题描述】:
我正在 C/Obj-C 中实现 TCP。
我注意到不同的服务器在某些情况下会增加序列号,而另一些则不会。
即在服务器发送 FIN/ACK 的拆卸过程中,一些服务器将 ACK 数增加 1,而其他服务器则不增加。
澄清问题:
服务器 1: ACK 号已增加到 2
服务器 2: ACK 号仍为 1。 ACK number not increased http://img853.imageshack.us/img853/1248/zf70.png
我的程序关于第二台服务器的输出:
FIN(/ACK)# was 18238 but should have been 18239
我应该如何在我的代码中处理这些服务器端实现的变体?
【问题讨论】:
-
你的目的是什么?您是在实现 TCP/IP 堆栈(通常是操作系统的一部分),还是在编写 TCP 客户端 或 TCP 服务器(应用程序)?
-
我正在实现 TCP/IP 堆栈,从创建 IP 标头到解析 TCP 数据包。
-
如果您对 ACK 号码不满意,那么您应该使用 RST 中止。如图所示。
标签: c networking tcp