Java Socket编程中的TTL设置技巧 |
您所在的位置:网站首页 › udp设置ttl › Java Socket编程中的TTL设置技巧 |
#include #include int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen); 使用setsockopt()设置TTL: int ttl = 64; setsockopt(socket, IPPROTO_IP, IP_MULTICAST_TTL, (char *)&ttl, sizeof(ttl)); //设置组播TTL setsockopt(socket, IPPROTO_IP, IP_TTL, (char *)&ttl, sizeof(ttl)); // Time To Live (TTL) 域的信息很有趣。每一个被发送出的IP信息包都有一个TTL域,该域被设置 为一个较高的数值(在本例中ping信息包的TTL值为64)。当信息包在网络中被传输时,TTL的域 值通过一个路由器时递减1;当TTL 递减到0时,信息包被路由器抛弃。 设置TTL的目的是防止无法交付的数据报无限制地在因特网中兜圈子,例如,数据报从路由器R1 转发到R2,再转发到R3,然后又转发到R1.这样就白白消耗网络资源。 在IP数据包中有几个字段比较重要,要清楚其含义,TTL、protocol、来源IP、目的IP。 所以我们可以根据TTL的值看出该IP数据包经过了多少个路由器。 还有,操作系统不同,默认的TTL值也不一样,linux下默认的TTL值一般都是64 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |