论坛: 黑客进阶 标题: 关于PING包带不带MAC地址的疑惑 复制本贴地址    
作者: tuzi [tuzi]    版主   登录
大家都知道PING这个命令的用法和用途    是ICMP协议应用的一种
前几天和20CN几位斑竹讨论了关于PING包带不带自己的MAC地址



疑问1 发出的PING包中会不会带有自己的MAC  反馈包中 会不会包含目标的MAC

关于疑问1  想法过程如下
我个人认为也不带 但是又有一些细节想不通 
假如我和NetDemon处在同一个LAN中  一个2层 透明桥接 单MAC端口绑定的交换机连接 清空交换表  现在 交换机里面没有任何关于MAC的记录
现在我PING NetDemon  我的PING包 经过交换机 处理 交换机一查看  倒
这个包里 根本就没有MAC 那交换机如何处理  但是我们知道 事实上我们能PING成功

疑惑2 PING。EXE这个程序是否符合OSI的7层模型
如果符合    那不带MAC 到了数据链路层来处理FRAME 
那这个第2层怎么处理这个不带MAC的报文


[此贴被 带脚镣跳舞(tuzi) 在 12月16日00时21分 编辑过]

地主 发表时间: 12/15 22:55

回复: NetDemon [netdemon]   ADMIN   登录
带!

一个ping包的数据如下,他包含了MAC头,IP头,ICMP头,我用|分开标记出来了
其中00 E0 4C 54 DE A9为源MAC地址,00 04 A8 49 55 D0 为目标MAC地址
C0 A8 01 01 为源地址(192.168.1.1),C0 A8 01 03(192.168.1.3)为目标地址
后面绿色的为icmp数据,为abcdefghijklmnopqrstuvwabcdefghi


00 E0 4C 54 DE A9 00 04 A8 49 55 D0 08 00| 45 00
00 3C 06 55 00 00 40 01 F1 17 C0 A8 01 01 C0 A8
01 03
|00 00 4F 5C 02 00 04 00 61 62 63 64 65 66
67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76
77 61 62 63 64 65 66 67 68 69




[此贴被 NetDemon(netdemon) 在 12月16日00时43分 编辑过]

B1层 发表时间: 12/16 00:39

回复: NetDemon [netdemon]   ADMIN   登录
2
ping.exe这个程序的工作过程肯定符合OSI的7层模型,也肯定不需要自己封装MAC地址,这是内核的事情,他和网络传输关系极不密切,他在OSI最高一层,第7层

B2层 发表时间: 12/16 00:57

回复: yufirst [yufirst]   论坛用户   登录
我在资料里面找到了IP头的格式如下:
Version (4) Internet Header Length (4) Type of Service (8) Total Length (16)
Identification (16) Flags (3) Fragment Offset (13)
Time To Live (8) Protocol (8) Header checksum (16)
Source Address (32)
Destination Address (32)
Options (Variable) Padding (0-24)
还有MAC头和ICMP的头呢?老大把格式给出来好吗?最好附带说明

B3层 发表时间: 12/16 15:49

回复: lingshiyon [lingshiyon]   论坛用户   登录
ICMP (Internet Control Message Protocol)  header:
type (1 byte)
code (1 byte)
checksum  (2 bytes)
identifier (2 bytes)
sequence number (2 bytes)
data (size depend on the ping parameter -l)

Ethernet II (14 bytes)
include:
dest mac (6 bytes)
source mac (6 bytes)
type (2 bytes)


B4层 发表时间: 12/16 17:30

回复: tuzi [tuzi]   版主   登录
昨天晚上我得到老大的指点 
得知PING包中带有源和目的的MAC

但是我们知道PING 目标(假如这个目标没屏蔽ICMP) 最大的一个目的 是看目标是否 alive
但在构件PING包前 必须封装MAC  那目的的MAC 还需跨路由的ARP查询
既然ARP 能拿到目的的MAC  那就能证明对方已经是ALIVE的 何必PING呢?
起不是脱裤子放屁  多此一举


