首页 新闻 会员 周边

关于ping, traceroute和SOCK_RAW的问题

0
悬赏园豆:10 [已关闭问题] 关闭于 2020-03-14 17:04

关于traceroute和SOCK_RAW的问题

大家都知道, 在linux中, 基于UDP的 traceroute程序本身是不需要root的, 可以直接运行, 而不需要sudo traceroute

ping因为需要发送ICMP报文, 所以需要root, 但是 ls -l /bin/ping, 可以发现他是有suid权限的, 这也就解释了用户不需要sudo 也能用他发送ICMP报文的原因, (而 traceroute程序没有suid)

现在, 我想自己实现一个基于UDP的traceroute程序, 需要接收返回的ICMP报文, 但是不是root用户不能创建raw socket
也就是在调用socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)的时候会报错, 那么请问 traceroute程序是如何实现非root用户处理ICMP报文的? 难道不用创建 raw socket??

谢谢!!

KimBing_Ng的主页 KimBing_Ng | 菜鸟二级 | 园豆:352
提问于:2020-03-13 17:43
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册