首先, real time
网络根本不存在,因为在任何网络情况下,您都无法保证以“及时”的方式提供您的信息;实时计算经常被混淆 high performance computing
。其次,人们不能“超过NIC的容量”,因为如果你向它推出太多位,NIC就不会像水管一样爆裂;您的NIC的“容量”(或带宽)是 物理 限制一个连接接口可以物理“流”比特(上/下)的速度,并以每秒兆比特来衡量(不是大型的比特,因为这是一个常见的误称......仅为了清晰起见)。
1)当流量超过NIC容量限制时会发生什么?在Windows中,每个应用程序的速度是否同等降低?或者之前开始的应用程序具有更高的优先级?在Mac或Linux中怎么样?
您运行的每个请求“网络资源”的应用程序(或软件工程师称之为“套接字”)能够以应用程序“绑定”(监听)的界面的最大速度下载/上载,保持请注意,这种“功能”或多或少与操作系统无关(即Windows中的套接字具有与Linux / Mac中相同的基本限制/概念)。因此,如果一个应用程序(比如一个Web服务器)正在运行,它理论上可以以它正在监听的界面的最大速度“提供”网页(比如说'1'/ 1Gb的'nic 1'),这意味着(理论上)它可以在1秒内接收125MB文件/请求,同时发送125MB文件/响应(如果是全双工)。实际上,虽然速度远远低于许多原因......
鉴于此,请说我们的“完美”Web服务器现在还需要处理FTP请求,因此我们在同一台机器上加载一台FTP服务器,该机器将在同一个NIC上监听(在我们的示例中为“nic 1”)。当FTP服务器应用程序启动时,它也将能够接收和发送 取决于 NIC的理论最大值(在我们的示例中为125MB / s)。对于您运行的任何应用程序(Web浏览器,视频游戏,Netflix / Hulu等等)都是如此。现在我遇到了两个或两个以上的应用程序(在我们的示例中是web和ftp),它们能够使用NIC的最大带宽,那么每个应用程序会发生什么?这是通用网络和操作系统实现的地方。
在我们的例子中,假设有80人从我们的网络服务器以10Mb / s的速度下载(总计800Mb / s),然后又有30人进来并以10MB / s的速度从FTP服务器开始下载,总计1100Mb / s ;理论上应该发生的是,每个应用程序将获得NIC可以物理处理的1000Mb带宽的相等份额(类似于操作系统在运行的应用程序中“共享”CPU的方式,最高可达100%的CPU负载)。实际上有一个 LOT 各种因素将决定哪种应用 使用 在给定时刻的带宽量。这些因素的范围可以从请求资源的用户数量到简单的硬件问题3下游的网络跃点,这些类型的问题超出了您的控制范围以及您的NIC可以执行的操作,还要注意哪个应用程序首先启动或首先连接的应用程序没有区别带宽分配。在这个1100Mb / s的情况下,Web服务器很可能以60%带宽的有效速率运行,而当用户可能丢失或者其他一些网络问题可能发生变化时,FTP将达到40% Web服务器仅使用20%,FTP可以以40%的速率继续运行,从而限制了Web服务器接收端的用户。
请记住,这些都是通用场景,以便更好地理解和“真实世界”案例完全不同,需要大量的规划和设计工作,以确保您可以满足用户群的带宽需求(至少尝试满足) 。
2)从Internet下载数据时,我认为浏览器会尽快下载它。这个动作对实时应用程序的网络有多大影响?
浏览器不能像他们那样快速下载,它们的下载速度与任何其他应用程序一样快,并且它们会影响系统的总带宽,就像任何其他应用程序一样(参见答案1)。
3)在Windows中,可以配置进程的优先级。是否有可能同样设置网络优先级?再说一下Mac或Linux怎么样? (我知道在Windows中设置网络优先级的第三方应用程序,但操作系统不支持?)
可以设置“网络”的“优先级”,但不能与设置进程优先级相同。设置“网络优先级”可能意味着一些事情,例如设置NIC的优先级而不是另一个(可以在Win / Mac / Linux中完成,也称为设置'网络接口度量')。如果您的意图是设置特定进程的网络优先级或“网络流量类型”,则称为 '服务质量(QoS)' 并且也可以应用于Win / Mac / Linux(尽管您平台上的QoS设置和配置超出了本问题/答案的范围)。 QoS允许您限制/评估分配给特定事物的带宽;例如,您可以设置QoS,以便在没有其他任何内容下载时允许Torrent下载的最大带宽,然后在其他网络活动开始时自动将其限制为仅5%的总带宽分配,以确保您的Torrent下载不会占用您的所有带宽当您尝试查看电子邮件或观看YouTube时(仅作为示例)。
4)每个IP头具有包括优先级设置的TOS字段。我听说大多数操作系统和路由器忽略了这个领域。真的吗?
该 '服务类型' 字段定义 通过这些 2 RFC 从此变成了所谓的“差异化服务代码点”。它是 不 被忽略了,因为它只是'没用过'。换句话说,仅仅因为设置字段的数据包并不意味着您(作为网络设备的实现者)必须实际“对其做任何事情”,ToS是QoS的一部分,因此您的特定操作系统/设备必须支持ToS / DS字段。话虽这么说,大多数操作系统/网络设备都有一些功能,允许您通过一些QoS策略使用这些字段(至少我不知道任何现代实例, 别 有某种QoS实现)。
重新迭代,没有“实时网络”这样的符号,而是你会说“低延迟”(甚至“接近实时”),因为“实时”意味着保证时间交付请求/实施操作。您不能保证在网络上执行的任何操作都将具有X的特定时间传递,而您可以说可以保证网络操作在给定节点上没有比X更高/更低的延迟。
我还建议阅读QoS,因为看起来可能是你的问题背后的问题和QoS可能会变得复杂,具体取决于您的需求。
我希望能有所帮助。