我有一个场景,客户端在设置了一些IP TOS值(setsockopt(.., IP_TOS, ..)
后打开了与服务器的TCP连接。在服务器上我想检索收到的TOS值并在套接字上设置它以便收到的TOS反映在服务器 - 客户端数据包上。
问题是,在服务器端,如何检索从客户端收到的TOS值?我可以假设客户端在整个会话期间不会更改TOS值,因此最初获取和设置TOS值就足够了。
设置IP_RECVTOS
并使用辅助数据适用于UDP但不适用于TCP套接字。如何在TCP套接字上实现类似的功能? getsockopt(2)
SO_PRIORITY
或IP_TOS
的{{1}}将返回本地套接字上的配置值。因此,如果我在本地setsockopt()
进行了getsockopt()
,则{{1}}会反映该值。它没有反映网络上收到的内容。
答案 0 :(得分:2)
收到的每个TCP数据报的TOS值都可能会发生变化。
因此,它不是接收 TCP套接字的常量选项。
从后者可以得出结论,接收器不可能从接收TCP套接字中为TOS提取值,而选项的值可能是使用getsockopt()
读取的。
由于没有像TCP这样的“辅助消息”这样的功能,我认为找出发送者设置为TOS的唯一方法就是直接检查收到的TCP数据报的头部。