java InetAdress 的isReachable

在分布式系统中经常需要使用到心跳机制作为探活的手段。在java 中InetAdress有个isReachable功能,可以判断网络是否通,与ping类似。
在非root 用户下使用isReachable时,其实是通过tcp 协议,向对端的7号端口发送了一个报文。这种情况下有一定隐患,并不是所有机器的7号端口都是开启的(有些环境为了安全考虑会关闭一些著名的端口)


image.png

在root 用户下执行时,是通过ICMP 发送一个探活报文(ping 的实现就是ICMP)。这种协议是一种可靠的协议,并且不依赖端口。


image.png

非root 用户如果用cap_net_raw 权限,可以发送ICMP协议。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    JasonShi6306421阅读 4,987评论 0 1
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    xiaomonkeyhou阅读 2,767评论 0 0
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    759_1ebb阅读 13,092评论 2 4
  • 套接字地址结构 ipv4套接字地址结构 POSIX定义如下: sin_len字段,是由处理来自不同协议族的套接字地...
    FengyunSky阅读 3,831评论 0 1
  • 我是结合android中遇到的网络知识串联一遍,可能会很杂,但是对复习网络基础知识很有帮助。 Socket: so...
    伪代码阅读 4,059评论 0 12