• 层3 网络层


    一、网络层提供的服务

     
    1

    说明:网络层负责在不同网络之间转发数据包,基于数据包的IP地址转发。至于多个数据包在接收端的顺序、是否丢包(不负责重传)这些都不是网络层的任务,而是传输层的任务了。

    二、网络层如何发送数据

    • 应用程序准备要传输的文件
    • 传输层将文件分段并且编号
    • 网络层田间目标IP地址和源IP地址
    • 数据链路层一般有两种情况,一种是使用自己的子网掩码,判断自己在哪个网段和目标地址在哪个网段。如果在同一个网段,则直接使用ARP广播解析目标IP地址的MAC地址,然后直接传输。如果不是在同一个网段,则首先要询问网关的MAC地址,将数据先传递给路由器,路由器根据目标IP地址将数据发送目的主机。对于数据,在传输层叫段,在网络层叫包,在链路层叫帧。
       
      2

      说明:从上图中我们可以清晰的看到数据是如何传送的,同时也可以看到各类设备工作在哪一层。

    三、网络层协议

    3.1 ARP协议

    IP地址通过广播目标MAC地址是FF-FF-FF-FF-FF-FF来解析目标IP地址的MAC地址。只能在本网络,不能跨网络。也就是只能扫描本网络的MAC地址。使用命令arp -a可以查看某时刻的网络MAC地址。

    3.1.1 ARP欺骗

    比如现在同一个网络中有三台计算机P1、P2、P3,其物理地址分别是M1、M2、M3,此时P1要向P2发送数据,于是使用ARP协议广播,首先P2将自己的物理地址高速了P1,于是这个地址M2就存储在了P1上,但是此时P3通过黑客软件伪装成P2告诉P1物理地址为M3,于是之后所有数据都发送给P3,当然P3为了不被发现,可以将数据再次转发给P2。这就是ARP欺骗。我们可以使用命令arp -s 192.168.88.100 00-0c-29-53-48-c4修改某个IP地址的MAC地址,此时本计算机就缓存了这个MAC地址,而且是静态的,因为是管理员告诉的。如果要清除缓存的物理地址可以点本地连接,点击修复即可。以上我们可以知道,ARP协议是用来将IP地址解析为MAC地址,而IP地址用来将数据从一个网段转发到另一个网段

    3.2 网际控制报文协议ICMP

    此协议用来检测网络是否通畅,比如我们使用ping命令测试网络就是使用的此协议。在使用此命令的时候我们可以查看延时,同时关注一个信息,就是TTLTTL表示数据包的生存周期,一般来说Linux64Windows128Unix255,然后数据在传输的过程中每经过一个路由器则TTL减一,通过这个值我们可以大概判断所ping计算机的系统,如果TTL减为零则数据不再传输,直接被丢弃。如果给ping命令加上-t,则表示让此命令一直进行下去。Windowspathping命令能跟踪数据包路径,计算丢包情况。

    3.3 Internet组播管理协议IGMP

    • 组播(多播)
      通过一个组播地址让一组计算机来进行接收,而不是向广播那样,所有的计算机都能接收到。
    • IGMP协议
      就是配置在一个组的路由器上面的,如果这个组都不需要接收数据了,那么配置了此协议的路由器就会知道发送端不需要发送数据了。

    四、抓包分析数据

    4.1 IP数据报结构

    一个IP数据报由首部和数据两部分组成

    • 首部的前一部分是固定长度,供20字节,是所有IP数据报必须有的
    • 在首部的固定部分的后面是一些可选字段,其长度是可变的
       
      3

       
      4

      说明:版本用来标识TCP/IP协议的版本。区分服务是指,在传输信息的过程中,有些信息可能要求实时性,但是有些却没有这样的要求,于是对于这两种信息我们可以对其做上标记,同时也高速路由器优先传输哪种信息,这就是区分服务。总长度即数据报或分片之后数据报的长度。而前面讲到数据链路层的数据最大是1500字节(最大传输单元MTU),而这里的数据报却最大是2^16-1个字节,这里就会产生冲突,这里使用分片将网络层数据报分成小的片,然后由链路层传输,一般情况下是不需要分片的。分片实例如下图6
       
      5

       
      6

      而这里的标识是指,当一个数据报分片之后如何在接收端进行组装,那时就需要使用这个标识。标志表示数据报是否进行了分片,标志站3位,目前只有前两位有意义。标志字段的最低位是MF(More Fragment)MF=1表示后面“还有分片”;MF=0表示最后一个分片。标志字段中间的一位是DF(Don't Fragment)。只有当DF=0时才允许分片。片偏移表示在分片之后, 某一个数据报在整个数据报中的分片位置的偏移是多少。生存时间TTL) 即数据报的生存时间,可以防止路由中的环路导致数据不能送达目的地。协议是指数据使用的是什么协议,是TCP还是UDP还是其他。
       
      7

      其中各协议对应的协议号为,ICMP:1、IGMP:2、TCP:6、UDP:17、IPv6:41、OSPF:89首部检验和(16位)用于检验数据报是否被修改或者出错,首部检验和字段只检验数据报的首部,不检验数据部分,这里不采用CRC检验码而采用简单的计算方法。
       
      8

      可选字段一般没有,用于支持排错测量等,在IPv6中已被取消了。我们可以使用抓包工具进行查看,同时还可以使用抓包工具来排查网络故障。

    五、IP协议

    网络层的职责就是在路由器之间转发数据,不负责数据的是否出错等问题。而路由器是如何判断数据应该从哪个口转发出去呢?是如何选择路径的?这是通过路由表来进行选择的,路由表一种是由管理员告知的这一段数据应该怎么走,这就是静态路由;另一种是好几个路由器通过某种协议(RIP等)相互学习到某个网段该怎么走,在传输的时候自己选择走哪条路径传输,这就是动态路由。这里所述的IP协议是一个统称,即所有能让路由器学习到路由表的协议统称为IP协议。

    5.1 网络畅通的条件

     
    9

    说明:网络畅通的条件就是数据报在发送的过程中有去有回,即传输路径中的每个路由器都知道其要传递的下一个路由器地址,并且也知道数据反向回来时的目的路由器地址。所以计算机和路由器必须配置网关,同一个局域网中通信是不需要网关的。

    5.2 静态路由

    在使用静态路由时,需要管理员高速所有路由器所有没有直连的网络下一跳(下一个传输结点)给哪个路由器。这里注意:如果是如上图那样的网络我们可以手动设置一些静态路由即可,但是如果网络较为复杂,都手动设置会特别麻烦,而且容易出错,此时就需要使用动态路由了。静态路由适合于小规模网络,不能够自动调整路由。

    5.3 动态路由

     
    10

    说明:
    • RIP:周期性的广播路由表,使得网络中的其他路由器知道此路由器连接的线路。同时自己判断转发次数最少的路径为最佳路径,一般30秒更新一次路由信息。最大转发次数为15次,如果有16个及以上的路由器则仍未不可到达,不适合网络规模较大的情况。

    • OSPF:此协议选择最佳路径的方式不是以转发多少次为标准,而是以带宽为标准,哪个路径的带宽大就选择哪条路径转发,这样会更快。



  • 相关阅读:
    udev文件系统的使用和基本工作原理分析
    ARM平台上蓝牙协议栈Bluez的移植使用和配置
    udev文件系统的使用和基本工作原理分析
    ARM平台上蓝牙协议栈Bluez的移植使用和配置
    Linux 下用户空间与内核空间数据交换的方式
    详解Linux2.6内核中基于platform机制的驱动模型
    IOS怎么判断网络连接
    ios 设备方向判断
    IOS加解密
    用代码向网站提交数据
  • 原文地址:https://www.cnblogs.com/ganchuanpu/p/6864348.html
Copyright © 2020-2023  润新知