2.1 TCP/IP命令(Ping)

1.概念

Ping命令来源于物理学中测声纳脉冲的回应情况,利用它可以检查网络是否连通,从而帮助我们分析和判定网络故障。ping命令使用的是ICMP(Internet Control Message Protocol)协议,即Internet控制消息协议的缩写,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

运行ping命令的主机会触发一个IP数据包从本地出发,前往目标主机。这个IP数据包会携带本机和目标主机的IP地址,一个简单的计时器和计数器,并且都从0开始。到达目标主机B后,IP地址调换再将其打回原地。这一去一回的路径不一定一致,只要IP包顺利返回就说明A和B之间双向皆通畅。

查询帮助输入“ping /?”,即可以看到ping的参数。

2.同一网段内(存在)

本机(A)IP地址是“192.168.0.106”,局域网内目标主机(B)的IP地址是“192.168.0.103”,运行“Ping192.168.0.103”后,首先Ping命令会构建一个固定格式的ICMP请求数据包,然后ICMP协议会将这个数据包连同地址“192.168.0.103”一起交给IP层协议,IP层协议会把地址“192.168.0.103”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包。

IP层协议通过目标主机的IP地址和自己的子网掩码,发现它跟自己属同一网络,就直接在本机的ARP缓存表中查找目标主机IP与其MAC的映射关系(如果没有,就发一个ARP请求广播,得到B机的MAC地址),之后交给数据链路层。最后数据链路层会构建一个数据帧,目的地址是IP层传过来的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。

目标主机(B)收到这个数据帧后,先检查此数据帧的目的地址,并和它自己的物理地址对比,如一致则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给它的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,ICMP处理后,马上构建一个ICMP应答包,发送给主机(A),其过程和主机(A)发送ICMP请求包到主机(B)一模一样。

使用Wireshark抓包分析:

3.同一网段内(不存在)

本机(A)IP地址是“192.168.0.106”,局域网内目标主机(B)的IP地址是“192.168.0.189”(此ip地址没有主机使用),运行“Ping192.168.0.189”后,前面和同一网段内的一模一样。

IP层协议通过目标主机的IP地址和自己的子网掩码,发现它跟自己属同一网络,就直接在本机的ARP缓存表中查找目标主机IP与其MAC的映射关系,结果发现没有,于是就发一个ARP请求广播,依然没有得到B机的MAC地址,于是它会不停的发送ARP广播。

使用Wireshark抓包分析:

4.不在同一网段内

本机(A)IP地址是“192.168.0.106”,运行“Pingwww.xapi.edu.cn”后,通过域名解析服务可以得到它的ip地址。首先Ping命令会构建一个固定格式的ICMP请求数据包,然后ICMP协议会将这个数据包连同地址“202.200.82.150”一起交给IP层协议,IP层协议会把地址“202.200.82.150”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包。

IP协议通过计算发现B机与自己不在同一网段内,就直接将其交给路由器处理(想办法取回路由器的MAC,先查找ARP缓存表,没有就广播),路由得到这个数据帧后,会跟主机B进行联系,如果找不到,就向主机A返回一个超时的信息(这里假设只有2台PC,一台路由器)。

超时的原因:对方服务器设置了防火墙(拒绝Ping入或者Ping出),对方服务器ip与外网断开连接或者已经关机,路由器实在无法找到对方等。

使用Wireshark抓包分析:

