zoukankan      html  css  js  c++  java
  • Ping程序的实现

    Ping程序的实现

    在windows系统下进行cmd可以进行ping操作。

    ping命令是用来确定本地主机与网络中其他主机的网络通信情况,或者查看是否是为效IP

    ping的工作原理:网络另一主机发送ICMP报文,通过返回信息判断网络连接状况。没有通过运输层的TCP或者UDP

      

      可以看到ping的返回信息中有一个值为TTL(time to live)表示ping程序发送的ICMP数据包的生存周期,没经过一个网段,TTL减1,当其值被减到0时,改数据包将被丢弃,该数据包的源地址被告知的情况下,以重新发送数据包。不同的操作系统TTL值不同,Linux64,Windows??(不确定)

    ping的流程:

    •  创建通信套接字
    •  将地址、端口信息于套接字绑定
    •  构建IP包头与ICMP包头
    •  发送构建数据包
    •  接收对方主机回应
    •  给出程序反馈信息

    补充

    ICMP协议:

      即网际控制报文协议,可在网络中实现主机探测,路由维护、路由选择和流量控制。

      由于IP协议没有机制来获取网络错误信息以及对错误进行处理,所以需要一个协议—ICMP协议来解决这个问题,ICMP是IP层的一部分,用于传输差错报文及控制报文遇到错误时能把错误报告给源发送方,ICMP报文是封装在IP数据报内部。

    ICMP包头格式:

    ICMP报文分为两种,一是差错报告报文,二是查询报文。每个ICMP报头均包含类型(8B)、编码(8B)、校验(16B)三项内容。其余选项岁ICMP功能不同而不同。

        ping命令只适用众多ICMP报文中的两种:“回送请求(ICMP_ECHO)”和“回送回答报文(ICMP_ECHOREPLY)”,往返的ICMP报文中都有时间戳。

    参考:http://blog.csdn.net/petershina/article/details/8571562

       http://blog.chinaunix.net/uid-20321537-id-1966835.html

  • 相关阅读:
    eclipse与myeclipse恢复已删除的文件和代码
    DAO层使用泛型的两种方式
    tomcat域名配置
    java 自动装箱与拆箱
    从不同的配置文件中读取配置信息
    java中 == 与 equal 的区别
    myeclipse 启动无故报错
    js验证身份证号,超准确
    myeclipse中使用tomcat修改类不再需要重启了
    myeclipse 的优化与改善
  • 原文地址:https://www.cnblogs.com/zhuzhu2016/p/5804299.html
Copyright © 2011-2022 走看看