Java / TCP流量类

时间:2012-08-19 04:59:49

标签: java sockets tcp

我在Java中注意到,可能其他语言中有一个类似于

的Socket选项
setTrafficClass(int tc) 

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

请赐教。 md_5

3 个答案:

答案 0 :(得分:3)

根据specification for Socket.setTrafficClass,我们看到:

  

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

     
      
  • IPTOS_LOWCOST0x02
  •   
  • IPTOS_RELIABILITY0x04
  •   
  • IPTOS_THROUGHPUT0x08
  •   
  • IPTOS_LOWDELAY0x10
  •   
     

始终忽略最后一个低位,因为这对应于MBZ(必须为零)位。

240x18,即0x10 | 0x08,对应IPTOS_THROUGHPUTIPTOS_LOWDELAY设置。

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

您可以在RFC 1349relevant Wikipedia article here中详细了解服务类型

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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