计算机网络-网络层学习笔记

网络层:

  网络层所要解决的是如何将数据从源端到接收方,其中可能会经过很多很多的路由器,与数据链路层不同的是,数据链路层只需要考虑将帧从数据线的一边传到另一边,而网络层需要经过很多的线和路由器才能到接收端。

  网络层主要分为3个部分:1.ip协议。2.路由选择协议。3.其他协议。

网络层提供连接服务的计算机网络:虚电路网络

网络层提供无连接服务的计算机网络:数据报网络

  1.虚电路网络:在每次发送之前都会建立一条从源端到目的端的路径,在路径上的路由器都会记录这条路径的编号和下一跳的地址,每当路由器接收到数据包,查看包里面的路径编号,就直接转发给下一跳。

  2.数据包网络:路由器每接收到一个数据包都会解封装并查看里面的目的地址,在路由器中的路由表查找下一跳应该从哪个端口转发,直到转发到目的网络。

    1.路由表:

      表中每条转发项都指明分组到某个网段或者某个主机应该通过路由器的那个物理接口发送,然后就可以到达该路径的下一个路由器,或者不再经过别的路由器而传送到直接相连的网络中的目的主机。即路由表是路由器中维护的一张表,记录了,从当前路由器到某一网络应该从哪个端口转发。

路由表格式:

1.IP协议:

    1.IP数据报:

       IP数据报是将需要传输的数据首先需要加上IP头信息,封装成数据报。IP数据报是IP协议使用的数据单元,互联层数据信息和控制信息的传递都需要通过IP数据报进行。其中IP数据报包含一个头部一个数据部分,头部封装了一些其他层所需的信息,而数据部分包含着要传输的数据。

    2.IP地址

      IP地址为互联网上的每一个网络和每一台主机分配一个逻辑地址。由于有这种唯一的地址,才保证了用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来。

    3.IP分片:

      1.路径最大传输单元MTU:某一能通过的最大数据包大小,MTU指定了网络中可传输数据包的最大尺寸。

      如果一个数据报的大小大于某一网络的MTU,那么这个路由器就无法转发去这个网络。所以要做的就是将IP数据包分片。被分片后的各个IP数据报可能经过不同的路径到达目标主机。

