zoukankan      html  css  js  c++  java
  • 网络层

    一、概述

      1、网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。

      2、网络层向上只提供简单灵活的、无连接的,尽最大努力交付的数据报服务。

      3、服务类型:(1)虚电报服务(可靠通信应当由网络来保证)

              (2)数据报服务(TCP/UDP采用:可靠通信应当由用户主机来保证)

    二、网络层的协议

      1、网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有三个协议:
         地址解析协议 ARP (Address Resolution Protocol)
         网际控制报文协议 ICMP (Internet Control Message Protocol)
         网际组管理协议 IGMP (Internet Group Management Protocol)

         

      2、虚拟互连网络:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。

     但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。只需要通过寻址,就可以完成交互。

         

    三、IP地址:每个主机或者路由器的每一个接口的唯一标识符

      1、分类

      

      一个IP地址在整个因特网范围内是唯一的。这种两级的IP地址可以记为 IP地址 ::= {<网络号>, <主机号>}。

      2、IP地址的重要特点:  

      (a) IP地址管理机构在分配IP地址时只分配网络号(第一级),而剩下的主机号(第二级)则由得到该网络号的单位自行分配。这样就方便了IP地址的管理。

      (b) 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间以及查找路由表的时间

    四、地址解析协议ARP:通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

      

      在发送数据时,数据从高层到低层,然后才到通信链路上传输。使用IP地址的IP数据报一旦交给了数据链路层,就被封装成了MAC帧。MAC帧在传送时使用的源地址和目的地址都是硬件地址。连接在通信链路上的设备(主机或路由器)在接收MAC帧时,根据是MAC帧首部的硬件地址。在数据链路层看不到隐藏在MAC帧中的IP地址。只有在剥去MAC帧的首部和尾部后把MAC层的数据交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。

    (1)原理 : 在每台安装有TCP/IP协议的电脑或路由器里都有一个ARP缓存表,表里的IP地址与MAC地址是一对应的

                 

    (2)ARP工作时:

     

      (1)当主机A要想向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址,若有则在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址。

      当查不到主机B的IP地址时,主机A就会自动运行ARP:

      (a) ARP进程在本局域网上广播发送一个ARP请求分组,请求的主要内容是“我的IP地址时209.0.0.5,硬件地址是00-00-C0-15-AD-18。我想知道IP地址为209.0.0.6的主机的硬件地址。”;

      (b) 在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。

      (c) 主机B在ARP请求分组中见到自己的IP地址,就向主机A发送ARP响应分组,并写入自己的硬件地址。其余的所有主机都不理睬这个ARP请求分组,ARP响应分组的主要内容是“我的IP地址是209.0.0.6,我的硬件地址是08-00-2B-00-EE-0A。”注意ARP请求分组是广播发送的,ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。同时主机A的这一地址映射也写入了主机B自己的ARP高速缓存中。

      (d) 主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。

     (2) 注意:ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题

      对于不在同一个局域网的主机,并不需要知道其硬件地址,只要先通过IP地址找到路由器(需要知道其硬件地址)进行转发即可。

      缓存表中路由器的硬件地址,通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。

    五、IP数据包的格式:

      一个 IP 数据报由首部和数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。

      

      生存时间(TTL:Time To Live):一个数据报每经过一个路由器,值减一,当值为0时,丢弃该数据报。

    六、路由表:(目的网络地址,下一跳地址):

      路由表是一个存储在路由器或者联网计算机中的电子表格(文件)或类数据库,。路由表存储着指向特定网络地址的路径

      

      IP层转发分组的流程:

      

      分组转发算法:

       (1)  从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
       (2)  若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。
       (3)  若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
       (4)  若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。
       (5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
       (6)  报告转发分组出错。 

    七、划分子网:从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位

      

      子网掩码是一个网络或一个子网的重要属性。

      对应的路由表发送变化:<目的网络地址,子网掩码,下一跳地址>

      路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。

      路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。

      一个网络如果不划分子网,路由表中就使用默认子网掩码,即与网络号对应。

      使用子网时分组的转发:

       (1) 从收到的分组的首部提取目的 IP 地址 D。
       (2) 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行(3)。
       (3) 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行(4)。
       (4) 对路由表中的每一行的子网掩码和 D 逐位相“与”,若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行(5)。
       (5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行(6)。
       (6) 报告转发分组出错。

    八、构成超网(无分类编制CIDR、无分类域间路由选择): 解决因特网主干网上的路由表中的项目数急剧增长问题

      IP 地址从三级编址(使用子网掩码)又回到了两级编址。

      

      例如:CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。  

        128.14.32.0/20 表示的地址块共有 2^12 个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位)。
        这个地址块的起始地址是 128.14.32.0。
        在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”。网络前缀越长,其地址块就越小
          128.14.32.0/20 地址块的最小地址:128.14.32.0
          128.14.32.0/20 地址块的最大地址:128.14.47.255
          全 0 和全 1 的主机号地址一般不使用。

      使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。 

      应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配;

      使用二叉线索查找路由表:使用唯一前缀构建二叉索引,同时每个节点要包含对应网络前缀和子网掩码,

               用于检查这个唯一前缀对应的前缀号,是否为要查找的,不是则丢弃该分组,是则转发该分组。

    九、网际控制报文协议 ICMP:

      1、目的:为了提高 IP 数据报交付成功的机会

      2、实现:ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去;

        

      

      3、ICMP 应用举例:

       (1)PING 用来测试两个主机之间的连通性。
           PING 使用了 ICMP 回送请求与回送回答报文。
           PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。   

       (2)tracert 用来跟踪一组从源点到终点的路径,通过依次增加TTL,并返回ICMP 时间超过报文 来实现。

    十、路由选择协议

      因特网的规模非常大,把它分为n个小的自治系统(AS),自治系统是在单一技术下管理一组路由器,这些路由器使用本自治系统内部的路由协议和共同的度量。

      尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。

                  

    1、因特网有两大类路由选择协议:

      内部网关协议 IGP (Interior Gateway Protocol)   : 即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
      外部网关协议EGP (External Gateway Protocol)  :  若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP-4。 

    2、内部网关协议 RIP (Routing Information Protocol):

       (1)工作原理:

        路由信息协议 RIP 是内部网关协议 IGP中最先得到广泛使用的协议,但很少被使用。
        RIP 是一种分布式的基于距离向量的路由选择协议。
        RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。

       2. 距离的定义:

        从一路由器到直接连接的网络的距离定义为 1。
        从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
        RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。
        这里的“距离”实际上指的是“最短距离”, 
        RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。
        RIP 允许一条路径最多只能包含 15 个路由器。“距离”的最大值为16 时即相当于不可达。可见 RIP 只适用于小型互联网。
        RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。 

       3.  RIP协议的三个要点:

        仅和相邻路由器交换信息。 
        交换的信息是当前本路由器所知道的全部信息,即自己的路由表。 
        按固定的时间间隔交换路由信息,例如,每隔 30 秒。

        采用UDP进行传输

       4. 路由表的建立:

        路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1)。
        以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
        经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
        RIP 协议的收敛(convergence)过程较快,即在自治系统中所有的结点都得到正确的路由选择信息的过程。

         

        5. RIP的优点:

        RIP 协议最大的优点就是实现简单,开销较小。

       6. RIP的缺点:

        1. RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
        2. 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。

        3. 当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。因此,RIP算法好消息传得快,坏消息传得慢,导致更新过程的收敛时间过长

    3、内部网关协议 OSPF (Open Shortest Path First):开放最短路径优先

      (1)OSPF 是一种分布式的基于链路状态数据库的路由选择协议,使用Dijkstra 提出的最短路径算法来计算路由表的下一跳。

      (2)三个要点:

        向本自治系统中所有路由器发送信息;

        发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。(比RIP 传送的数据小);

        只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。(比RIP 定时交换数据合理);

     (3)OSPF 的其他特点 :

        OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。 
        由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。 
        OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。

    4、外部网关协议 BGP:边界网关协议

      (1)BGP 是不同自治系统的路由器之间交换路由信息的协议。

      (2)边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。

      (3)BGP发言人:每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” 。

      (4)一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。

    十一、虚拟网络VPN:在公用网络上建立专用网络,进行加密通讯。

    1、 本地地址和全球地址:

      本地地址——仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向因特网的管理机构申请。
      全球地址——全球唯一的IP地址,必须向因特网的管理机构申请。

    2、专用地址:

      本地地址和全球地址会在因特网上出现二义性,因此规定了专用地址,这些地址的数据报一律不准转发。

       10.0.0.0 到 10.255.255.255
       172.16.0.0 到 172.31.255.255
       192.168.0.0 到 192.168.255.255

    3、 用隧道技术实现虚拟专用网:

      

    十二、路由器的构成

    1、路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组

      从路由器的某个输入端口收到分组,按照分组要去的目的网络,把分组从路由器的某个合适的输出端口转发给下一跳路由器,下一跳路由器重复此操作,直到转发到终点。

      

      转发表:包含从要到达的目的网络到输出端口和某些MAC地址信息的映射。

    2、路由器的转发分组正是网络层的主要工作:接受IP数据报--->查表--->转发

    十二、IGMP协议(Internet Group Manage Protocol)

    1、概述

     IGMP : Internet组管理协议,提供internet网际多点传送的功能,即将一个ip包拷贝给多个host,windows系列采用了这个协议,因为此项技术尚不成熟,因此被一些人用来攻击windows系统,尤其是对win98,因为对win95有oob攻击,受到IGMP攻击的症状是首先出现蓝屏,然后网速变得极慢,有的甚至鼠标,键盘均不管用非得重启不可。

    2、IGMP协议用于多播

      广播:老师在台上讲课,你们能随时看到老师的电脑屏幕,因为采用的广播,每个人度能接受到老师屏幕上所有的数据包

      多播:在一个局域网中,有三个多播组,A、B、C,A在放java视频,B在放C++视频,C在放娱乐视频,如果你想看Java视频,

    那么你就调到A这个多播组中学习java视频,学习累了,你就可以换到C这个多播组中看看娱乐节目,这就是多播的意思,相对广播来说,自己需要什么就调什么,而不是跟广播一样,被动接受,他播到哪,就只能看到哪,多播能自由控制速度。

     单播:50个人想看视频,就得发送50个数据包。多播的话就发一个,然后通过路由器转发50分给不同的人。

    3、工作过程

       

    原文博客:https://www.cnblogs.com/qjjazry/p/6657994.html

         https://www.cnblogs.com/zhangyinhua/p/7609242.html

       

      

  • 相关阅读:
    Android Studio4.1.2中,修改了gradle后,如何在不关闭AS IDE的情况下使gradle进行sync
    Android-studio-ide-201.7042882-windows-4.1.2项目卡在Gradle: Download gradle-6.5-bin.zip
    Intellij IDEA开发环境中Springboot项目无Run ****main()的菜单
    《Bootstrap4Web设计与开发实战》源代码下载
    数字操作题目汇总
    机器学习模型跨平台上线
    koro1FileHeader 注释插件 vscode
    nginx https协议配置
    nginx 配置 不显示版本号
    Asp.Net Core 中的静态文件
  • 原文地址:https://www.cnblogs.com/dongtian-blogs/p/10781180.html
Copyright © 2011-2022 走看看