WHAT?听说你不会实现ping功能?

那咱就先来说说基础知识吧

(一)ping的功能

ping命令可以检测指定设备的在线状态,是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 在电脑上可以直接查看,但是在程序中通常不会直接执行ping命令,而是通过socket编程方式向目标ip地址发送ICMP请求包,然后等待返回结果。

(二)ICMP

它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。它属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。从技术角度来说,ICMP就是一个**“错误侦测与回报机制”**,其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性。当路由器在处理一个数据包的过程中发生了意外,可以通过ICMP向数据包的源端报告有关事件。记住他只是检测错误的并不修改错误,修正错误由任务方来完成
ICMP报文包含在IP数据报中,属于IP的一个用户,IP头部就在ICMP报文的前面,所以一个ICMP报文包括IP头部、ICMP头部和ICMP报文,IP头部的Protocol值为1就说明这是一个ICMP报文,ICMP头部中的类型(Type)域用于说明ICMP报文的作用及格式,此外还有一个代码(Code)域用于详细说明某种ICMP报文的类型,所有数据都在ICMP头部后面。

ICMP消息类型包括以下几种:WHAT?听说你不会实现ping功能?

(三)直接实例(抓包)

我的电脑ping做自己的网关(注意:不要Ping自己,不然抓不到包的)WHAT?听说你不会实现ping功能?
图蓝的是ip数据报,共20个字节,最后四个字节是目的地址(即对方的地址),再网前数四个字节是自己的ip地址,45是版本号
WHAT?听说你不会实现ping功能?
重点来了,来了,他来了!!!他带着ICMP走来了!这就是ICMP
WHAT?听说你不会实现ping功能?
WHAT?听说你不会实现ping功能?
郑重解释一下:这就是上面说的ICMP的ip头部了(只对我自己抓包进行的解释)

数字 解释
08 回显请求(Ping请求) (类型)
00 回显应答(Ping应答)(代码)
4d2a 校验和
0001 标识符 (一次抓包不变)
0031 ***(一次抓包逐次增加)

说了这么多是不是心动了呢?我们的目的就是编程将ip数据报头依次显示出来。那应该怎么组帧呢???别急别急,我们下次分享!!
peace!!!

说明:本人是一名大学生,对问题的理解深度可能有欠缺,如果有什么不对的或者欠缺的提出来之后一定会多加改正,再次感谢看我文章的人,谢谢

相关文章:

  • 2021-09-24
  • 2022-12-23
  • 2021-11-03
  • 2021-08-29
  • 2021-07-13
  • 2021-12-17
猜你喜欢
  • 2021-05-30
  • 2022-12-23
  • 2022-01-31
  • 2021-09-20
  • 2022-12-23
  • 2022-12-23
  • 2021-11-21
相关资源
相似解决方案