【问题标题】:What ARQ protocol do Java Sockets implement by default?Java Sockets 默认实现什么 ARQ 协议?
【发布时间】: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


【解决方案1】:

Java Socket API 通常是围绕操作系统套接字 API 的包装器。 Java API 只是简单地指示操作系统创建/绑定/关闭套接字并从中读取或写入数据。套接字的内部行为取决于操作系统的实现。 Sou 需要查看您使用的操作系统(Windows/Linux/MacOS/等)使用什么以及是否可配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    相关资源
    最近更新 更多