ICMP识别二层为广播帧则不发送ICMP目的端口不可达报文

博客围绕ICMP报文回复情况展开。正常构造UDP报文,目的端口不可达时主机1会回复ICMP报文;若二层帧头目的MAC地址为全F则不回复。解释了教学中协议数据处理概念与实际开发不同,实际数据信息保留,UDP可倒回二层帧头读取内容决定是否回复。
拓扑图:

在这里插入图片描述

前提:二层交换机转发数据时不改变帧头中任何字段的数据。
正常情况下,在主机0上构造一个普通的UDP用户数据报报文给主机1,报文中的UDP首部中的目的端口字段填写一个不可能使用的端口号,则主机1在收到此报文后发现本主机上没有进程监听这个目的端口,就会向源发送主机发送一个ICMP目的端口不可达报文。
可如果精心构造的报文的二层帧头中的目的MAC地址字段内容为全F,其他内容与正常情况下完全相同,则主机1就不会回复ICMP目的端口不可达报文。
此时就有了一个疑问,正常理解的概念是,协议每读取完一层数据后,就会把本层的首部和尾部(如果有的话)完全剥离,只把对于本层来说的数据部分根据刚才读取出来的类型字段、协议号、端口号等递交给下一层相应的协议或应用来做进一步的处理。那么在这种理解下,应用层的UDP协议已经发现目的端口不可达之后,则此时数据中的二层帧头应该已经被剥离,还怎么判断出帧头首部中的目的MAC地址字段中的内容为全F进而决定不发送ICMP目的端口不可达报文呢???
其实所谓的首部和尾部剥离之后再递交到下一层协议只是为了方便教学和辅助理解的一种衍生说法。实际开发中所谓的递交到下一层并剥离首部和尾部只是将指针进行移位,而数据本身从来没有任何变化,也就是说所有数据信息都还有保留。所以即便已经到了UDP来读取数据,依旧可以倒回到二层帧头中读取目的MAC地址字段中的内容来决定是否需要回复ICMP目的端口不可达报文。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值