zoukankan      html  css  js  c++  java
  • 第4章 网络层

      四个方面的内容

    • 各个网络如何连接成一个大的互联的网络,即互联网    
    • IP地址和物理地址的关系
    • IP地址的计算与理解
    • 路由选择协议的工作原理

    4.1 网络层提供的两种服务

      网络层提供服务的对象的运输层,那么网络层提供“面向连接”还是“无连接”的服务呢?即传输的可靠性是由网路还是端系统来保证

      所谓面向连接的通信方式指的是传统电话网那种通信方式:两个电话如果想要通信,首先要通过种种中继设备建立一条通信线路,即两个电话需要先连接起来。相应的在网络层的通信中,如果采用面向连接的方式通信,首先也要建立连接,即在分组交换中建立虚电路,通信双方沿着这条线路传递分组,这种方式的优点是分组报文只需要在头部记录虚电路的编号不需要记录完整的目的主机的地址,减小了分组的开销。

      

      因特网的设计者认为电话不具备差错控制能力,所以传输的可靠性要通过虚电路即网络层来实现。但计算机是具有一定的“智能”,即具有差错控制能力,所以网络层提供的服务是:无连接、尽最大努力交付的数据报传输服务。分组传输报文在传输前不会先建立连接,所以网络层在传输报文的时候分组报文可能会出现:失序、丢失、出错、重复等现象,这种传输是不可靠的、尽最大可能的。这么设计的优点是路由器足够简单,否则路由器要负责虚电路的建立,那么路由器就会变的昂贵且复杂。

     

      

      由于不存在虚电路,所以每个分组都会保留目标的完整地址,这也是一种开销。同样由于不存在虚电路,所以报文传输的路由选择是独立的。通信的可靠性要由用户主机来通过某些策略来保证。

    4.2 网际协议IP

      网际协议的功能是使不同的网络之间能够互相通信,所以网络层也称为网际层。

     4.2.1 虚拟互连网络

      世界上许许多多的局域网互连起来,就称为虚拟互连网络。为什么称为虚拟呢?是因为这些网络之间差异很大,局域网使用的协议不想同,必须通过一些中间设备来把不同协议的局域网互连起来,这种通过中间设备才能连接的方式,给人的感觉不够纯粹,所以名曰“虚拟互连”。

      中间设备是一个很大的概念,因为不同局域网之间的差异性也不同,即差异也是有差异的,可以使用中间设备把两个局域网从物理层连接起来,或者从数据链路层连接起来等等。

    • 物理层:转发器
    • 数据链路层:网桥或者桥接器
    • 网络层:路由器
    • 网络层以上:网关(gateway)。

      如果使用转发器或者网桥把网络连接起来,仅仅是把网络扩大了,一般不成为网络互连。而网关较为复杂使用的少,所以一般网络互连指的是通过路由器的互连。路由器是一个简易版的计算机专门用来路由选择。

     4.2.2 分类的IP地址

      因为IP协议的存在,各种异构的网络统一用一种地址来表示,这种地址被称为IP地址,IP地址由32位组成。IP地址又可以分为两部分:网络号 主机号。网络号用于标识一台主机或者路由器所处的网络的编号,主机号用于标识主机或者路由器。

      根据网络号和主机号所占的位数不同IP地址可以分为5类,这种分类已经成为历史。提出这种分类的历史原因是在计算机网络发展初期,不同的网络差异很大,有的网络主机很多,有的则很少。主机多的网络可以申请A类地址。

     

      IP地址的特点:

    • IP地址是一种分等级的地址,这样转发分组只需要依赖网络号来转发分组,这样路由表所占的存储空间和进行路由转发的时间会缩短
    • 当一个主机连接在两个网络上的时候,该主机就具有两个IP地址,被称为多归属主机,如连接两个网络的路由器一定是多归属主机
    • IP地址的存在使”局域网“有了更清晰的定义--多台具有相同网络号的Node组成的网络,所以从这个角度来说工作在物理层和数据链路层的中间设备连接的多台Node仍然是一个网络

      

      

      上图是三个局域网LAN123通过路由器彼此互连,总结出对网络及路由器的初步认识

    • 路由器有不止一个IP地址。同一个路由器的不同接口的IP地址不一样,可以用来转发数据报。路由器转发进一个网络的时候会有一个虚拟的节点,暂时不知道这个节点的作用
    • 同一个局域网的网络号总是相同的

    4.2.3 IP地址与硬件地址

      用朴素的话说出这两种地址的区别:IP地址用来决定下一跳去哪个Node,Node之间跳这个动作需要硬件地址。用面试的话说出区别:物理地址是工作在物理层和数据链路层,IP地址是网络层及以上层使用的地址,是一种逻辑地址,所谓逻辑地址指的是可以变化,一个设备接入不同的网络其IP地址是不同的。

      

      考虑到一个数据报来到了一个路由器,路由器根据目标地址和自己的路由转发表,“计算”出下一跳应该去的IP地址,在根据某种方法得到该IP地址对应的Node的物理地址并重新写到MAC帧的首部。所以可以看到IP地址在IP数据报的头部,而物理地址在MAC帧的首部。

      总结:

    • 位置不同。MAC地址在MAC帧的首部,IP地址在IP数据报的首部
    • 工作的层不同。MAC地址工作在数据链路、物理层,IP地址工作在网络层及以上
    • 作用不同。IP地址更像一种逻辑寻址,MAC地址更像物理地址。

    4.2.4 地址解析协议ARP

      根据IP地址解析出MAC地址。

      首先最简答的想法是存一个映射IP到MAC的映射,但是一个局域网中的Node可能会改变,这种映射不能保证正确性和实时性,所以单纯的静态的方法并不可以。在实际中,IP地址到MAC地址的解析分为两种情况或者两个步骤。

      当试图解析IP地址的时候,如果在设备的本地ARP高速缓存中能够找到对应的MAC那么就直接转发。

      如果找不到MAC地址,那么就执行ARP。主机A在局域网上广播一个ARP请求分组,ARP请求分组里包含A主机的IP和MAC地址,以及A主机想寻找的IP的地址。局域网上所有主机都会收到这个请求,只有IP地址和ARP请求地址相同的主机才会回复A主机的请求,并告知自己的MAC地址。A主机收到ARP请求的回应后会缓存IP地址和MAP地址用于下一次解析IP地址。

      

       ARP协议只能解决局域网内的IP地址映射问题,事实上也不需要知道非局域网Node的MAC地址,跨局域网通信需要使用IP地址,MAC地址不要越俎代庖。

      为什么MAC地址唯一确定了一台主机后还需要IP地址?因为MAC地址只能用于确定地址,却不能很快的确定IP数据报的下一个目的地,只能用于定位不能用于通信。其次各种各样的硬件他们的MAC地址区别很大,MAC地址虽然唯一但标准不唯一。

    4.2.5 IP数据报的格式

      IP数据报可以分为两部分:首部和数据部分。只有首部才是和IP协议相关的部分,数据部分根据上层的协议不同而不同,所以我们更关注首部的组成。首部又可分为固定部分和可变部分。

      固定字段部分

    • 版本 IPV4还是IPV6
    • 首部长度,因为存在可变部分所以IP首部的长度不定,因而需要一个字段来记录。并且要去首部的长度必须是4的倍数,如果不是就必须补0.
    • 区分服务,不用
    • 总长度,IP数据报首部和数据部分长度之和
    • 协议,指出次数据报携带的数据使用何种协议

    4.2.6 IP层转发分组的流程

      IP转发一定是通过路由器来实现的,所以讨论这个过程的关键在于路由器如何根据IP地址转发一个IP数据报。虽然通过IP地址可以唯一确定一个计算机,但路由器中的路由转发表并不能存储IP地址和下一跳或者直接交付的地址,因为计算机太多了,这样查找起来太慢,路由器存储压力也会太大。所以路由转发表里存储的是局域网的转发跳转信息即(目的网络地址:下一跳地址)。

      IP数据报的头部只有源目的地址和目的地址,并没有所谓的下一跳的IP地址。事实上回忆一下之前关于MAC和IP地址的讨论可以想到:下一跳并不需要IP地址只需要MAC地址。所以整个转发过程是这样的:当路由器收到一个数据报之后,根据数据报的源地址和目的地址选择出一个合适的下一跳的地址,下一挑既可以是本局域网内的某个主机,也可以是下一个路由器。总之路由器选择好了一个IP地址,然后交给链路层的网络接口软件,通过上述的ARP协议解析出MAC地址,然后封装成MAC帧交给数据链路层进行下一跳的传输,所以IP数据报的传输过程中,查找路由转发表、计算MAC地址、封装成MAC帧是一个不断进行的过程。

      总结分组转发算法:

    • 从IP数据报的首部提取目标主机的IP地址D,并计算网络地址N
    • 如果N是此路由器所在的直接连接的网络,那么就直接交付;
    • 如果N无法直接交付,且有D的特定路由,则直接转发
    • 若有N的特定路由,直接转发
    • 若有默认路由,转
    • 到这里,就要报错了

      

      

      

      

      

  • 相关阅读:
    4Sum
    3Sum Closest
    3Sum
    Longest Common Prefix
    Roman to Integer
    thinkphp3.2自定义配置文件
    centos7下git的使用和配置
    git 报错
    Git服务器安装详解及安装遇到问题解决方案
    centos GIT安装
  • 原文地址:https://www.cnblogs.com/AshOfTime/p/10674191.html
Copyright © 2011-2022 走看看