问题标签 [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.
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。
我哪里错了?
java - Java Sockets 默认实现什么 ARQ 协议?
我正在使用包 java.net 中的 Java 套接字。我读到他们使用 TCP,所以我很想知道他们默认实现的 ARQ(自动重复请求)协议。我查看了文档,但找不到任何有关此的信息。
我知道有三种主要的 ARQ 算法:stop-and-wait、go-back-n 和选择性重复。Java Sockets 使用哪一种?
android - react-native后退按钮android kill app不会进入上一个屏幕
我使用 React-native 和 Stack-navigator 在屏幕之间导航。当我将 Screen1 转到 screen2 时,我想使用本机按钮(回到 android,我不知道 int 是如何调用的),但它杀死了应用程序而不是返回。
这是我使用堆栈导航器的代码示例
在那里,我使用
如果用户有一些错误(或出于某种原因想要返回)我想使用android 原生返回按钮返回到 step1
它对我不起作用,它会杀死我的应用程序
networking - Go-Back-N和Selective Repeat的重传序号
你能帮我回答这个问题并解释一下吗?谢谢你。
sdn - 在基于 SDN 的网络上返回 N
是否可以在基于 SDN 的网络中实现 GBN 猜想窗口,而我们有 2 条可能的路由(通过 R1 或 R2)从 clinet 到服务器,我们希望同时使用它们来提高 tcp 性能。提前致谢。
c - 信号报警过早失效
我有一个signal
设置回调处理程序的地方,然后在我的函数中调用alarm(1)
,以便我的程序将在 1 秒后超时。超时后,我希望它重试相同的阻塞调用recvfrom()
,直到设置MAX_ATTEMPTS
为 5。
问题:
它在退出程序之前只重试 2 次。知道可能出了什么问题吗?
处理程序(除了打印什么都不做):
这是我的控制台中的输出(来自printf
语句):
为什么只尝试了 2 次就退出程序?理想情况下,我希望它在关闭连接之前重试 5 次(这是使用 UDP 的 Go Back N 实现)
更新
我通过在我的处理程序中重新安装signal
:解决了这个问题。signal(SIGALRM, timeout_hdler);
但这是为什么呢?我做错了吗?
networking - 使用 Go-Back-N 的 ACK 号是多少?
在我的讲稿中,返回 n 的例子表明,当接收者收到一个包号 n 时,接收者会向发送者发送一个 ACK 号 n。
但是当我在网上搜索时,一些网站说接收者会向发送者发送 n+1 ACK 以请求下一个数据包。
哪一个是正确的关于返回n?
python - 如何为这些程序添加滑动窗口机制?
我想在下面的代码中实现一个滑动窗口机制,寻找任何关于从哪里开始的建议。
目前,发送方一直在发送和收集自己的数据包,我不太确定为什么会这样,有人可以帮我解决这个问题并指导我实现协议的正确方向吗?
谢谢
发件人.py
接收器.py
networking - 关于GBN协议,单个定时器如何跟踪发送未确认数据包的时间?
在 James Kurose 的网络“计算机网络:一种自上而下的方法”一书中,如下所述:“......发送方......尚未确认的数据包。如果收到 ACK 但仍有其他已传输但尚未确认的数据包,则重新启动计时器。
- 如果在序列号为 0、1、2、3 的 GB3 协议中。假设发送方发送数据包 0、1、2,并且根据最早传输但尚未确认的数据包 no-0 启动计时器。
- 接收方按顺序接收所有数据包。
- 接收方(窗口大小为 1)一次发送一个 ack 0,1,2。
- 假设发送方收到 ack 0。
- 现在根据本书的上述摘录,必须根据数据包 no-1 重新启动计时器,该数据包已发送但尚未确认。
我的问题:发送者如何在过去已经发送过的数据包 1 中重新启动定时器,同时考虑 GBN 协议中的单个定时器?
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
等到窗口中的所有内容都发送完毕后再实现,但我不知道该怎么做。