This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] EVMK2H:[TI-NDK、TCP 堆栈] TCP 3路握手中断!

Guru**** 2034120 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/691521/evmk2h-ti-ndk-tcp-stack-tcp-3way-handshake-broken

器件型号:EVMK2H

大家好、社区

我正在与 TI-RTOS 和 EVMK2H 一起处理一个项目。 我使用 NDK TCP 堆栈创建了 TCP 客户端套接字。 我对这个堆栈有疑问。

使用3路握手(SYN、SYNACK、ACK)的 TCP。 SYN 数据包必须为 SEQ=0、 SYNACK 数据包必须为 SEQ=0 ACK=1、 ACK 数据包必须为 SEQ=1 ACK=1。

在我的情况下、很少 ACK 数据包具有无效的 Seq&ack 编号、而 SYN 和 SYNACK 数据包具有有效的 Seq&ack。 因此、连接从未建立 、因为 EVMK2H 向(SEQ=2973524992) TCP 服务器发送 SYN 数据包时尝试使用 SYNACK (SEQ=341319993、ACK=2973524682)建立、但 NDK-TCP 堆栈使用 ACK (SEQ=139587585、Ack=4140089672)进行应答。

这种三次握手不正常:

--> SYN(Seq=A)

--SYNACK (SEQ=B、ack=A+1)

--> ACK (C 非 A+1、D 非 B+1)

如何处理此问题?  

此致、

SRT

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    团队将收到通知。 他们将直接在此处发布反馈。

    BR
    Tsvetolin Shulev
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您使用的 Processor SDK RTOS 版本和 NDK 版本是什么? 哪种测试应用程序(您自己的代码?) 您是为 TCP 客户端运行的? K2H EVM 是客户端、谁是 TCP 服务器? 您遇到此问题的频率有多高? 每次都是新的启动(下电上电)吗? 或者您是否建立了 TCP 连接、从而在无限循环测试中闭合?

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您的回答。

    RTOS 为`BIOS_6_37_03_30`、NDK 为`NDK_2_22_02_16`。 我创建了 TCP 客户端套接字并将 TCP 连接请求发送到 TCP 服务器。 TCP 服务器在另一个嵌入式电路板上运行。 第一次连接没有问题。 在其中一个 TCP 端断电和通电后(没有 FIN 数据包)出现问题、因此其他 TCP 端无法识别它。  

    我`S了另一项测试:EVMK2H (TCP 客户端)和 PC (TCP 服务器)、测试对象为"便携式测试"(https://bit.ly/2s2or3Y)。  我为 EVMK2H 上电并尝试使用同一端口进行 TCP 连接(PC 仍被认为已建立)。 这一次 PC 端中断 TCP 三次握手(PC 发送了错误的 SYNACK 序列和应答编号)。 是否可能是 TCP 一般问题?

    此致、

    SRT

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您是否能够共享您的 TCP 客户端 CCS 项目以便我可以使用服务器进行构建和测试?

    此致、Eric