2013-04-23 43 views
2

我正在使用UDP套接字发送数据包,我想检查接收数据包的IP标头中的TTL字段。可能吗?是否可以读取接收到的UDP数据包的IP标头字段?

我注意到一个IP_HDRINCL sockoption,但它似乎只适用于RAW套接字。

+0

在Linux上,我认为你可以通过设置'IP_RECVTTL'套接字选项并使用'recvmsg()'得到它。 – Barmar 2013-04-23 09:24:38

+0

[This answer](http://stackoverflow.com/a/6689064/1383051)可能会帮助你。 – 2013-04-23 09:29:37

回答

1

当您使用UDP套接字,所有的标题被删除(解封装),所以你将无法得到TTL字段值或IP报头的任何其他领域,但如果你有兴趣在得到它或设置它,使用原始套接字并构建您的头文件,通过使用原始套接字头文件将传递到您的应用程序,包括您构建的头文件(IP + Transport)层头文件。

+0

从技术上讲,UDP没有标题。 OP需要的头是IP(v4?)协议。 – 2013-04-24 04:35:37

+0

TTL在IP标题中,但我一般都在说话。我不明白你的意思是“UDP没有标题”。如果你的意思是我们在使用UDP套接字时没有建立UDP标头,那么是的,但是它仍然存在,如果你使用原始套接字并使用UDP作为传输层协议,你必须建立它。 – Alaa 2013-04-24 20:17:48

相关问题