@lzb1096101803
2016-03-12T13:41:37.000000Z
字数 1942
阅读 642
电话面试
http://blog.chinaunix.net/uid-26758209-id-3146224.html
http://wenku.baidu.com/link?url=9Ms0Zb8_5lSxBtLZfpYvYGnIUUN8roOKf9AF1YxYVp4uYz-pAnXr7xHgKKLgTvFF8QMsBUMWad-6HexsEbAZ7_ijhliIxBDWigfgkkgGvd7
Ping命令的主要作用的是检查网络的连通情况和检测网络的速度。
主要的Ping有两种情况,一种是同一网段,一种是跨网段的。
首先,如果主机A要Ping主机B,那么主机A就要封装二层报文,他会先检查自己的MAC地址,如果没有B的MAC地址,就会向外发送一个ARP广播包。
首先交换机会收到这个报文后,交换机有学习MAC地址的功能,所以他会检索自己有没有保存主机B的MAC地址,如果有的,就直接返回给A主机,如果没有,就会向所有端口发送ARP广播,其他主机收到后,发现不是在找自己,就纷纷丢弃了改报文,不去理会,直到主机B收到了报文后,就立即响应,我的MAC地址是多少,同时学到主机A的MAC地址,并按同样的ARP报文格式返回给主机A。
这时候主机A 学到了主机B的MAC地址,就把这个MAC封装到ICMP协议的二层报文中向主机B发送
当主机B收到了这个报文后,发现是主机A的ICMP回显请求,就按同样的格式,返回一个值给主机A,这样就完成了同一网段内的Ping过程
如果主机A要Ping主机C,那么主机A发现主机C的IP和自己的IP**不是同一个网段**,他就去找网管转发,但是他也不知道网管的MAC情况下呢?这是就会像前面那个步骤一样,先发送一个ARP广播,学到网关的MAC地址,再发封装包,
当路由器收到主机A发过来的ICMP报文,发现自己的母的地址是其本身MAC地址,根据母的地IP地址2.1.1.1,查找路由表,发现2.1.1.1/24的路由表项,得到一个出口指针,去掉原来的MAC头部,加上自己的MAC地址向主机C转发,
最后主机C已学到路由器2端口MAC,路由器2端口转发给路由器1端口,路由器端口学到主机A的MAC地址的情况下,他们就不需要再做ARP解析,就将ICMP的回显请求恢复过来,
ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。[1]
它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。ICMP报文在IP帧结构的首部协议类型字段(Protocol 8bit)的值=1.
ICMP是:Internet 控制信息协议(ICMP)是 IP 组的一个整合部分,没有具体的端口号。通过 IP 包传送的 ICMP 信息主要用于涉及网络操作或错误操作的不可达信息。 ICMP 包发送是不可靠的,所以主机不能依靠接收 ICMP 包解决任何网络问题。
Internet控制和消息协议
作用是处理数据报的各种问题
包括数据包的丢失,重复,延迟,乱序
ICMP主要功能是传递差错信息和传递控制信息
报文本身是由IP协议传递的
作为IP的数据部分封装在IP的数据字段中(像TCP)
数据区一般没有作用,一般功能体现在头部
头部有三个字段
1.类型:ICMP携带的是什么消息
2.代码:对消息做进一步划分为不同子类型
3.校验和
ICMP分为三种报文
1.差错报文
目的站点不可达(路由器上查不到目的地址),数据报超时(数据包中有ttl字段),数据报参数错误
2.控制报文
源抑制报文(用在Internet中的拥塞控制),重定向报文(每一个主机中保持一个最优的路由表)
3.请求/应答报文
回应请求,回应应答(PING),时间戳请求,时间戳应答
IP层第二个重要协议是ARP协议:地址解析协议
IP如何传递数据包,源站点和目的站点的网络号是否相同,相同就是同一个网络,不同的发到deafault gateway查路由表找,相同的在子网中找
这里有个地方非常笼统,一个路由器 传到另一个路由器,是怎么做到的
要如何把第三层的地址转为第二层的地址:地址解析
把IP 包封装到数据链路层中,帧中有源地址和目的地址,分别都是MAC地址
硬件地址类型是以太网就是1
是IP协议就是0X0800
对应的就是6和4
目的MAC地址默认是全0,
ARP消息是放在帧中的,是用物理帧封装
ICMP是封在IP包中的,
如果ARP封在IP包,永远发不出去,永远解析不了
RARP反向解析协议:已知以太网MAC地址,如何知道IP地址