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

转载于:https://www.cnblogs.com/zhuzhu2016/p/5804299.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值