AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 120055
In Process
Mike
Mike
Asked: 2010-03-08 08:31:28 +0800 CST2010-03-08 08:31:28 +0800 CST 2010-03-08 08:31:28 +0800 CST

使用 Go-Back-N 协议的序列号有多少位

  • 772

我是 Stack Overflow(软件开发人员)的常客,正在尝试通过网络课程。我有一个家庭作业问题,我想检查一下。这是我得到的。

问:

一条 3000 公里长的 T1 中继用于使用 Go-Back-N 协议传输 64 字节的帧。如果传播速度为 6 微秒/公里,序列号应该是多少位?

我的答案:

对于这个问题,我们需要做的是奠定基础知识。我们试图找到的是我们应该使用 Go-Back-N 的最大序列号的大小。为了弄清楚这一点,我们需要计算一次可以容纳多少数据包到我们的链路中,然后从该数字中减去一个。这将确保我们永远不会在链接中同时有两个具有相同序列号的数据包。

链接长度:3,000km 速度:6 微秒/km 帧大小:64 字节 T1 传输速度:1544kb/s ( http://ckp.made-it.com/t1234.html )

传播时间 = 6 微秒 / km * 3000 km = 18,000 微秒 (18ms)。将 1544kb 转换为字节 = 1544 * 1024 = 1581056 字节传输时间 = 64 字节 / 1581056 字节 / 秒 = 0.000040479 秒 (0.4ms)

因此,如果我们将 18 毫秒的传播时间除以 0.4 毫秒的传输时间,我们将看到我们将能够一次将 (18 / 0.4) 45 个数据包填充到链路中。这意味着我们的序列号应该是 2 ^ 45 位长!

我是否朝着正确的方向前进?

谢谢,迈克

protocols link-layer
  • 1 1 个回答
  • 7590 Views

1 个回答

  • Voted
  1. hlovdal
    2011-10-24T13:02:03+08:002011-10-24T13:02:03+08:00

    为了弄清楚这一点,我们需要计算一次可以容纳多少数据包到我们的链路中,然后从该数字中减去一个。这将确保我们永远不会在链接中同时有两个具有相同序列号的数据包。

    我不同意这个推理。没有两个具有相同序列号的数据包的点将通过协议实体不发送窗口外的帧来实现。您应该区分窗口大小、N和序列号范围。对一个只有 5 帧的窗口使用 32 位序列号没有问题,尽管这当然不是最佳的。

    如果一个方向的传输时间是 18 毫秒,那么您将有一个 RTT,往返时间,18 毫秒 + 接收端处理时间 + 18 毫秒。我不知道在这种情况下哪些处理时间值是合理的,所以为了简单起见,我们假设为零。这给出了 36 毫秒的 RTT。这意味着从您发送帧的那一刻起,(在最好的情况下)需要 38 毫秒才能获得该帧的确认。这决定了在决定窗口大小时有意义的未完成数据的上限。如果您有更大的窗口大小,它只会填充发送端的传输缓冲区,而不会影响吞吐量。很可能还有其他因素(例如接收端的缓冲区大小)进一步限制了窗口,但由于没有给出这方面的信息,让'

    为了获得最佳(吞吐量)性能,窗口应该足够大,以便发送方可以连续发送 38 毫秒。T1 速度为每秒 193000 字节。每帧 64 字节对应于每秒 3015.625 帧。0.038 乘以 3015.625 得到 114.59375。也就是说,在 38 毫秒内您可以发送 114 帧。因此,可以选择比理论最大值稍大的窗口大小(例如 115-120)(这样限制因素是物理链路而不是窗口大小)。序列号范围必须大于窗口大小,在这种情况下,128 是一个接近的最大值。

    所以你的问题的答案是,在这种情况下,你需要至少 7 位的序列号。另请参阅此处了解交互式 go-back-n java 小程序。

    • 1

相关问题

  • 了解 VOIP“嗅探器”痕迹

  • TCP 拥塞避免(需要说明)

  • TCP 连接握手

  • DVMRP 与 PIM-DM 组播协议

  • 有哪些不常见的服务/协议?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve