【问题标题】:Minimal size of a network buffer网络缓冲区的最小大小
【发布时间】:2016-01-31 20:29:20
【问题描述】:

我是一名学生,现在正在学习操作系统课程。我在学习考试时偶然发现了一个奇怪的问题答案,但我找不到它的解释。

问题:假设我们有一个在低物理内存上运行的操作系统。因此,设计者决定使缓冲区(处理连接到网络的所有工作)尽可能小。缓冲区的最小大小可以是多少?

答案:不能只用一个字节来实现,但可以用2个字节大小来实现。

我的想法:它有 4 个答案,其中一个是“3 个字节或更多”,所以我认为这是正确的答案,因为为了建立连接,您需要在列表中能够发送包含所有连接信息的 tcp/udp 或类似包的标头,所以我不知道为什么它是正确的答案(根据参考)。也许是一些退化的情况?

感谢您的帮助。

【问题讨论】:

  • 似乎是一个奇怪的答案,也是一个奇怪的问题。还有更多上下文吗?一个 IP 头是 20 个字节。
  • 不幸的是,这就是整个问题..我以为我遗漏了什么..但我想我得问问写这个问题的人。
  • 我猜有一个论点是一个字节的缓冲区不会给你带来任何好处,但是一个两个字节的缓冲区可以,因为它将对下一阶段的写入减少了一半。但是必须管理缓冲区:必须有人知道它们的地址和长度,这远远超过两个字节,因此在实践中,您可能希望将这些开销分摊到更大的缓冲区上。

标签: tcp network-programming operating-system udp buffer


【解决方案1】:

缓冲区必须至少与网络上的数据包大小一样大。这将取决于硬件接口的类型。我知道没有任何网络系统,甚至可以追溯到拨号时代,使用接近 2 个字节的任何内容。

也许,理论上,您可以拥有一个使用 2 字节数据包的网络系统。相同的逻辑将允许您使用 1 字节数据包(在数据包中传输字节的一部分)。

有时我想知道 CS 教授提出的问题。我想这就是原因:

  1. 能做的就做;
  2. 做不到的,教;
  3. 那些不会做也不会教的人,教体育。

【讨论】:

  • '字节的分数'?
  • 对 4 位数据进行编码,对于 1 字节数据包有 4 位开销。使用两个数据包传输一个字节。
  • 有时候我猜你对CS教授的评论可能是对的,但就我而言,这学期教我操作系统的人很聪明,他能做的甚至比你想象的还要多.他是 Zcash 加密货币背后的开发者之一,这很可能有一天会改变众所周知的比特币。但我同意他们有时会提出不清楚和令人困惑的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-20
  • 1970-01-01
  • 2014-08-22
  • 2021-09-29
  • 1970-01-01
相关资源
最近更新 更多