• 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

  • 相关阅读:
    JavaWeb学习笔记(3)
    JavaWeb学习笔记(2)
    JavaWeb学习笔记(1)
    Java学习笔记(20)
    Java学习笔记(19)
    Java学习笔记(18)
    Java学习笔记(17)
    Java学习笔记(16)
    Java学习笔记(15)
    Java学习笔记(14)
  • 原文地址:https://www.cnblogs.com/zhuzhu2016/p/5804299.html
Copyright © 2020-2023  润新知