问题标签 [go-back-n]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
981 浏览

networking - Go-Back N 协议 ACK

我正在尝试使用此网站了解 Go-Back N 的工作原理:- http://www.ccs-labs.org/teaching/rn/animations/gbn_sr/

在这里,假设我们正在发送帧 1,2,3,4,5,6(窗口大小 4)并且在当前窗口中我们有帧 1,2,3,4。现在假设 ACK 4 丢失,然后根据网站,当前窗口中的任何帧都不会被重新传输。

据我了解,必须重新传输(当前窗口的)帧3、4、5、6。

我哪里错了?

0 投票
1 回答
310 浏览

java - Java Sockets 默认实现什么 ARQ 协议?

我正在使用包 java.net 中的 Java 套接字。我读到他们使用 TCP,所以我很想知道他们默认实现的 ARQ(自动重复请求)协议。我查看了文档,但找不到任何有关此的信息。

我知道有三种主要的 ARQ 算法:stop-and-wait、go-back-n 和选择性重复。Java Sockets 使用哪一种?

0 投票
0 回答
673 浏览

android - react-native后退按钮android kill app不会进入上一个屏幕

我使用 React-native 和 Stack-navigator 在屏幕之间导航。当我将 Screen1 转到 screen2 时,我想使用本机按钮(回到 android,我不知道 int 是如何调用的),但它杀死了应用程序而不是返回。

这是我使用堆栈导航器的代码示例

在那里,我使用

如果用户有一些错误(或出于某种原因想要返回)我想使用android 原生返回按钮返回到 step1

它对我不起作用,它会杀死我的应用程序

0 投票
1 回答
223 浏览

networking - Go-Back-N和Selective Repeat的重传序号

你能帮我回答这个问题并解释一下吗?谢谢你。

图片

0 投票
1 回答
21 浏览

sdn - 在基于 SDN 的网络上返回 N

是否可以在基于 SDN 的网络中实现 GBN 猜想窗口,而我们有 2 条可能的路由(通过 R1 或 R2)从 clinet 到服务器,我们希望同时使用它们来提高 tcp 性能。提前致谢。

0 投票
1 回答
178 浏览

c - 信号报警过早失效

我有一个signal设置回调处理程序的地方,然后在我的函数中调用alarm(1),以便我的程序将在 1 秒后超时。超时后,我希望它重试相同的阻塞调用recvfrom(),直到设置MAX_ATTEMPTS为 5。

问题:

它在退出程序之前只重试 2 次。知道可能出了什么问题吗?

处理程序(除了打印什么都不做):

这是我的控制台中的输出(来自printf语句):

为什么只尝试了 2 次就退出程序?理想情况下,我希望它在关闭连接之前重试 5 次(这是使用 UDP 的 Go Back N 实现)

更新

我通过在我的处理程序中重新安装signal:解决了这个问题。signal(SIGALRM, timeout_hdler);但这是为什么呢?我做错了吗?

0 投票
1 回答
1053 浏览

networking - 使用 Go-Back-N 的 ACK 号是多少?

在我的讲稿中,返回 n 的例子表明,当接收者收到一个包号 n 时,接收者会向发送者发送一个 ACK​​ 号 n。

但是当我在网上搜索时,一些网站说接收者会向发送者发送 n+1 ACK 以请求下一个数据包。

哪一个是正确的关于返回n?

0 投票
0 回答
240 浏览

python - 如何为这些程序添加滑动窗口机制?

我想在下面的代码中实现一个滑动窗口机制,寻找任何关于从哪里开始的建议。

目前,发送方一直在发送和收集自己的数据包,我不太确定为什么会这样,有人可以帮我解决这个问题并指导我实现协议的正确方向吗?

谢谢

发件人.py

接收器.py

0 投票
1 回答
201 浏览

networking - 关于GBN协议,单个定时器如何跟踪发送未确认数据包的时间?

在 James Kurose 的网络“计算机网络:一种自上而下的方法”一书中,如下所述:“......发送方......尚未确认的数据包。如果收到 ACK 但仍有其他已传输但尚未确认的数据包,则重新启动计时器。

  1. 如果在序列号为 0、1、2、3 的 GB3 协议中。假设发送方发送数据包 0、1、2,并且根据最早传输但尚未确认的数据包 no-0 启动计时器。
  2. 接收方按顺序接收所有数据包。
  3. 接收方(窗口大小为 1)一次发送一个 ack 0,1,2。
  4. 假设发送方收到 ack 0。
  5. 现在根据本书的上述摘录,必须根据数据包 no-1 重新启动计时器,该数据包已发送但尚未确认。

我的问题:发送者如何在过去已经发送过的数据包 1 中重新启动定时器,同时考虑 GBN 协议中的单个定时器?

0 投票
0 回答
174 浏览

java - Go-Back-N 未实现所有序列号的完全重传

我正在尝试通过 UDP 实现 GBN 协议,窗口大小 = 5。我的代码如下:

客户:

服务器:

我的问题是,当我运行这个程序时,任何没有收到 ACK 的数据包都会立即重新传输(服务器超时,客户端再次发送丢失的数据包),如下所示:

收到的数据包的累积确认,最多 1 个(包括 1 个)

收到的数据包累积确认,最多 2 个(包括 2 个)

发生超时,在序列号:3 从 Seq 重新传输:3

收到的数据包的累积确认,最多 3 个(包括 3 个)

收到的数据包的累积确认,最多包括 4 .....

我希望客户端继续发送窗口中的所有数据包,服务器发送 ACK 消息,说明最后一个顺序序列号,直到整​​个窗口大小......

即,如果我们丢失了nextSeqNum= 2 id 的数据包,则希望服务器接收所有数据包 1-5,但重复声明最后一个 ACK​​ num 为 1:

收到的数据包的累积确认,最多 1 个(包括 1 个)

收到的数据包的累积确认,最多 1 个(包括 1 个)

收到的数据包的累积确认,最多 1 个(包括 1 个)

收到的数据包的累积确认,最多 1 个(包括 1 个)

收到的数据包的累积确认,最多 1 个(包括 1 个)

收到的数据包的累积确认,最多 1 个(包括 1 个)

收到的数据包的累积确认,包括 2 .....

我看到我需要catch等到窗口中的所有内容都发送完毕后再实现,但我不知道该怎么做。