5

好吧,我注意到在 Java 和其他语言中可能有一个类似于 Socket 的选项

setTrafficClass(int tc) 

我知道我正在使用的应用程序的流量类别为 24,但是尽管谷歌搜索我找不到这些类别对应的列表,也找不到有效类别的列表。

请赐教。md_5

4

3 回答 3

3

根据 的规范Socket.setTrafficClass,我们看到:

对于 Internet 协议 v4,该值由一个 组成integer,其中的最低有效 8 位表示套接字发送的 IP 数据包中 TOS 八位字节的值。RFC 1349 定义 TOS 值如下:

  • IPTOS_LOWCOST( 0x02)
  • IPTOS_RELIABILITY( 0x04)
  • IPTOS_THROUGHPUT( 0x08)
  • IPTOS_LOWDELAY( 0x10)

最后一个低位总是被忽略,因为它对应于 MBZ(必须为零)位。

240x18ie 0x10 | 0x08,它对应于IPTOS_THROUGHPUT并被IPTOS_LOWDELAY设置。

如您所见,TOS 仅作为提示;它要求高吞吐量、低延迟的路由......可能会或可能不会被服务!

您可以 在此处阅读RFC 1349相关的 Wikipedia 文章中有关服务类型的更多信息。

于 2012-08-19T05:12:28.950 回答
2

Javadocs有一些细节。本质上,您正在设置数据包的TOS(服务类型)标头。路由网络可以选择使用它作为关于如何处理数据包的建议(或者它可能完全忽略它)。许多网络实际上并没有对这个领域做任何有意义的事情,所以我不会依赖它的行为。

于 2012-08-19T05:12:27.960 回答
1

流量等级最终是您和最近的路由器之间的问题。该领域经历了几次突变。它在 IPv4 和 IPv6 之间也有所不同。IPv4 的第一个定义在 RFC 791-5 中给出;这在RFC 1349中进行了修订,并在RFC 2474中完全重新定义为“差异化服务”。自从我在 2003 年左右为我的书研究它以来,整个业务很可能已经再次修改。对于 IPv6,请参阅 RFC 2460。Javadoc 中关于IPTOS_*值的内容是指 RFC 1349,并且在编写时已经过时了几年。

于 2012-08-19T05:17:50.583 回答