【发布时间】:2017-02-01 13:43:42
【问题描述】:
我正在尝试实现一个 tcp 堆栈。 我遵循的步骤如下:
-
TCP 开启:
一个。客户端向服务器发送带有初始序列号“C”和确认号“0”的“SYN”。
b.服务器以 SYN + ACK 响应,序列号为“S”,确认号为“C+1”。
c。客户端发送 ACK+PSH,序列号为“C+1”,确认号为“S+1”。
-
TCP 发送和接收:
一个。客户端将发送带有 ACK 标志和数据的数据请求 seq 没有“C+1”,ack 没有“S+1”
b.发送方将在段中发送带有 seq no "S+1+data" 的片段,接收方将发送带有 ack no "S+1+data" 的 ACK,直到 FIN 或 RST 被传输。
在我的情况下,在数据传输过程中,我收到的数据包不多,但我可以在 wireshark 上看到它们。
是否有任何机制可以使用序列号和确认号检查乱序数据和数据包丢失并取回数据包
【问题讨论】:
-
你是自己写低级tcp还是用系统函数写和接收?
-
它是一个低级 tcp