ICMP,ARP
2016-07-27 13:28
148 查看
ICMP是网络控制消息协议,主要用于传递查询报文与差错报文。ARP是地址解析协议,它的作用是在以太网环境下,通过第3层的IP地址来找寻第2层的MAC地址,得到一张ARP缓存表。转发数据的时候根据ARP缓存表来进行传输
ICMP消息的报文封装在IP包中,如果发送端发送的报文进过多个路由到达该路由器,那么ICMP就相当于为一个IP包返回发送给发送端。
例:一个小型校园安装了两个/24网络。其中一个(CS)是交换以太网,位于Computer Science部门。网络地址为192.32.65.0/24。另一个局域网(EE)也是一个交换以太网,位于Electrical Engineering部门网络地址为192.32.63.0/24。这两个局域网通过IP路由器互连。以太网上的各台设备以及路由器各接口都有唯一的以太网地址,标签从E1到E6,以及CS或EE网络上唯一的IP地址。
host 1发送一个广播报文到以太网询问谁有IP地址192.32.65.5。广播报文到达每一个CS网上的设备,各台设备检查自己的IP地址。只有host 2会回复自己的以太网地址E2。通过这种方式host 1学习到IP地址192.32.65.5的以太网地址E2。这种提问和回复的协议就称为ARP(Address Resolution Protocol)
有了host2的MAC地址,这时host1就可以发送报文给host2了。
上面的图中有一个表格,从其中我们可以发现,host1报文发送给host4报文时。帧先是从E1~E3,然后是E4~E6。各子网中以太网地址改变而IP地址保持不变。
ICMP:
Internet操作是由路由器严密监控的,当路由器端处理报文时有意外发生,路由器这时会根据相应情况发送ICMP报文给对应的发送端来告知发生了什么。ICMP消息的报文封装在IP包中,如果发送端发送的报文进过多个路由到达该路由器,那么ICMP就相当于为一个IP包返回发送给发送端。
应用:
traceroute发现从主机到目的IP地址路径上的路由器。它向目的地发送IP包,第一次的时候,将TTL设置为1,引发第一个路由器的Time Exceeded错误。这样,第一个路由器回复ICMP包,从而让出发主机知道途径的第一个路由器的信息。随后TTL被设置为2、3、4,…,直到到达目的主机。这样,沿途的每个路由器都会向出发主机发送ICMP包来汇报错误。traceroute将ICMP包的信息打印在屏幕上,就是接力路径的信息了。这并不是TIME EXCEEDED信息的本意,但却是非常有用的故障排查工具。ARP
ARP是一种解决地址问题的协议,以目标IP地址为线索用来定位下一个应该接收数据分包的网络设备对应的MAC地址,也就是IP地址到MAC地址的映射。例:一个小型校园安装了两个/24网络。其中一个(CS)是交换以太网,位于Computer Science部门。网络地址为192.32.65.0/24。另一个局域网(EE)也是一个交换以太网,位于Electrical Engineering部门网络地址为192.32.63.0/24。这两个局域网通过IP路由器互连。以太网上的各台设备以及路由器各接口都有唯一的以太网地址,标签从E1到E6,以及CS或EE网络上唯一的IP地址。
第一种情况:Host1向Host2发送报文。
首先是通过DNS得到Host2的IP地址,host1的上层软件将192.32.65.5植入报文中并交给IP软件发送。IP软件查看该地址发现目标地址在CS网络上(即本地网络)。但是,还需要查找目的以太网地址来发送帧。host 1发送一个广播报文到以太网询问谁有IP地址192.32.65.5。广播报文到达每一个CS网上的设备,各台设备检查自己的IP地址。只有host 2会回复自己的以太网地址E2。通过这种方式host 1学习到IP地址192.32.65.5的以太网地址E2。这种提问和回复的协议就称为ARP(Address Resolution Protocol)
有了host2的MAC地址,这时host1就可以发送报文给host2了。
第二种情况:Host1发送报文给Host4
host1发现目标IP地址不在CS网络上,所以它先会把这类远端网络数据流发送给路由器,也成为默认网关。要发送帧给路由器首先得通过ARP协议获得E3的MAC地址,当帧到达路由器后,交给路由器上的IP软件,从网络掩码中得知该报文时发送给EE.如果路由器不知道host 4的以太网地址,就会再次使用ARP。然后把该帧发送给host4。之后对该帧解封,拿出其中的IP报文即可。上面的图中有一个表格,从其中我们可以发现,host1报文发送给host4报文时。帧先是从E1~E3,然后是E4~E6。各子网中以太网地址改变而IP地址保持不变。
相关文章推荐
- Linux入门笔记——文件操作命令1
- boost智能指针 与 内存分配
- JavaScript实现局部打印
- jsp page指令
- [编写高质量iOS代码的52个有效方法](七)内存管理(上)
- 51nod 编辑距离问题(动态规划)
- C++11 左值、右值、右值引用详解
- HDU 5734 Acperience(水~)
- (总结)关于Linux的缓存内存 Cache Memory详解
- 【Windows】 PE文件头学习
- [php学习十一]javaScript的基本练习2
- 用友数据库“可能发生了架构损坏。请运行 DBCC CHECKCATALOG。”错误修复
- @property的本质是什么?ivar、getter、setter是如何生成并添加到这个类中的
- Spring系列之Java代理机制实现AOP
- HDU 5753 Permutation Bo(期望)
- text
- 【AppGameKit】数独图形界面化
- 简单软件方法/算法/思想
- hdu 2182 Frog【Dp】水题
- 大数据学习路线图,都是网上找的资料,分享下。如有问题,请及时联系更正