B5层 发表时间: 12/16 19:14

回复: NetDemon [netdemon]   ADMIN   登录

不同的概念了,不同的层次的东西,只要网卡加上电,交换机就得到MAC了,但这时候,你主机说不定就是死在磁盘错误没法引导呢,这种情况你能说目标主机是ALIVE的?

打个比方,在ARP查询这个层次,只要你是个人,不管是死尸还是活人,只要你看起来是人的样子,你就是存在的。(也确实是存在嘛,呵呵)
在ping这个层次,他跟你说一句话,你得回答他“你刚刚跟我说的是"xxxx"”,才能证明你是个人,才和你沟通,不然的话他对一条死尸使劲说话那不是SB么?

B6层 发表时间: 12/16 19:34

回复: lingshiyon [lingshiyon]   论坛用户   登录
我想问一个很菜的问题,不要见笑啊:
是不是可以通过分析ping命令所发出的icmp包,如果对方主机没开,则arp无法解析,icmp也无法发出,而如果对方是处于防火墙之后,则可以发出icmp,但是目标计算机不会返回icmp reply应答。
是不是这样就可以判断对方是不在线或是处于防火墙之后呢?
我的问题很菜,请大家不要笑我啊。


[此贴被 lingshiyon(lingshiyon) 在 12月16日21时56分 编辑过]

B7层 发表时间: 12/16 21:14

回复: afan271314 [afan271314]   论坛用户   登录
我想是  不过不在线和在放火墙后怎么判断

B8层 发表时间: 12/17 12:21

回复: lingshiyon [lingshiyon]   论坛用户   登录
安装一个包嗅探程序,比如iris

B9层 发表时间: 12/17 13:00

回复: tuzi [tuzi]   版主   登录
看了老大的比喻
在ARP层次上    如果对方做出了ARP应答 我们就不能说他是个死人 如果对方没有做出ARP应答
我们也不能说他是个死人 可能对方的策略是禁止远程ARP解析

现在要封装PING包 必须要有远程主机的MAC地址和IP  现在我通过ARP解析拿到了远程主机的MAC
也就是说对方做出了ARP应答 那我们还能说他的机子是死的吗? 我想能做出ARP应答 对方肯定在线  对方的TCP/IP也一定工作正常 

所以我的结论就是 如果对方能回应ARP  那对方一定就是存活的 


TO  lingshiyon
对目标ARP 对方应答了 我想对方的机子应该是ALIVE的  它应该在线 
对于PING  无论对方在不在线 PING包都可以发出 对方如果回应了 它就在线
如果它没回应 比如request timed out  那也不能判断对方在不在线
因为对方可能有防火墙 或者对方不在线 
如果ARP能响应 而PING无响应 我想应该是有防火墙

欢迎跟贴

[此贴被 带脚镣跳舞(tuzi) 在 12月17日13时36分 编辑过]

B10层 发表时间: 12/17 13:40

回复: NetDemon [netdemon]   ADMIN   登录
我看你在基础上有些问题啊!

在你的问题中,你的假设是同一个网段,所以目标MAC就直接是就是目标主机
但实际上,如果你在你家ping www.20cn.net的话呢,ping包发出的目标MAC是你的网关,IP头中的IP地址是20cn.net的IP。
然后这个包要改变多次,到达www.20cn.net,又改变多次返回来。
你永远无法得知www.20cn.net这个主机的MAC地址,也不需要得知。
ARP属于数据链路层的问题。和ping不是一个层次的问题。
上边大家说的通过这样判断是否防火墙也是完全不正确的。

再拿电话打个比方,你家电话的线到电讯局的交换机是通的,有人打电话给你,邮局交换机确实把振铃的信号发到你家电话了,(ARP这个层次没问题了),但是,你家电话坏了阿。不会响阿,你Y没听到电话响,都没有拿起电话,这怎么能通话呢?(ping不通)或者是,电话没坏,响了,但你Y看来电显示,一看是追债的,不接,还是没通话成功,(ping不通的原因因为你加防火墙了)


