2023年7月31日发(作者:)
ICMP识别⼆层为⼴播帧则不发送ICMP⽬的端⼝不可达报⽂拓扑图:前提:⼆层交换机转发数据时不改变帧头中任何字段的数据。正常情况下,在主机0上构造⼀个普通的UDP⽤户数据报报⽂给主机1,报⽂中的UDP⾸部中的⽬的端⼝字段填写⼀个不可能使⽤的端⼝号,则主机1在收到此报⽂后发现本主机上没有进程监听这个⽬的端⼝,就会向源发送主机发送⼀个ICMP⽬的端⼝不可达报⽂。可如果精⼼构造的报⽂的⼆层帧头中的⽬的MAC地址字段内容为全F,其他内容与正常情况下完全相同,则主机1就不会回复ICMP⽬的端⼝不可达报⽂。此时就有了⼀个疑问,正常理解的概念是,协议每读取完⼀层数据后,就会把本层的⾸部和尾部(如果有的话)完全剥离,只把对于本层来说的数据部分根据刚才读取出来的类型字段、协议号、端⼝号等递交给下⼀层相应的协议或应⽤来做进⼀步的处理。那么在这种理解下,应⽤层的UDP协议已经发现⽬的端⼝不可达之后,则此时数据中的⼆层帧头应该已经被剥离,还怎么判断出帧头⾸部中的⽬的MAC地址字段中的内容为全F进⽽决定不发送ICMP⽬的端⼝不可达报⽂呢其实所谓的⾸部和尾部剥离之后再递交到下⼀层协议只是为了⽅便教学和辅助理解的⼀种衍⽣说法。实际开发中所谓的递交到下⼀层并剥离⾸部和尾部只是将指针进⾏移位,⽽数据本⾝从来没有任何变化,也就是说所有数据信息都还有保留。所以即便已经到了UDP来读取数据,依旧可以倒回到⼆层帧头中读取⽬的MAC地址字段中的内容来决定是否需要回复ICMP⽬的端⼝不可达报⽂。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690780190a424220.html
评论列表(0条)