ping的详细过程

2023-05-16

ping是我们在Linux中测试网络连接的常用指令。首先ping是应用程序,而不是协议,它利用ICMP【Internet control message protocol 因特网控制报文协议】报文检测网络连接。

首先假设A ping B
1.ping通知系统建立一个固定格式的ICMP请求数据包。
2.ICMP协议打包这个数据包和B的IP地址转交给IP协议层
3.IP层协议将机器B的IP地址为目的地址,本机的IP地址为源地址,加上一些头部必要的控制信息,构建一个IP数据包
4.获取B的MAC地址,做这个操作首先机器A会判断B是否在同一网段内,若IP层协议通过B的IP地址和自己的子网掩码,发现它跟自己属于同一网络,就直接在本网络查找这台机器的MAC,否则则通过路由器进行类似查找。
接下来是ARP协议根据IP地址查找MAC地址的过程:
若两台机器之前有过通信,在机器A的ARP缓存表里应该存有B的IP与其MAC地址的映射关系。
若没有,则通过发送ARP请求广播,得到回应的B机器MAC地址,并交给数据链路层

5.数据链路层构建一个数据帧,目的地址是IP层传过来的MAC地址,源地址是本机的MAC地址,再附加一些必要的控制信息,依据以太网的介质访问规则将他们传送出去

6.机器B收到这个数据帧后,先检查目的地址,和本机MAC地址对比:
符合,接受。接收后检查该数据帧。将IP数据包从帧中提取出来,交给本机的的IP地址协议层协议,IP协议层检查之后,将有用的信息提取给ICMP协议,后者处理,马上构建一个ICMP应答包,发送给A,其过程和主机A发送ICMP请求包到B的过程类似,但不用ARP广播收取A的信息,因为请求包中已经有足够的信息用于B回应A。
若不符合,丢弃。

可以知道PING的过程即一段发送报文和接受确认报文的过程,在来回直接可以计算时延。其过程简单,但其中还包括了一步ARP协议请求,广播请求,单播回应的过程。其他都是正常IP数据包的发送和接受