B11层 发表时间: 12/17 15:38

回复: afan271314 [afan271314]   论坛用户   登录
老大  你的比喻  怎么都这么・#¥¥¥  老大  你说的死机  和不在线  不是一样的吗 


[此贴被 真爱有限(afan271314) 在 12月17日17时17分 编辑过]

B12层 发表时间: 12/17 17:03

回复: lingshiyon [lingshiyon]   论坛用户   登录
啊?前几天买的introduction to TCP/IP 今天才开始看,看了一点,再结合netdemon上面说的,我才明白了。:)
原来我把概念搞错了,我查iris捕的包,ethernet头里的destination mac真的是我的网关的ip,和我用arp -a查到的一样啊。:(
我刚看这本书,所有我还想问一下,通过arp协议取得对方mac地址的过程是怎样的呢?它是工作于osi模型的第二层,那么icmp是位于osi模型的传输层吗?在tcp/ip协议组是位于第二层吗?
我刚学网络,好多概念都好乱啊。各位高手一定要教教我啊!谢谢了!

B13层 发表时间: 12/17 21:59

回复: TomyChen [quest]   版主   登录
这是“简”装版



这是完整版





B14层 发表时间: 12/18 08:41

回复: TomyChen [quest]   版主   登录
你没看过这个图吗?一般的TCP/IP的书都会做这样的介绍的。
图1:来自 《TCP/IP详解》
图2:来自2000的帮助,在索引中输入OSI即可看到一小图,点击后看大图。

TCP/IP虽然一直都这么想,但其实他们并不工作在同一层次。
TCP/UDP管运输,所以他们都在运输层。而IP是在网络层,跟ICMP,IGMP同一层次。上图已经说得很明白了。图上画的就已经把TCP/IP协议组画出来了

B15层 发表时间: 12/18 08:47

回复: yufirst [yufirst]   论坛用户   登录
哇噻~老大的比喻我好喜欢一看就懂~~希望老大平时多来点这样的比喻啊

B16层 发表时间: 12/18 10:24

回复: lingshiyon [lingshiyon]   论坛用户   登录
谢谢tomychen,你贴的两个图我上午在书上看到了。:)
ip,icmp,igmp同属于osi模型的网络层,对应于tcp/ip协议组里第二层网际层
tcp,udp属于传输层,用端对端的数据传输
在此这上snmp,telnet,smtp,pop3,ftp,http都属于最高层应用层
数据流通过应用层协议从高到低传到底层(物理层)通过互联设备之后到达对方计算机的网络接口卡(nic),再由低到高回到应用层交由网络应用程序处理,大概是这样的吧?

还有一个问题,arp在osi模型中是位于数据链路层还是网络层呢?

[此贴被 lingshiyon(lingshiyon) 在 12月18日13时05分 编辑过]

B17层 发表时间: 12/18 13:07

回复: zone [zone]   论坛用户   登录
ARP是协议,老大那么说得意思我想是指ARP是为了解决数据链路的问题而存在的,而且而链路是实的,ARP是虚的,说他是链路的也没问题的。然后ping是为了解决传输的问题而存在,不是一个层次的

其实初学者很在意这个是属于哪个层,那个是属于哪个层是没什么必要的,只需要知道高低的层次就行了。在每一个层都有很深的东西可研究,然后还相互交叉。不是说越深层越黑客,你要是研究物理层,那就是讨论如导线的电子流动阻力、电磁波干扰这些东西了,和计算机都没什么关系了

B18层 发表时间: 12/18 17:20

回复: lingshiyon [lingshiyon]   论坛用户   登录
嗯,谢谢了,我刚学tcp/ip,所以想先了解一下基本的概念,以及osi模型和tcp/ip协议组是如何工作的,为以后的深入了解先打个基础。:)不过我现在差不多对osi和tcp/ip模型的几层关系有了一点了解了,多谢各位的指教,以后如果再碰到这方面的问题,也请高手再告诉我一二。先谢过各们了。

