zoukankan      html  css  js  c++  java
  • 网络相关概念二:网络层

    一 网络层的设计思路

    网络层向上只提供简单灵活的、无连接的、尽最大努力交互的数据报服务。网络层在发送分组时不需要先建立连接,每一个分组独立发送,与其前后的分组无关,不进行编号。网络层不提供服务质量的承诺,传送的分组可能出错、丢失、重复和失序,也不保证分组交付的时限。

    这种设计的好处:网络的造价大大降低、运行方式灵活、能够适应多种应用。

    二 网际协议IP

    网络层协议IP可以是互连起来的许多计算机网络能够进行通信,因此网络层通常称为网际层,或IP层。之前在物理层和数据链路层中讲述到可以通过转发器或网桥来扩大网络,但它们并没有实现网络互连。在网络层以上的网关可以实现网络互连,但是比较复杂,所以使用最多的实现网络互连的方法是在网络层使用的路由器。这些通过路由器互连的网络都使用相同的网际协议IP(Internet Protocol),它可以使得互连的异构的网络中的计算机看不到这种异构细节,可以方便的进行通信。

    与IP协议配套使用的四个协议:

    • 地址解析协议ARP(Address Resolution Protocol)
    • 逆地址解析协议RARP(Reverse Address Resolution Protocol)
    • 网际控制报文协议ICMP(Internet Control Message Protocol)
    • 网际组管理协议IGMP(Internet Group Management Protocol)

    如下表所示,ARP和RARP画在最下面,因为IP要经常使用这两个协议;对应的,ICMP和IGMP画在上面,表示它们要使用IP协议。

    应用层

    各种应用层协议

    (HTTP、FTP、SMTP等)

    运输层 TCP、UDP
    网络层

    ICMP IGMP

      IP

        RARP ARP

    网络接口层(数据链路层和物理层) 与各种网络接口
      物理硬件

    三 IP地址

    整个因特网就是一个单一的、抽象的网络,IP地址就是给因特网上的每一个主机或路由器的每一个接口分配的一个在全世界范围内的32位的标识符。IP地址的结构使我们可以在因特网上很方便地寻址,它由因特网名字与号码指派公司ICANN进行分配。

    IP地址的编址方法经历过了三个阶段:

    • 分类的IP地址:最基本的编址方法
    • 子网的划分:对最基本编址方法的改进
    • 超网:无分类编址方法

    (1)分类的IP地址

    分类的IP地址就是将IP地址划分为若干个固定的类:A、B、C、D、E,每一类的地址都是由两个固定长度的字段组成,第一个字段为网络号,标识主机或路由器所属的网络,网络号在整个因特网范围内必须是唯一的;第二个字段是主机号,标识主机或路由器。即:

    IP地址 := {<网络号>,<主机号>}、

    A类,B类和C类地址的网络号字段分别为1,2和3个字节长,网络号字段最前面有1-3位的类别位,分别为0,10和110,主机号字段分别为3个、2个和1个字节长。这三类都是单播地址,即一对一通信,也是最常用的。

    D类地址(前四位为1110)用于多播,E类地址(前四位为1111)保留为以后用。

    对主机或路由器来说,IP地址都是32位的二进制代码,为了提高可读性,采用了点分十进制记法:每8位用十进制数字表示,数字之间用点分隔。

    A类地址:网络号除掉第1位之外还有7位可以表示,但网络号全为0的IP地址是保留地址,意思是“本网络”,网络为127(01111111)则保留为本地软件环回测试本主机的进程通信使用,因此可用的网络号为2^7-2 = 126个。对于主机号,主机号全为0表示的网络号,全1表示该网络上的所有主机,因而主机号共有2^24-2。最小网络号为1,最大网络号为126.

    B类地址:网络号不存在全0或全1的情形,但128.0.0.0不指派,最小网络地址号为128.1,最大网络号为191.255.

    C类地址:192.0.0.0不指派,最小网络地址为192.0.1,最大网络号为223.255.255.

    (2)IP地址的特点

    IP地址由网络号和主机号组成:IP地址管理机构在分配IP地址时只分配网络号;路由器仅根据目的主机所连接的网络号来转发分组,这样一来,路由表中的项目数就大幅度减少,从而减小了路由表所占的存储空间及查找路由表的时间。

    IP地址标识的是主机和链路的接口,当一个主机同时连接到两个网络上时,该主机就需同时具有两个IP地址,且网络号是不同的。一个路由器至少连接两个网络,因而至少有两个不同的IP地址。

    一个网络是指具有相同网络号的主机的集合,由转发器或网桥连接的若干局域网仍属一个网络,具有相同的网络号,具有不同网络号的局域网必须通过路由器连接。

    (3)IP地址和硬件地址

    硬件地址也称为物理地址、MAC地址,在数据链路层和物理层使用,IP地址用软件实现,在网络层及其以上层中使用,当IP数据包封装成MAC帧后在数据链路层上传播时,是看不到IP地址的。

    IP数据报通过路由器在不同网络的传播过程中,MAC地址一直被修改,而源IP地址和目的IP地址却始终未变,路由只根据目的IP的网络号进行路由选择。

    由于全世界存在着各种各样的网络,它们使用不同的硬件地址,要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,由用户或主机来完成几乎不可能,但统一的IP地址就能够屏蔽这些很复杂的细节。只要在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机、路由器之间的通信。

    (4)地址解析协议ARP

    在因特网中可以通过IP地址寻找到目标主机,但是数据在数据链路层上的传送必须要MAC地址,此时就需要能够实现IP地址到物理地址映射的方法。

    地址解析协议ARP通过在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表并经常动态更新这个映射表来实现。其实现机制如下:

    在每一个主机上都设有一个ARP高速缓存,里面有局域网上的各主机和路由器的IP地址和硬件地址的映射表,当主机A向主B发送IP数据报时,就在该高速缓存中查看有无主机B的IP地址,如有就找出对应的硬件地址,再将该硬件地址写入到MAC帧中,然后将帧发往此硬件地址中。如果找不到,那么主机A就运行ARP,ARP在本局域网上广播一个ARP请求分组,写上自己的IP地址、硬件地址以及目的主机IP地址,本局域网中的所有主机运行的ARP进程就能收到该分组,但只有目的主机会以一对一的单播通信方式将自己的硬件地址发送给A,同时也在自己的ARP高速缓存中记下A的IP地址和硬件地址的映射关系。

    此外,还需要在高速缓存的每一个项目中设置生存时间来动态更新。

    (5)划分子网

    二级IP地址有以下的缺点:

    • IP地址空间利用率有时很低;
    • 给每一个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏;
    • 两级IP地址不够灵活,如果需要一个新的网络,需要申请新的IP地址,不能立即连接到因特网上。

    对此,引入了子网,其方法是从网络的主机号中借用若干位作为子网号,新的IP地址就变为了三级:

    IP地址 := {<网络号>,<子网号>,<主机号>}

    划分子往后,对外仍表现为一个网络,网络地址不变,从IP数据报的首部并不知道源主机或目的主机所连接的网络是否进行了子网的划分,但该网络的路由器R在收到外来的数据报后,会根据数据报的目的地址将它转发到相应的子网,这个过程是通过子网掩码实现的。

    子网掩码:它是32位,由一串1和跟随的一串0组成,1对应IP地址中原来的网络号和划分的子网号,将它与收到的数据报中的IP地址逐位相与就得到了所要找子网的网络地址。此外,不管有没有划分子网,都可以通过这种方式找到网络地址。当前的因特网标准规定:所有的网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏。

    A类地址的默认子网掩码:255.0.0.0

    B类地址的默认子网掩码:255.255.0.0

    C类地址的默认子网掩码:255.255.255.0

    (6)路由表和分组转发算法

    使用子网划分后,路由表的每一条目包含三项内容:目的网络地址、子网掩码和下一跳地址。对应的分组转发算法如下:

    • 从收到的数据报的首部提取出目的IP地址D。
    • 先判断是否为直接交付,对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相与,看结果是否和相应的网络地址匹配,若匹配,则把分组直接交付(将D转为物理地址,封装成帧发往目的主机中);否则进行交付,转入下一步。
    • 若路由表中有目的地址为D的特定路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,转入下一步。
    • 对路由器中的每一行,用其中的子网掩码和D逐位相与,其结果为N。若N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则,转入下一步。
    • 若路由表中有一个默认路由,就把数据报传送给路由表中指明的默认路由器;否则,转入下一步。
    • 报告转发分组错误。

    (7)网际控制报文协议

    网际控制报文协议ICMP是为了更有效地转发IP数据报和提高交付成功的机会,它允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。它的类型如下:

    ICMP报文种类 报文类型
    差错报告报文 终点不可达
      源点抑制(路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点放慢发送速率)
     

    时间超过(当路由器收到生存时间为0的数据报时,丢弃该数据报,并向源点发送时间超过报文;当终点不能在预定时间内收到改变路由一个数据报的全部

    数据报片时,就把已收到的数据报片全部丢弃,并向源点发送时间超过报文)

      参数问题(当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文)
      改变路由(路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器)
    询问报文

    回送(Echo)请求和回答(由主机或路由器向一个特定的目的主机发出的询问,收到该报文的主机必须发送ICMP回送回答报文,主要用来测试目的站是否可达

    及了解其状态)

      时间戳(Timestamp)请求或回答(请某个主机或路由器回答当前的日期和时间)

    ICMP报文的一个重要应用:分组网间探测PING(Packet InterNet Groper),用来测试两个主机之间的连通性,使用了ICMP回送请求和回送回答报文。它由应用层直接使用网络层ICMP,没有通过运输层的TCP或UDP。

    另一个重要应用:Unix中的traceroute或Windows中的tracert。Traceroute从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报,第一个数据报P1的生存时间TTL设置为1,当到达R1时,TTL值减1变为0,于是R1丢弃该报文,并向源主机发送ICMP时间超过报文,类似地,发送数据报P2,TTL设置为2,从而得到R2发送的ICMP时间超过报文,这样一直继续下去,当到达目的主机时,TTL是1,主机不转发数据报,也不将TTL减1,但由于传送的是无法交付的数据报,因此目的主机会向源主机发送ICMP终点不可达差错报文。通过这种方式,源主机获得了到达目的主机的路由信息以及到其中任一个路由器的往返时间。

    (8)IP多播

    如果一个源点需要向多个终点发送消息,即实现一对多的通信,如实时信息的交互(新闻、股市行情),软件更新,交互式会议等,那么就需要IP多播。与单播相比,IP多播可大大节约网络资源。

    IP多播需要多播IP地址,在多播数据报的目的地址中写入的是多播组的标示符而非各个主机的IP地址,然后设法让加入到这个多播组的主机的IP地址与这个标识符关联起来。通常,多播组的标识符就是IP地址中的D类地址,D类IP地址前四位是1110,范围为224.0.0.0到239.255.255.255,每一个D类地址标识一个多播组。多播地址只能用于目的地址,而不能用于源地址,且多播数据报不产生ICMP差错报文,在PING命令后键入多播地址,不会收到回应。

    IP多播需要两种协议:网际组管理协议IGMP(Internet Group Management Protocol)和多播路由选择协议,这里就IGMP作简要介绍。

    IGMP:IGMP协议是整个网际协议IP的一个组成部分,它主要是让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或退出了某个多播组。其工作分为两个阶段:

    第一阶段:当某个主机加入新的多播组时,该主机向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员,本地的多播路由器收到IGMP报文后,再利用多播路由选择协议把这种组成员关系转发给因特网上的其他多播路由器。

    第二阶段:组成员关系是动态的。本地多播路由器周期性地探询本地局域网上的主机,以便知道这些主机是否还是组的成员,只要有一个主机响应,多播路由器就认为这个组是活跃的。如果一个组在经过几次的探询后仍然没有一个主机响应,多播路由器就认为本网络上的主机已经都离开了这个组,也就不再把这个组的成员关系转发给其他多播路由器。

     (9)虚拟专用网(Virtual Private Net, VPN)

    专用网是为了解决IP地址紧缺的问题,它指在机构内部通信时可以使用专用IP地址(A类一个网络、B类16个网络、C类256个网络)为主机自行分配IP,不需要申请一个全球唯一IP地址。需要明确一点:专用IP地址只能用于机构内部通信,是可重用的,因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。

    虚拟专用网:机构内部不同场所的不同专用网要通信时,可以利用公用的因特网作为载体,这样的专用网称为虚拟专用网。在因特网上传送的数据需要加密,使用IP隧道技术在公用因特网上传输。

    NAT网络地址转换:如果专用网中的主机要和因特网上的主机通信,就必须使用网络地址转换表为专用网内的主机分配一个全球唯一IP地址,使用的是安装在路由器中的NAT软件,但必须由专用网内部的主机发起请求,而不能使用因特网中的主机发起通信,因而内部主机不能作为服务器。 

    注意:为了将网络互相连起来,在各个层使用的中间设备如下

    • 物理层:转发器/集线器
    • 数据链路层:网桥或桥接器
    • 网络层:路由器
    • 网络层以上:网关 
  • 相关阅读:
    LOJ #3219. 「PA 2019」Iloczyny Fibonacciego (斐波拉契表示性质+FFT)
    一类区间修改问题的做法
    [百炼智能]hihoCoder挑战赛37 D Items(树状数组维护01背包—梦想成真!!!)
    LOJ #2092. 「ZJOI2016」大森林(lct)
    LOJ #3220. 「PA 2019」Terytoria(随机染色或线段树)
    Codeforces 223E. Planar Graph(平面图)
    JZOJ 6678. 【2020.05.01省选模拟】苏菲的世界 (simpson积分+几何法求多个圆的并的面积)
    Day3-Python基础3---函数介绍
    Day2-Python基础2---字符编码与转码
    Day2-Python基础2---集合和文件操作
  • 原文地址:https://www.cnblogs.com/sophia-yun/p/3260182.html
Copyright © 2011-2022 走看看