用Python实现PING

PING

概述

ping属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地分析和判定网络故障。

PING ,用于测试网络连接量的程序。Ping发送一个ICMP(Internet Control Messages Protocol)即因特网信报控制协议;回声请求消息给目的地并报告是否收到所希望的ICMPecho (ICMP回声应答)。它是用来检查网络是否通畅或者网络连接速度的命令。

它所利用的原理是这样的:利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通,时延是多少。

ping指的是端对端连通,通常用来作为可用性的检查,但是某些病毒木马会强行大量远程执行ping命令抢占你的网络资源,导致系统变慢,网速变慢。严禁ping入侵作为大多数防火墙的一个基本功能提供给用户进行选择。通常的情况下你如果不用作服务器或者进行网络测试,可以放心的选中它,保护你的电脑。

简单流程

  1. 执行 ping 192.168.0.5

    Ping命令会构建一个固定格式的ICMP请求数据包,
    然后由ICMP协议将这个数据包连同地址“192.168.0.5”一起交给IP层协议

  2. 本机IP层相关操作

    IP层协议将以地址“192.168.0.5”作为目的地址,本机IP地址作为源地址,
    加上一些其他的控制信息,构建一个IP数据包发往192.168.0.5。

  3. 目的主机相关操作

    接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。
    IP层检查后,将有用的信息提取后交给ICMP协议
    ICMP协议后者处理后,马上构建一个ICMP应答包,发送给主机A


ICMP

定位

pin是属于osi七层模型中的应用层。

ping命令使用的tcp报文还是udp报文呢?

ping命令使用的是ICMP报文,ICMP报文封装在ip包里。ICMP协议也是tcp/ip协议族中的一个子协议,所以从这一层面来看,icmp报文和tcp报文,udp报文是同一个级别。

所以ping命令使用的报文既不是tcp报文也不是udp报文。

但是ICMP 跟TCP和UDP没有归属关系,ICMP位于传输层之下,属网络层。用的IP报头。

  • TCP/UDP 在第四层:传输层
  • IP/ICMP 在第三层:网络层

image

补充IGMP

IGMP即Internet工作组管理协议(Internet Group Management Protocol),IGMP主要用来解决网络上广播时占用带宽的问题。

当网络上的信息要传输给所有工作站时,就发出广播(broadcast)信息(即IP地址主机标识位全为1),交换机会将广播信息不经过滤地发给所有工作站;

但当这些信息只需传输给某一部分工作站时,通常采用组播(multicast,也称多点广播)的方式,这就要求交换机支持IGMP。支持IGMP的交换机会识别组播信息并将其转发至相应的组,从而使不需要这些信息的工作站的网络带宽不被浪费。IGMP对于提高多媒体传输时的网络性能尤为重要。

报文结构

image

一、ICMP报文类型
种类</
  • 18
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值