检索TCP套接字上的TOS值

时间:2012-01-05 01:43:34

标签: c++ c sockets networking

我有一个场景,客户端在设置了一些IP TOS值(setsockopt(.., IP_TOS, ..)后打开了与服务器的TCP连接。在服务器上我想检索收到的TOS值并在套接字上设置它以便收到的TOS反映在服务器 - 客户端数据包上。

问题是,在服务器端,如何检索从客户端收到的TOS值?我可以假设客户端在整个会话期间不会更改TOS值,因此最初获取和设置TOS值就足够了。

设置IP_RECVTOS并使用辅助数据适用于UDP但不适用于TCP套接字。如何在TCP套接字上实现类似的功能? getsockopt(2) SO_PRIORITYIP_TOS的{​​{1}}将返回本地套接字上的配置值。因此,如果我在本地setsockopt()进行了getsockopt(),则{{1}}会反映该值。它没有反映网络上收到的内容。

1 个答案:

答案 0 :(得分:2)

收到的每个TCP数据报的TOS值都可能会发生变化。

因此,它不是接收 TCP套接字的常量选项。

从后者可以得出结论,接收器不可能从接收TCP套接字中为TOS提取值,而选项的值可能是使用getsockopt()读取的。

由于没有像TCP这样的“辅助消息”这样的功能,我认为找出发送者设置为TOS的唯一方法就是直接检查收到的TCP数据报的头部。