转自:https://www.cnblogs.com/cherishry/p/5717387.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ping的详细过程 的相关文章

  • 主机可以ping通虚拟机但无法访问虚拟机某一端口

    问题描述 主机可以ping通虚拟机 xff0c 但是服务器启动状态下访问 192 168 200 152 8888失败 背景 UFW防火墙已经开放 8888 端口 原因和解法 firewall这个防火墙的8888端口没有开放 xff0c 使
  • 更改适配器选项没有VMnet1和VMnet8,且不能ping通即全部“请求超时”,打不开MobaXterm_Personal_22.0这个工具的解决方法

    我在网上查找到的有效的解决方法 第一步 第二步 第一步 百度文库 baidu com 我用的方法二 xff0c 结果我的网络适配器里只有VMnet8 第二步 因为我主要是想用MobaXterm这个工具 xff0c ping不通即 请求超时
  • ubuntu安装mysql详细过程

    1 安装mysql server sudo apt install mysql server 2 登录 sudo mysql u root p 两点要注意 添加sudo password中 任意密码都能登录 3 修改登录密码 ALTER U
  • 解决cmd 中ping>nul语句提示命令符无法识别

    问题描述 xff1a 在批量使用chrome exe ftp data hdf amp ping n10 127 0 0 1 gt nul 下载数据时 xff0c 命令行没有因为ping命令暂停 解决 xff1a 怀疑是ping这部分命令存
  • 【ubuntu16.04 LTS】 ping www.baidu.com不通

    想更新一个软件包 xff0c 发现ubuntu不能正常更新 xff0c 结果ping www baidu com不通 xff0c 但是ping ip 可能 xff0c 所以认为是DNS没有配置 解决方法 xff1a 1 xff0c 既然能p
  • 解决WSL上不了网以及不能通过wsl网络ping通主机

    解决WSL上不了网以及不能通过wsl网络ping通主机 WSL上不了网 在更换电脑无线网络之后 xff0c 发现wsl上不了网 xff0c ssh显示no route xff0c ping baidu com ping不通 xff0c 但是
  • ICMP协议Ping方法的Python实现解析

    ICMP协议Ping方法的Python实现解析 说明 本代码适合Windows 没有在其他系统下进行测试 参考对象为https github com samuel python ping 流程 选择目标网址 解析对方ip地址 构造数据报 添
  • 如何使用 bash 测试互联网连接?

    如何在不 ping 某些网站的情况下测试互联网连接 我的意思是 如果有连接但站点已关闭怎么办 是否有检查与世界的联系 无 ping bin bash wget q spider http google com if eq 0 then ec
  • mac dns 查找行为不当

    买了一台新 Mac 现在我正在尝试安装 更新一些东西 我遇到的第一个问题是 从内部脚本 程序 例如 git 或 ruby gem 发出的 http 请求不起作用 我将在下面举一个我使用的解决方法的示例 因为它比任何解释都更好地说明了问题 任
  • 检查在线状态,例如通过 ping

    我正在使用 VB NET 为 Windows 10 IoT 开发通用 Windows 应用程序 我正在检查两件事 首先是是否有任何网络 我在用 Imports System Net NetworkInformation NetworkInt
  • 无论 IP 地址是什么,isReachable 始终返回 true

    所以我一直在使用 isReachable 在我的 java 代码中 ping 一个地址 这段代码似乎是每个人都使用的 try InetAddress address InetAddress getByName 172 16 2 0 Try
  • 什么是 deep_ping [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我不确定这是否是提问的正确论坛 但我也不知道在哪里提问 所以这是我的问题 深平 是什么意思 我尝试了谷歌 但仍然没有得到任何有关它的信息 另外 深度
  • 尽管 Web 浏览器在同一台计算机上运行,​​但 Ping 请求超时

    我现在就在万维网上 StackOverflow 上的发帖证明了这一点 但是 如果我尝试ping stackoverflow com从命令行 ping 超时 我需要做什么才能 ping 正常 gt ping stackoverflow com
  • 有没有办法让 Android 设备应答发送到广播地址的 icmp ping?

    我想以编程方式让我的设备在连接到 wifi 网络时响应广播 ping 即 ping 192 178 1 255 我有办法做到这一点吗 也许是一个会回复的侦听器 或者是在某处设置的标志 Thanks 我有办法做到这一点吗 简而言之 是的 但集
  • 你能在 Java 中运行真正的 ping 吗?

    过去几周我做了相当多的研究 试图创建一个连接诊断工具 我不想只是检查连接是否可用 而是诊断是否存在抖动 数据包丢失等 到目前为止 Java 似乎不支持真正的 ICMP 请求 并且有一些解决方法 但没有一个能够实现我想要做的事情 有谁知道是否
  • 地址可达性 - 服务器和端口 - iOS 5

    我正在尝试检查服务器是否在线或离线 连接到服务器时我面临一个问题 即它有一个端口 我现在的代码 struct sockaddr in address address sin len sizeof address address sin fa
  • Android:ping:icmp 打开套接字:不允许操作

    是否可以在没有 root 访问权限的情况下在 Android 4 3 上执行 ping 有些人建议 sudo chmod u s system bin ping http ben goodacre name tech Ping icmp o
  • 检查 Android/Java 上的端口是否打开

    我想检查端口是否打开 或者服务器是否正在其上运行 我已经以多种方式尝试过 例如 system bin ping 和 InetAddress 但如果我是对的 我无法使用这些 ping 特定端口 这次我用 DatagramSockets 的想法
  • 如何在 JavaScript 或 jQuery 中进行 ping 操作?

    我想用 Javascript 创建一个类似游戏的 ping 就像 反恐精英 游戏一样 我正在对服务器 MySQL 进行 AJAX 调用 并想要计算所花费的时间 但我要么计算错误 要么对 ping 的想法有误 这是我到目前为止的代码 var
  • 无法比较飞行中的 ping 时间

    我尝试以下命令失败 sdiff lt ping www nato int lt ping www reuters com 有什么办法可以实时比较 ping 时间吗 通常我只是并排打开两个 xterm 然后在每个 xterm 中运行 ping

随机推荐

  • ubuntu下解决不能识别外部设备的方法

    首先确认手机连接上电脑 xff0c lsusb查看下设备记录 matthew 64 matthew 1230 laptop lsusb Bus 007 Device 009 ID 18d1 4e12 Bus 007 Device 001 I
  • android json解析及简单例子

    JSON的定义 xff1a 一种轻量级的数据交换格式 xff0c 具有良好的可读和便于快速编写的特性 业内主流技术为其提供了完整的解决方案 xff08 有点类似于正则表达式 xff0c 获得了当今大部分语言的支持 xff09 xff0c 从
  • Ubuntu 16.04 如何安装 Python 3.6

    在Ubuntu 16 04版本中 xff0c 系统默认安装 了python 2 7和3 5版本 xff0c 此次安装的是新版本Python 3 6 13 由于系统已经默认安装了Python xff0c 所以相关的依赖文件已经安装妥善 xff
  • ubnutu桌面环境Gnome 配置tweak tool时看不到extension插件选项

    问题 xff1a tweak tool中没用extension选项 xff0c 这是因为没有开启gnome xff0c 解决方法是注销当前用户 然后在登录窗口的右上角 xff0c 选择gnome xff0c 如下图所示 然后在弹出的窗口中选
  • C# 内存与性能优化

    C 内存与性能优化 https www jianshu com p d56f79d83ebd 前两周分享了资源配置与资源管理 xff0c 今天分享一种特殊的资源脚本数据 在Unity项目中 xff0c 我们通常使用C 编写脚本 xff0c
  • 转发——从搭建小系统到架构分布式

    从搭建小系统到架构分布式 从搭建小系统到架构分布式 SpringBoot是目前Spring技术体系中炙手可热的框架之一 既可用于构建业务复杂的企业应用系统 xff0c 也可以开发高性能和高吞吐量的互联网应用 Spring Boot 框架降低
  • 2018-8-30华为机试第三题

    一个很明显的递归问题 package cn csu ksh import java util ArrayList import java util List import java util Scanner public class Mai
  • Android学习之Sensor

    转自http javatest blog 163 com blog static 20865106420126216118757 只需要五步 xff0c 你就能搞定Sensor 让你的程序变的更酷 java view plain copy
  • 虚拟现实技术vr可以用来干什么?虚拟现实技术vr有什么特征

    科技行业的不断蓬勃发展 xff0c 每天会出现一些新的科技产品 xff0c 例如现在很火的虚拟现实技术vr xff0c 虚拟现实技术用的领域很多 xff0c 就拿游戏行业来说 xff0c 玩家可以通过vr眼镜 vr手柄等体验vr游戏 xff
  • Ubuntu18.04安装Qt5.14.2

    1 去官网 xff08 https download qt io archive qt xff09 下载对应的 run版本 这里是5 14 2 2 进入下载后的路径 xff0c 先赋予权限 xff0c 再安装 span class toke
  • Python归并排序

    归并排序 数据科学家每天都在处理算法 然而 xff0c 数据科学学科作为一个整体已经发展成为一个不涉及复杂算法实现的角色 尽管如此 xff0c 从业者仍然可以从建立对算法的理解和知识库中受益 在本文中 xff0c 对排序算法归并排序进行了介
  • Android ADB 源码分析总结

    Android之ADB总结 本文内容如下 xff1a 1 makefile分析及总结 2 adb框架介绍 3 adbd源码分析 3 1 adbd初始化流程分析 3 2 adb shell流程分析 3 3 adb root流程分析 4 adb
  • android4.0新控件Switch方法解析

    就是很像开关的那种控件 xff0c 它只有两个状态 xff1a on和off xff1a 在IOS中 xff0c 有个UISwitch控件 xff0c 其效果图 xff0c 如下 xff1a 在android4 0里面 xff0c 添加了一
  • Android Adb 源码分析(一)

    扭起屁股得意洋洋 最近 xff0c 我负责的项目因为临近量产 xff0c 把之前的userdebug版本关闭 xff0c 转成了user版本 xff0c 增加selinux的权限 xff0c 大家都洋溢在项目准备量产的兴奋和喜悦之中不能自拔
  • ADB源码分析(一)——ADB模块简述

    原文地址 http www apkbus com blog 50331 54609 html 感谢作者的分享 1 Adb 源码路径 system core adb 2 要想很快的了解一个模块的基本情况 xff0c 最直接的就是查看该模块的A
  • Git分支管理规范

    一 分支与角色说明 Git 分支类型 master 分支 xff08 主分支 xff09 稳定版本 develop 分支 xff08 开发分支 xff09 最新版本 release 分支 xff08 发布分支 xff09 发布新版本 hot
  • Kindeditor编辑器 jsp上传错误解决方法 与struts2冲突整合

    上传使用的是upload json jsp文件 xff0c 问题关键在于struts2对于struts2过滤访问的jsp时 xff0c 会改变reqeust的类型 xff0c 由HttpServletRequest变成MultiPartRe
  • Android中Dialog和Toast及其Snackbar的使用和区别

    一 Snackbar的使用 连接地址 http www jcodecraeer com a anzhuokaifa androidkaifa 2015 0714 3187 html 如果说Dialog和Toast是两个极端的话 xff0c
  • 国外SAP自由顾问的价格

    http scnblogs techweb com cn sapfreelancer archives 19 html 非常感谢我的一位在海外做SAP猎头的朋友 xff0c 他做SAP猎头已经七年了 xff0c 而且不久前刚刚离职 xff0
  • ping的详细过程

    ping是我们在Linux中测试网络连接的常用指令 首先ping是应用程序 xff0c 而不是协议 xff0c 它利用ICMP Internet control message protocol 因特网控制报文协议 报文检测网络连接 首先假