【发布时间】:2017-12-23 14:29:24
【问题描述】:
我正在使用 java.net 包中的 Java 套接字。 我读到他们使用 TCP,所以我很想知道他们默认实现的 ARQ(自动重复请求)协议。 我查看了文档,但找不到任何相关信息。
我知道有三种主要的 ARQ 算法:停止等待、返回 n 和选择性重复。 Java Sockets 使用哪一种?
【问题讨论】:
-
可能无论底层操作系统的 TCP 堆栈实现什么。
-
你指的是什么类型的Java Socket?
Socket还是DatagramSocket?前者使用 TCP 协议,因此您应该检查 TCP 使用什么 ARQ,而不是 Sockets 使用什么 ARQ。 DatagramSocket 使用不自动重复的 UDP。 ARQ 上的 Wikipedia 页面已经回答了您关于 TCP 的问题:“传输控制协议使用 Go-Back-N ARQ 的变体来确保通过 Internet 协议可靠地传输数据,该协议不提供数据包的保证交付;具有选择性确认(SACK),它使用选择性重复 ARQ。”。你先上网搜索了吗? -
我的错。我假设根据具体的实现,TCP 基本上可以使用任何 ARQ,所以我在这个(错误的)前提下进行了研究。
标签: java sockets tcp network-programming go-back-n