B19层 发表时间: 12/18 19:06

回复: lingshiyon [lingshiyon]   论坛用户   登录
?我刚才发的回复怎么没有?丢失了吗?我确实发出去了呀?
谢谢大家的指教,很高兴来到这个论坛,认识大家,也很高兴能有这么多高手帮我,解决我的问题。如果以后还有这方面的问题,还要请各位继续帮忙哦。先谢过了。:)

B20层 发表时间: 12/18 19:12

回复: yanhui [yanhui]   论坛用户   登录
看到

B21层 发表时间: 04-07-18 03:04

回复: baisnow [baisnow]   论坛用户   登录
在出网关时,将MAC换掉了!!!

B22层 发表时间: 04-09-13 23:09

回复: dearsohucom [dearsohu]   论坛用户   登录
老大就是老大,说话简明扼要

B23层 发表时间: 04-09-14 10:14

回复: 286 [unique]   版主   登录
楼上的猪们和鸟儿们,一句话形容你们的话:错上加错!

Ping是什么东西?
Ping是一个命令,而不是协议,Ping所使用的协议是ICMP协议。既然如此,Ping带不带MAC地址这句话是什么意思?
Ping作为一个应用程序,不占OSI七层协议中的任何一层。(而且PING产生早于OSI七层协议。)

B24层 发表时间: 04-09-17 16:23

回复: 286 [unique]   版主   登录
但作为一个网络程序,他的运行离不开网络,而他本身又是一个在应用层上的程序,所以他必须遵从物理层、数据链路层、网络层、传输层、应用层的协议。
1。因此,如果有人发PING命令,而你站在物理层,那你将看到一串串的01代码流,你只能识别出01代码,不知道上面有人发PING命令。

2。如果你站在数据链路层,注意:这就是你们说的MAC地址层。那么无论你占在哪,你都只能接收到“邻接计算机”的MAC地址。
A--->B--->C--->D
如果你在B,你能接到A,C的MAC地址。如果你在C,能接到B,D的MAC地址。(这就是ND接的包的内容)。

3。如果你站在网络层,你看到的自然是IP地址和IP头。如ND截包数据所示。这一点需要说明的是,ICMP工作在网络层,虽然他更应该在传输层,之所以这样作是为了让他更简单。

4。如果你在传输层,那你看到的只是连接或UDP接口。(如果你用过Socket,那你对这个层应该更熟不过了。)
5。如果你在应用层,那你只会对socket里包的内容感兴趣。

回到主题:
PING带不带MAC地址?那你寄一封信的时候,你是不是要把你从哪个信筒投入的也告诉对方?很显然不会,但有人关心这一点,那就是邮局的人。因为PING只会带ND包中不同颜色中绿色的部分,windows系列ping发送的是字母串,别的系统不一定是这样。

那么红黑蓝是怎么回事呢?这些分别是不是层的协议加上去了,而不是PING本身加上去的。他可没这个本事。而ND用的软件工作在数据链路层,所以MAC地址也截到了,但这不是PING的。

另一个问题,PING不符合OSI七层协议,TCP/IP产生早于OSI七层协议,且后者讨论的时候,TCP/IP已成工业标准,另外,由于后者过程太多,因为事实上几乎没有那个协议族支持OSI七层协议。但TCP/IP网络层下没有定义,而OSI七层下定义了物理层和数据链路层,因此我上面把二者混说了。

TO 带脚镣跳舞 B5的发言:
PING包说法是错误的,应该是ICMP包。ICMP包不带源目MAC。
“PING 目标(假如这个目标没屏蔽ICMP) 最大的一个目的 是看目标是否 alive”也是错误的,除了alive之外,还有测TTL值,往返时间,(只是你的最大目的是此而已)。此后的解释同上。

有不同意见者,欢迎与我吵架。

B25层 发表时间: 04-09-17 16:48

论坛: 黑客进阶

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号