ping是基于ICMP(Internet Control Message Protocol)协议工作的
 
ICMP报文封装在IP包里,作为“侦察兵”,非常轻巧。
ICMP报文的类型有很多,最常用的是主动请求为8,主动请求的应答为0。
 
查询报文类型
 
    主动发起查询,对应的额就是查询报文类型,ping就是查询报文,是一种主动请求,并且获得主动应答的ICMP协议。
    ping的主动请求和应答分别称为,ICMP ECHO REQUEST 和ICMP ECHO REPLY
比起原生的ICMP,ping多了两个字段,一个是是标识符,一个是序号。
 
 
 
差错报文类型
    几个差错报文的例子:
        终点不可达为3,
        源抑制为4,:让源站放慢发送速度
        超时为11,
        重定向为5 :让下次发给另一个路由器(因为这次绕远路了)
        
        
ping:查询报文类型的使用
 
 
 
Traceroute:差错报文类型的使用
    1.故意设置特使的TTL(为1,到了第一个路由器就报错,返回ICMP包,为2,到了第二个路由器就报错,返回ICMP包,直到目的地为止),来追中去往目的地时沿途经过的路由器
    2.故意设置不分片,从而确定路径的MTU(Maximum Transmission Unit)。发送的第一个分组长度正好与出口MTU相等,遇到窄的关口就会被卡住,发送ICMP网络差错包,类型“需要分片但设置了不分片位”,下次减小分组长度,再发送,循环,知道和目标MTU相等,到达目标主机。
 

7.ICMP与ping的更多相关文章

  1. ICMP协议Ping命令的应用

    ICMP的全称是 Internet Control Message Protocol ,它是TCP/IP协议族的一个子协议,属于网络层协议,用于在IP主机.路由器之间传递控制消息.从技术角度来讲,就是 ...

  2. TCP/IP学习笔记(4)------ICMP,ping,traceroute

    IMCP协议介绍 当传送IP数据包发生错误--比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机.给主机一个处理错误的机会,这 也就是为什么说建立在IP层以上的协议是可能 ...

  3. 第7讲 | ICMP与ping:投石问路的侦察兵

    第7讲 | ICMP与ping:投石问路的侦察兵 ping 是基于 ICMP 协议工作的.ICMP 全称 Internet Control Message Protocol,就是互联网控制报文协议. ...

  4. 网络协议学习笔记(二)物理层到MAC层,交换机和VLAN,ICMP与ping原理

    概述 之前网络学习笔记主要讲解了IP的诞生,或者说整个操作系统的诞生,一旦有了IP,就可以在网络的环境里和其他的机器展开沟通了.现在开始给大家讲解关于网络底层的相关知识. 从物理层到MAC层:如何在宿 ...

  5. (六)ICMP、ping

    ping命令是ICMP协议 127.0.0.1 ifconfig -all

  6. 使用ICMP协议Ping网络主机

    #coding:utf-8 #!/usr/bin/env python import os import argparse import socket import struct import sel ...

  7. VB6之ICMP实现ping功能

    代码备忘 'code by lichmama from cnblogs.com Private Type IPAddr ip1 As Byte ip2 As Byte ip3 As Byte ip4 ...

  8. 网络协议 5 - ICMP 与 ping:投石问路的侦察兵

        日常开发中,我们经常会碰到查询网络是否畅通以及域名对应 IP 地址等小需求,这时候用的最多的应该就是 ping 命令了. 那你知道 ping 命令是怎么工作的吗?今天,我们就来一起认识下 pi ...

  9. 【网络编程2】网络编程基础-发送ICMP包(Ping程序)

    IP协议 网络地址和主机协议 位于网络层的协议,主要目的是使得网络能够互相通信,该协议使用逻辑地址跨网络通信,目前有两个版本IPV4,IPV6. 在IPV4协议中IP地址是一个32位的数备,采用点分四 ...

随机推荐

  1. linux 编译指定库、头文件的路径问题(转)

    1. 为什么会出现undefined reference to 'xxxxx'错误? 首先这是链接错误,不是编译错误,也就是说如果只有这个错误,说明你的程序源码本身没有问题,是你用编译器编译时参数用得 ...

  2. Codeforces Round #535 F-MST Unification

    题目大意: 给定n m 为图中的点数n和边数m 给定m条边的信息 u v w 为u点到v点有一条长度为w的边 图中无环无重边 这个图的MST的花费为k 但可能存在多种花费为k的MST的方案 此时对图中 ...

  3. etc/profile /etc/bashrc ~/.bash_profile ~/.bashrc等配置文件区别

    什么是交互式shell和非交互式shell,什么是login shell 和non-login shell. 交互式模式:就是shell等待你的输入,并且执行你提交的命令.这种模式被称作交互式是因为s ...

  4. MYSql 存储过程自定义跳出

    MYSql存储过程自定义跳出 我们有时会在存储过程中进行一些判断,当判断条件达成时候我们有时会直接跳出存储过程. 但是存储过程不支持return直接返回的操作, 所以我们只能采用另一种方法,'leav ...

  5. 标准 IO fread 与 fwrite 的使用(可以实现二进制流的读写)

    size_t   fread(void *ptr,  size_t size,   size_t nmemb,   FILE *stream); size_t   fwrite(const void ...

  6. 笔记32 SpringMVC中使用静态资源、处理中文乱码

    一.静态资源的使用 在WebConfig.java中有如下代码段 @Override // 配置静态资源处理 public void configureDefaultServletHandling(D ...

  7. CSS3(@media)判断手机横竖屏

    @media all and (orientation : landscape) { h2{color:red;}/*横屏时字体红色*/ } @media all and (orientation : ...

  8. 通过网络socket获取对方 ip 和port

    int getpeername(int s, struct sockaddr *name, socklen_t *namelen);描述获取socket的对方地址struct sockaddr_in ...

  9. 最小表示法——牛客多校第七场A

    脑瘫一样暴力,贪心找最小表示的串,判一个串是否是最小表示法时也是暴力地判.. 但是想不通复杂度是怎么算的.. #include<bits/stdc++.h> using namespace ...

  10. ES,kibana通过nginx添加访问权限

    一.安装nginx yum install epel-release -y yum install -y nginx 二.安装Apache Httpd 密码生成工具 # 生成密码 yum instal ...