CCNA网络基础
Posted yml435
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CCNA网络基础相关的知识,希望对你有一定的参考价值。
现在我们使用这一个图来讲解网络的基础知识:
现在只看右边那个图,也就是两台主机和一个交换机
PC1 的配置是
IP 172.16.20.2/24 网关没有配
CopyPC1 :
IP 1.1.1.2/24 网关没有配
那么如果我们使用ping 协议,从PC1中ping 1.1.1.2,会如何 :
当然懂点的人会知识,当然是ping 不通的,但是会有一部分就困惑了,都连在一个交换机下面,为什么会ping 不能呢 ? 我们来观测它会发现什么:
首先在网络层,也就是IP层会封装一个PDU,这个PDU是怎么填的呢? 你要明白,网络之所认会分层,是为了规范各层的任务,也就是对各层进行明确分工。那么网络层自然就只会处理网络层的事情了。
封装 的内容 为 源IP地址,目的IP地址,和值为01H的协议字段。这些字段将告诉目的方这个报文由哪个协议来处理。
一旦这个报文被创建 ,那么IP协议就需要判断目标IP地址的位置 ,判断目标IP的方位是在本地还是在远程网络,这里是如何判断的,很显然,它是通过将源地址与目的地址进行比较,发现他们前面的24位(由于我们的子网掩码被配置成了255.255.255.0)
,发现目的IP和源IP是在同一个子网中。
然后,IP层将该PDU发往链路层,那么链路层主要是封装 以下的内容:
1、目的方硬件地址和源方的硬件地址
2、值为0X800(IP)的以太网类型字段
3、值为CRC运算的结果的FCS字段
但是目的方的MAC地址也就是硬件地址在哪里有呢?,这就是要查看ARP表了,ARP表专门干这种事,里面是IP与MAC的映射关系。你要知道,IP地址只在不同的LAN间才起作用,在同一个LAN里面,报文的发送与接收靠的就是MAC地址。
MAC地址永远只能作用在本地的LAN网络中,不可能绕过或者通过路由器
到这里,发现ARP表里面没有对应的IP-MAC表项,于是启动ARP协议,那个ICMP报文就挂载在链表中,等待填充MAC地址。
由于在前面的IP层,发现目的IP和本机不是在同一个子网中,那怎么办?ARP就不会该子网中进行广播了。但是我们在前面说了,这台主机并没有配有默认网关,那么咋办呢 。
当然是将挂载在链表中的ICMP不完整报文给丢了。这里的丢其实就是LINUX 中,将对应的那段报文缓存给释放了,或者放到SKB内存池中(注 SKB只是一个结构体,它里面的指针指向那个报文对应的缓存位置)
到这里,你当然就会明白,ping肯定是不会通的
但如果我们的主机PC1它配了默认网关呢,会怎么样?假如我们将它的默认网关填成172.16.20.1,也就是路由器Fa1/0的地址。
如果是这样,那么ICMP的命就没有那么短了,还没出接口就被整死了。
如果配了网关,那就好玩点了。那么我还是回去网络层判断目的IP是否是本网段的报文,这回当然判断不是本网络的报文罗。
于是到了链路层,发现不是本网络报文,那我们的APR中就不是找对应的目的IP的MAC地址了,而是找默认网关地址对应的MAC地址了。因为你不是一LAN内部的报文,那就肯定是不同LAN了,要想去不同的LAN,就只有通过网关了。
到这里发现,默认网关地址对应的MAC又是空的,那咋办,还是ARP广播了,于是在本LAN里面广播寻找默认网关MAC地址的ARP报文。
我们的网关收到这个ARP报文以后,就回应对应的ARP应答。于是PC1就获了默认网关的MAC地址。
于是我们的ICMP报文就可以在链路层填充对应的源MAC和目的MAC地址了。之后再交给了物理层将它发出去。
网关收到这个ICMP报文以后,得到它的目的IP地址是 1.1.1.2,于是在路由表项中查看有没有关于 1.1.1.2地址或者直连网段。
并没有哈。于是路由器给PC1发送一个目的主机不可到达的报文
以上是关于CCNA网络基础的主要内容,如果未能解决你的问题,请参考以下文章