现在我们使用这一个图来讲解网络的基础知识:
    现在只看右边那个图,也就是两台主机和一个交换机 
     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. LAMP环境搭建

    安装前说明: 先安装gcc gcc-c++ make 等 可用yum install -y gcc gcc-c++ make 也可以使用rpm安装不过需要注意依赖 1.安装apache 下载链接:ht ...

  2. rdesktop共享剪贴板的问题

    使用-r clipboard:PRIMARYCLIPBOARD参数来共享剪贴板,连接到window7 但有时就不好用了,剪贴板没有同步 找到一些相关的资料 https://bugs.launchpad ...

  3. jquery mobile tabs

    https://github.com/groovetrain/jQuery.mobile-Tabs

  4. SSH框架整合项目(一)——搭建平台和引入依赖

    前言:这个项目是我的第一个实验性项目,最初的立意是制作一个个性化的BBS.由于BBS能够综合大部分功能,因此作为练手的项目来说再好不过.从写第一行代码到完成测试版大概历时2周.中间遇到了不少以前在学习 ...

  5. HTML如何让文本两端对齐

    <p style="text-align:justify; text-justify:inter-ideograph;>日本驻华大使丹羽宇一郎:日中关系比夫妻还紧密日本驻华大使丹 ...

  6. EditText光标颜色设置

    又一次做应用,发现EditText没有显示光标,借鉴了网上的方法,发现是因为光标是白色的,与背景一样造成的,这里记录一下如何设置EditText等的光标颜色: 需要在布局文件中指定androd:tex ...

  7. 文档对象模型(DOM)中的结点属性

    在文档对象模型中,每个结点都是一个对象.DOM结点有三个重要的属性:nodeName .nodeValue和nodeType,分别表示结点名称.结点的值和结点的类型 一.nodeName,结点名称,只 ...

  8. ubuntu一些常用的命令

    1.docker里的ubuntu不知道密码,更新密码 sudo passwd 2.解压zip文件 unzip xx.zip 3.安装LAMP (1)sudo apt-get install apach ...

  9. Canvas的API整理

    canvas元素 可被用来通过脚本(通常是JavaScript)绘制图形.比如,它可以被用来绘制图形,制作图片集合,甚至用来实现动画效果.你可以(也应该)在元素标签内写入可提供替代的的代码内容,这些内 ...

  10. 关于Java占用内存的研究

    最近对程序占用内存方面做了一些优化,取得了不错的效果,总结了一些经验简要说一下,相信会对大家写出优质的程序有所帮助下面的论述针对32位系统,对64位系统不适用,后叙 经常你写了一个程序,一测试,功能没 ...