一个IP数据报在传输过程中可能被分片,也可能不被分片。如果被分片,分片后的IP数据报和原来没有分片的IP数据报结构是相同的,即也是由IP头部和IP数据区两个部分组成,但其中内容不相同。

      2.IP重组:当分了片的IP数据报到达最终目标主机时,目标主机对各分片进行组装,恢复成源主机发送时的IP数据报,这个过程叫做IP数据报的重组。会根据数据报头的信息来重组一个完整的数据报。

    4.IP协议:

      IPv4协议:IPV4是互联网通信协议第四版,也是我们日常比较常见的。以下是IPv4协议的IP数据报的头部格式。

        

       按顺序j解释:1.版本, 占用4位二进制,这个字段记录了是数据报的协议是属于那个版本(此处为IPv4)。    

           2.IHL,占用4位二进制,头部分的总长度的 即IP数据报除去数据部分的长度,最小位5(以32位为单位,5*32比特)即最后的选项为空的。最大为15(15*32比特 也就是60字节)所以数据报头部长度最大为60字节。  

           3.区分服务,占用8位二进制位,用于规定本数据报的处理方式。如今这个字段用的较少。  

           4.总长度,占用16位二进制,代表着整个IP数据报的总长度,包含头和数据部分的总长度,字节位单位。 

           5.标识,占用16位二进制,用于标记当前IP数据分片所属的数据报。

           6.后面的一位是未使用位。

           7.DF,代表当前数据报能否分片,若位1则当前数据报不能分片。

           8.MF,代表更多的段,意思就是当前MF为1则,当前分段不是数据分片的最后一段。代表着后面依旧还有该数据报的其他分片,若一个数据报被分片,则除最后一段其他分段都需要将MF位置为1。

           9.段偏移,13位二进制,表示当前分段在数据报所有分段中的位置。

           10.生存时间TTL,8位二进制位,这个字段相当于当前这个数据报的生命值,这个数据报每经过一个路由器其TTL就减一,TTL为零的时候这个数据报就会被丢弃,防止了数据报在网络中循环传输的情况。

           11.上层协议分段,占用8位二进制位,IP协议可以承载各种上层协议,目标端根据协议标识就可以在接收方把收到的IP数据报送到上层,用对应协议处理。

                                

           12.头校验和,占用16位二进制数,用于对整个头部数据做校验,不对数据部分校验。

           13.源地址和目的地址,表示的发送方和希望的接收方的IP地址。

           14.选项,其字段意义是为了设置一些上面没出现的信息,其中有很多选项类别。有最初设计的定义的5个选项。

                

          选项之中包含字节填充字段保证数据包为32位的整数倍。

      IPv4使用32位(4字节)IP地址,地址只有2^32个地址,其中还包括了特殊地址,如今IPV4的IP地址已经枯竭。这个地址一般由4位十进制数表示每位十进制范围由0~255(0~2^8-1)例如:192.168.0.1就是一个IP地址。

      对IP地址的解释:

        1.网络地址:网络分为A类B类CDE类一共5类

    如上图,

    A类地址从1.0.0.0-126.0.0.0,主机地址有24位,因为主机号有24位,每个网络下可以有(2^24)-2台主机,减二是因为主机号全0和全1分别网络号和广播地址。

    B类地址从128.0.0.0-191.255.0.0,主机地址有16位,每个网络下可以有(2^16)-2台主机。

       C类地址从192.0.0.0-223.255.255.0,主机地址有16位,每个网络下可以有(2^8)-2台主机。

       D类地址是多播地址,网络号在224~239之间。

    E类地址是保留地址,网络号在240~255之间。

   2.子网划分:

    将一个网络划分成更多个子网,称为子网划分。每个A类网络可能有很多台,而同一网络中有这么多节点是不可能的,使大部分地址浪费。

    于是在网络基础上形成了子网的划分,网络号固定,占用主机号的一位或多位,作为子网号,来划分子网。

    子网掩码:

    子网号和主机号混在一起,为了区分他们,就采用了子网掩码

    子网掩码包含32位,其中将IP地址中网络号和子网号所对应的位置置为1,而主机号位置置为0。

    

    举个例子:

    一个IP地址位 192.168.10.129,子网掩码是255.255.255.128,其中这个IP地址是C类地址所以前3个十进制数位网络号,将第四位转换位2进制10000001,子网掩码第四位为10000000(第一位为1,是子网的号).第一位为子网号,看IP地址的第四位十进制数的第一位为子网号,后七位为主机号。那么这个网络被划分为2^1个子网,每个子网有2^7-2个主机。

    不同子网之间需要通过路由器转发。

    如何判断一个IP是不是属于此网段:只需要将 (IP地址与子网掩码按位与运算得到的结果与网络号+子网号比较,一样就是一个网段)

    3.无分类编址 CIDR:

      CIDR 消除了传统 A 类、B 类和 C 类地址以及划分子网的概念,将IP地址重新划分成了2个部分,一个是网络前缀和主机号

      在CIDR的下的IP地址是这样的XXX.XXX.XXX.XXX/xx其中前面大写X为IP地址,而后面的小写x代表IP地址中网络前缀的位数

      比如192.168.0.1/24 代表前24为网络前缀,后面8位为主机号,在前24位表示的当前的网络号下可以包含2^8-2个主机。

      当一个分组达到路由器,提取出目的IP地址,将目的IP与子网掩码(也就是上面的xx位的1和32-xx位的0)按位与操作,得到目的网络号,但由于CIDR表示的形式,有时将会有多个网络号符合当前IP,我们需要选取子网掩码 也就是xx最大的哪个网络,即最长匹配前缀,当网络号越长越接近目标网络。

      CIDR优点:

      前缀聚合:CIDR表示的地址量在路由器中远小于之前的两种方式。例如 有两个IP地址为192.168.48.0/24和192.168.49.0/24,观察其不变的位数,其中192.168是不变的48与49二进制分别为00110000和00110001,前七位不变,我们将前七位看作网络前缀,而最后一位看作主机号,可以得到一个IP192.168.48.0/23,就将多个IP聚合成一个IP。聚合的前提是子网的地址空间是连续的,且各个子网的下一跳是相同的,那么多个IP就可以聚合到一个路由器端口上去了。 可以看作是一颗二叉树吧。

      

    4.NAT技术:

      由于IPv4地址已经枯竭,为了弥补地址不足,引入了NAT技术,NAT技术扩大了地址数,但是却违背了计算机网络的原则。

      工作原理

        NAT将网络分为内网外网,外网则是我们平时说的网络,有正常的网络地址。内网则是私有的,内网的地址有可能是和外网是一样的,但由于内网限制,不会引起冲突。内网和外网联系使用的是NAT转换器,内网发送一个数据,会先经过NAT转换器,NAT转换器会将内网的IP和端口替换成外网IP和端口并且记录下这些数据,之后在转发到目的端,目的端发送数据回来时,也会经过NAT转换器,通过对应端口号找到将外网IP转换为内网IP,在通过MAC地址找到对应主机。由于这种机制影响了部分协议的通信,而且一旦NAT转换器出现问题时将会使对应内网无法通信。

    5.IPv6:

      由于IPv4的地址只有2^32(4亿多)个,地址已经逐渐枯竭,而IPv6的地址有128位,这个地址是很难用完的。IPv4逐渐向IPv6过渡。

      IPv6的地址格式:IPv6的地址由128位,将其每16位分一段一共分8段,每段由4个十六进制数表示。每段中间用冒号(:)分割。类似于:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX

      IPv6的压缩地址:由于IPv6中间有很多段全零段例如:XXXX:0000:0000:0000:0000:0000:XXXX:0000,中间一共有5个连续的全零段,可以将其简写成XXXX::XXXX:0000,中间保留一个冒号即可,每个地址中只能有一个::。(因为是固定8段,所以在双冒号处补充全0段到8个段就可以恢复通常格式)

      IPv6还能将IPv4内嵌在其中,由于IPv4地址占32位,IPv6每个段占16位,于是将IPv6的最后两段替换位IPv4地址即XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:192.168.0.1。

                        ipv6的数据报头部的必须部分

                   

                    与IPv4不同的是

                    流标签 :标记那些需要IPv6路由器特殊处理的信息包顺序。

                    有效荷载长度: 除了必须部分外数据报可能还有荷载(扩展数据报头和负载数据),例如IPv4的选项,这个字段标记了荷载的长度。

                    下一个头:指明了除了当前数据报头以外的下一个扩展数据报头。若当前是最后一个数据报头则,填写的是上层的协议(TCP,UDP)。

                            扩展头的基本几种↓

                    

     5.IP寻址

      有了IP数据报之后如何寻址,IP数据报中存了目的机的地址,在每次数据报到达一个路由器之后,路由器都会将数据报解封装,将其目的IP地址找到,并在路由表中找到下一步应该从哪个端口转发。