2.1 TCP/IP命令(Ping)相关推荐

  1. orale的tnsping与TCP/IP的ping命令的比较

    转自:http://www.builder.com.cn/2007/0915/507188.shtml 比较orale的tnsping与TCP/IP的ping命令: ----------------- ...

  2. Java实现TCP/IP的ping连通性

    Java实现TCP/IP的ping连通性 import java.io.BufferedReader; import java.io.InputStream; import java.io.Input ...

  3. 2.5 TCP/IP命令(flushdns)

    2.5 TCP/IP命令(flushdns) 有时候我们会遇到这样的问题:能上网,但某个网页无法正常打开. 原因:一般是由于DNS缓存导致的. 查看以前的DNS缓存信息,使用命令:ipconfig / ...

  4. 系列TCP/IP协议-ping与traceroute命令(006)

    一.引言 在错综复杂的网络的世界里,如何知道对方主机是否可达,链路是否畅通是一个不太简单的问题.现在有两种常用的程序或命令来检查这些问题(ping与traceroute命令).   "pin ...

  5. TCP/IP协议基础(转)

    转自 http://www.chinaunix.net 作者:Bernardus160  发表于:2003-12-03 17:33:15 TCP/IP协议基础 -------------------- ...

  6. EPSON TCP/IP 通信

    EPSON SCARA机器人TCP/IP 通信时,涉及到的相关指令说明. 14.3 TCP/IP命令. OpenNet //打开TCP/IP端口. ChkNet //返回端口状态:等待读取的字节数或错 ...

  7. 使用 Ping 命令测试 TCP/IP 配置

    [list] [*] 要快速获取计算机的 TCP/IP 配置,请打开 命令提示符,然后键入 ipconfig.在"ipconfig"命令的显示中,要确保您正在测试的 TCP/IP ...

  8. TCP/IP illustated: 第七、八章 Ping program Traceroute program

    Ping program 与 Traceroute program 均是以 iCMP 为基础的两个程序. 其功能主要用于探测是否能够连接.观察记录 IP datagram 的路程. Ping Prog ...

  9. ibm aix 抓包命令_在IBM AIX上模拟丢弃的TCP / IP数据包

    本文介绍: AIX内核扩展,允许来往于指定主机的指定百分比的TCP / IP数据包被随机丢弃,以模拟不利的网络状况. 加载,激活和卸载内核扩展的实用程序. C和Java™实用程序,用于监视到达目标主机 ...

  10. TCP/IP协议学习( 三 ) ---- ping原理 和 ICMP

    TCP/IP协议学习( 三 ) ---- ping原理 和 ICMP 1. 命令ping的用法和解析 1.1 ping 的用法 1.2 TTL 是什么? 1.3 SEQ是什么? 2.ICMP协议 2. ...

最新文章

  1. 计算机中的大端模式与小端模式
  2. Objective-c在宏里拼接字符串
  3. 使用Git 管理heroku的项目(windows)
  4. 冲刺一阶段———个人总结04
  5. P4450-双亲数,P5221-Product,P6055-[RC-02]GCD【莫比乌斯反演,杜教筛】
  6. 一句话木马绕过linux安全模式,一句话木马(webshell)是如何执行命令的
  7. linux中resize的含义,linux的resize2fs命令
  8. 不等待输入_明明显示“对方正在输入”却总等不来回复,其实是你误解了
  9. 关于 Hibernate 中的“脏数据”、“脏对象”
  10. Python 爬取张国荣最火的 8 首歌,60000 评论看完泪奔!
  11. (第24讲)java小程序——Applet
  12. 高等数学复习要点(期末考试同济版)
  13. uni-app 实现自定义音效播放
  14. 【观察】从拥抱变化到韧性成长,联想凌拓三年“三级跳”
  15. 文档数据防泄密需求分析
  16. 蓝牙学习之①:调戏小米手环
  17. python: pc端QQ窗口发送多条消息
  18. SharpDevelop学习笔记(4)——SharpDevelop的核心
  19. nginx服务器报错502 bad gateway!
  20. Latex url波浪号~问题

热门文章

  1. 的唯一性_原神:被氪金玩家淹没的角色,输出很高,技能具有唯一性
  2. spring boot实战 静态资源处理
  3. python批量图片自动编码
  4. Qt QSettings读写ini时 General 读不出来值
  5. matlab 读取同一文件中所有图像_matlab 批量读取文件夹内所有图片的几种方法
  6. python 3d游戏脚本_3ds Max python脚本编写及部分API介绍
  7. mysql密码置空_MySQL 8.*版本 修改root密码,置空密码等
  8. python项目如何打包_python项目怎么打包运行?
  9. OpenCasCade图元拖动问题
  10. J2EE开发系列视频教程