现在我们使用这一个图来讲解网络的基础知识:
    现在只看右边那个图,也就是两台主机和一个交换机 
     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网络基础(一)的更多相关文章

  1. 网络工程师岗位基础面试题【适用于CCNA/CCNP基础】

    网络工程师岗位基础面试题[适用于CCNA/CCNP基础] 1: 交换机是如何转发数据包的?交换机通过学习数据帧中的源MAC地址生成交换机的MAC地址表,交换机查看数据帧的目标MAC地址,根据MAC地址 ...

  2. 【Linux网络基础】网络拓扑、OSI层次模型、TCP/IP协议簇

    一.前言 一个运维有时也要和网络打交道,所以具备最基本的网络知识,对一个运维人员来说是必要的.但,对于我们的工作来说这些并不是重点,因此,我不可能从最基础的网络知识开始讲起.本节内容更多是从一个梳理和 ...

  3. 前端学HTTP之网络基础

    × 目录 [1]网络 [2]OSI [3]TCP/IP 前面的话 HTTP协议对于前端工程师是非常重要的.我们在浏览网站时,访问的每一个WEB页面都需要使用HTTP协议实现.如果不了解HTTP协议,就 ...

  4. 开发人员必读openstack网络基础

    云计算中的网络非常复杂,需要对网络的基础理论有一定的认识和了解,转载网上针对openstack中涉及到网络概念的文章 开发人员必读openstack网络基础1:什么是L2.L3 开发人员必读opens ...

  5. iOS网络基础知识

    iOS网络基础知识 1.一次HTTP请求的完整过程 (1)浏览器或应用发起Http请求,请求包含Http请求Http(请求),地址(url),协议(Http1.1)请求为头部 (2)web服务器接收到 ...

  6. 网络基础:NetBIOS

    网络基础小补. 利用 NetBIOS 名称与其他计算机通信 网络中的计算机之间必须知道IP地址后才能相互通信.但对人来说IP难以记忆,NetBIOS计算机名称比较容易记忆.当计算机使用 NetBIOS ...

  7. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  8. 网络基础知识、ASP.NET 核心知识(1)*

    为什么要写网络? 我原本的计划是这样的,连续两天梳理ASP.NET开发的核心知识.说到这呢,有人问了.“不是说好了做ASP.NET笔记吗?为啥要写网络基础知识?是不是傻?” 原因是这样的.作为网站开发 ...

  9. Java 网络编程(一) 网络基础知识

    链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951826.html 网络基础知识 网络编程的目的:直接或间接地通过网络协议与其他计算机 ...

随机推荐

  1. linux搭建微型git服务器

    1.安装git和git-core yum install git git-core -y 2.创建仓库 mkdir /home/git cd /home/git git init 3.设置可以远程pu ...

  2. Javascript之confirm的用法

    confirm函数 confirm函数用于提供确认功能,它首先显示给定的message参数所包含的信息,并提供两个可选择的回答“ok”和“cancel”,然后等待用户选择其中的一个.如果用户选择“ok ...

  3. 【转】安装mysql 出现:Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

    来源:http://blog.csdn.net/dapeng0112/article/details/37053407 本来初始化配置是这样的: scripts/mysql_install_db -- ...

  4. 二十五、JDK1.5新特性---枚举

    与上篇文章介绍的相同,本文也是介绍jdk 1.5出现的新特性,本文将介绍枚举的相关用法. 在jdk 1.5 之前.Java可以有两种方式定义新类型:类和接口.对于大部分面向对象来说.这两种方法看起来似 ...

  5. js中子父页面数据传递与方法调用

    A父页面 ,B为子页面 1.父页面调用子页面 A中调用B中方法:self.frames[iframeName].BFunction(); 注:iframeName:为父页面中iframe的name属性 ...

  6. 用ssh整合时,用sessionfactory的getCurrentSession()获取不到session

    在用ssh整合时,一开始用的是getCurrentSession(),获取当前线程上的session,但是总是抛异常,不能获取. 后来用sessionfactory的openSession(),但是, ...

  7. Lucene热词显示并选择

    利用Jquery easyui里的autocomplete(1.10.0版本) 的异步请求(remot.html) 添加引用 <script src="~/Scripts/jquery ...

  8. WP 手机Lumia 820 锁屏密码的破解研究

    Windows Phone lumia 手机锁屏密码的破解研究     大家好今天给大家分享一个最新研究案例, 近日笔者接Nokia Lumia 820, 由于客户密码失误太多,导致锁屏23000余分 ...

  9. Linux的常用命令

    1.cd命令 这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径.如:   cd /root/Docements # 切 ...

  10. 课程设计 --- 黑白棋中的 AI

    原文链接:https://www.dreamwings.cn/reversi/3013.html 到了考试周了佯,可是偏偏这个时候迎来了很多很多的课程设计,幸好教授把C语言的课程设计提前发出了,不然都 ...