数据报抓取:

 

 根据上面的数据报

第一行:version就是版本:4 即遵循IPv4协议的数据报格式

第二行:头部大小 20字节,括号中的5代表是按32比特位为单位的大小。上面都有写。

第三行:区分服务为0x00代表啥也没有

第四行:总长度:41字节

第五行:标识所属数据报编号为0xc2b3

第六行:Flags

 包含了16字节 有是否能被分片,是否是最后一个分片,和分段偏移量和一个未用字段。

第七行:TTL  说明生命还剩128跳。

 第八行:上层协议是TCP协议

 第九行:校验和

最后两行:源和目的IP地址。

 2.路由协议:

  当一个路由器接收到数据报会有3步动作首先解封装到网络层提取目的IP地址然后将目的IP地址与子网掩码按位与操作得到目的网络,查找路由表,最后重新封装转发出去。

  重新封装的时候会,将IP数据头的TTL减1,将数据链路层的数据帧的目的和源MAC地址替换,有时还需要分片。

  路由器开启了路由器接口后,会自动将接口对应的子网,存到路由表作为直连子网,路由到这样的网络称为直连路由。

  如果要路由到更远的网络那么就得有更远距离的地址的路由表,更远的路由表如果通过人工手动配置,更新,路由也只会跟着人工配置的路由表来转发。称为静态路由

  其优缺点:

       

  需要由路由选择协议动态的维护,更新和建立,就需要动态路由,他需要的设备要求更高,但减免的人工的负担。适合大型,常变化的网络

  

  1.路由选择协议:

    1.距离矢量链路选择算法(DV):DV协议让每个路由器维护两个向量D,S,Dij代表从i到j的花费的代价,Sij是从i到j的下一跳应该去哪个路由器。之后每个路由器都和与自己相邻的路由器都交换信息D,S,将其取最优值。交换的信息很大,这是他的确定。RIP协议就是基于DV算法。

      RIP协议:RIP基于DV,并且以跳数位权值,当跳数超过了15,认为不可达,每30秒钟RIP协议就会令路由器交换一次信息,以便维护和更新。RIP协议如今不常用,RIP协议由于接受的是邻居的信息,无法保证信息是最新的,真实的。

    2.链路状态路由选择算法(LS):路由器启动时会,会发送一个Hello信息出去,给他的邻居。以此来发现当前路由器的邻居。

                   之后便设置与邻居之间的成本,即去邻居道路所花费的成本,一般用延迟或链路带宽表示成本。

                   之后构造一个,这个组包含了源路由器的信息序列号(表示当前新旧程度,32位),和一个age(计时),和当前路由器的邻居列表以及相应的代价值。

                   之后每个一段时间再将这个组发送给所有邻居。当其他路由器接收到这个组就会去判断,

                   如果当前接收到组的路由器的路由表中包含组的源路由器且序列号小于新接收的序列号或不包含源路由器,那么就将这个组广播出去。

                   如果当前接收到组的路由器的路由表中包含组的源路由器且序列号等于新接收的序列号,就认为是重复的组,便丢弃。

                   如果当前接收到组的路由器的路由表中包含组的源路由器且序列号大于于新接收的序列号,说明是过时的组,便拒绝

                   通过这个算法路由器可以获取全网的拓扑图。有了拓扑图就可以计算出从一个点到另一个点的最优路径。

                   age的作用:当路由器B接收到一个路由器A的组,会对age进行减一,若在age为0之前没有接收到下一个路由器A的新组(即下一个序列号的组)那么就将这个组丢弃,不做记录。解决了路由器奔溃和组的序列号的传输错误问题。

                   

                  单区域OSPF协议:

                    OSPF协议便是基于LS算法的,是两个相邻的路由器通过发报文的形式成为邻居关系,邻居再相互发送链路状态信息形成邻接关系,之后各自根据最短路径算法算出路由,放在OSPF路由表,OSPF路由与其他路由比较后优的加入全局路由表。整个过程使用了五种报文、三个阶段、四张表。

                   报文类型:                    

                    Hello报文:建立并维护邻居关系。                    

                    DBD报文:发送链路状态头部信息。                     

                    LSR报文:把从DBD中找出需要的链路状态头部信息传给邻居,请求完整信息。

                    LSU报文:将LSR请求的头部信息对应的完整信息发给邻居。
                    LSACK:收到LSU报文后确认该报文。
                   阶段:
 
                    邻居发现:通过发送Hello报文形成邻居关系。
                    路由通告:邻居间发送链路状态信息形成邻接关系。
                    路由计算:根据最短路径算法算出路由表。
                   四张表类型:
                    邻居表:主要记录形成邻居关系路由器。
                    链路状态数据库:记录链路状态信息。
                    OSPF路由表:通过链路状态数据库得出。
                    全局路由表:OSPF路由与其他比较得出。
 
                    其作用过程就是上面提到的ls算法。OSPF 适合在大范围的网路,收敛快,所以应用广泛。

 3.其他协议:

    

    1.Internet消息控制协议ICMP:

    该协议用来报告一些路由时发生的一些问题,

    当启用ICMP协议后 IP数据报头部的协议字段置为1(上面有介绍)。

    ICMP数据会被封装到IP数据报的数据部分,ICMP数据报的格式有

        

        类型:如下有部分类型:

          

        代码:表示了错误的具体类型

        校验和:校验位。

        

          上面是IP数据报 其中协议字段为ICMP

          下方为ICMP报文,其中错误类型为3为目地不可达,代码为3具体错误类型端口不可达

          ICMP不报道本身的问题。

        ICMP的具体应用:  

          1.ping命令:在cmd窗口输入:ping 目的IP地址 主机将会向目的IP发送一个ICMP回声请求报文,目的端接收之后会发送一个应答报文,接收端检查两者数据一致则目的可达。

        

         上图是执行ping命令的截图,ping命令默认执行4次。

    2.地址解析协议ARP:

      ARP处于局域网中,将目标及的ip地址映射到mac地址上。ARP数据帧格式(ARP发送的是帧但处于的是网络层)

  若是

   请求帧 则目的mac地址是48个1。数据字段中包含了目的IP和源IP。

   应答帧 则目的地址是填充的发送过来帧的mac地址,数据中写入了所需的目标MAC地址。

下图是一个ARP请求帧

      ARP工作原理:当主机需要某一ip地址对应的mac地址时,会广播发送一个ARP帧,处于同一个局域网的都会收到这个请求帧,查询帧中目的ip是与本身ip对应,若不是则直接丢弃,若接收方发现请求帧的目的ip与本ip是同一个就接收帧,并对刚刚发送的主机单播一个应答帧回去。

      

      ARP优化:1.建立ARP表缓存ARP得到的信息。2.使用其他主机发送的ARP请求中的信息来更新自己的ARP表的缓存。3.每个主机启动时会广播一个ARP请求自己IP的IP/MAC地址对给其他主机,其他主机会进行缓存。

4.拥塞控制:

   拥塞控制是网络层和传输层一起工作的责任,网络中出现太多的数据包时,网络的性能开始急剧下降,这种情况称为拥塞。

      

    过程1.监视系统。2.传递拥塞信号。3.调整运行,控制拥塞。

      1.监视系统:检测拥塞程度:超时和重传的分组数的大小,应缺乏缓存空间而丢弃的分组数大小等等。

      2.传递拥塞信号:添加警告位,利用路由器询问区域流量去感知路由流量。

      3.调整运行,控制拥塞:1.增加资源:启用更多光纤或备份路由器。2.降低负载:可以拒绝给某些用户提供服务或降低服务质量。

 5.流量整形:

    调节数据传输的平均速率,减少突发带来的拥塞。

      1.漏桶:即在发送的时候有个队列,一直按某一恒定速度发送数据,若数据超出了队列的范围,则丢弃多余的数据。

    

      2.令牌桶:即在发送处有一个令牌生成机制,令牌按一定速率生成,令牌的数量的是有一定限制的,每次发送数据都要有对应数据个数的令牌被丢弃,若令牌为0则数据必须等待令牌生成之后才能发送,则数据发送速率和令牌生成速率持平。当突发发生时。就只能通过累计的令牌来处理突发,如果要处理下一次突发必须累计令牌,让突发之后发送的速率得到了一个限制。以此来提高数据传输的服务质量。

    

猜你喜欢

转载自www.cnblogs.com/CaoRuiChen/p/12733236.html