网络层

作者: 源来是你啊 | 来源:发表于2019-09-28 15:28 被阅读0次

    网络层

    1.网络层介绍:

    网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。主要内容有:虚电路分组交换和数据报分组交换、路由选择算法、阻塞控制方法、X.25协议、综合业务数据网(ISDN)、异步传输模式(ATM)及网际互连原理与实现。

    2.功能目的

    a) 主要功能负责点到点(point-to-point)的传输(这里的“点”指主机或路由器)

    网络层是为传输层提供服务的,传送的协议数据单元称为数据包或分组。该层的主要作用是解决如何使数据包通过各结点传送的问题,即通过路径选择算法(路由)将数据包送到目的地。另外,为避免通信子网中出现过多的数据包而造成网络阻塞,需要对流入的数据包数量进行控制(拥塞控制)。当数据包要跨越多个通信子网才能到达目的地时,还要解决网际互连的问题。

    b) 网络地址: 网络层地址由两部分地址组成:网络地址和主机地址。网络地址是全局唯一的。

    c) 路由寻址:

    • 通过路由选择算法为分组通过通信子网选择最佳路.

    • 实现路由选择,拥塞控制以及网络互联等.

    网络层的主要协议:IP、ARP、RARP

    ARP协议:用来找到目标主机的Ethernet网卡Mac地址;

    IP协议:则承载要发送的消息。数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息。

    3.IP协议

    IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情。所以这也就出现了TCP是一个可靠的协议,而UDP就没有那么可靠的区别。

    IP数据报如下图所示:

    2019-06-08_195233.png

    3.1 ip路由选择

    当一个IP数据包准备好了的时候,IP数据包(或者说是路由器)是如何将数据包送到目的地的呢?它是怎么选择一个合适的路径来"送货"的呢?

    最特殊的情况是目的主机和主机直连,那么主机根本不用寻找路由,直接把数据传递过去就可以了。至于是怎么直接传递的,这就要靠ARP协议了,后面会讲到。

    稍微一般一点的情况是,主机通过若干个路由器(router)和目的主机连接。那么路由器就要通过ip包的信息来为ip包寻找到一个合适的目标来进行传递,比如合适的主机,或者合适的路由。路由器或者主机将会用如下的方式来处理某一个IP数据包

    1. 如果IP数据包的TTL(生命周期)以到,则该IP数据包就被抛弃。

    2. 搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标主机,则将该包发向目标主机

    3. 搜索路由表,如果匹配主机失败,则匹配同子网的路由器,这需要“子网掩码(1.3.)”的协助。如果找到路由器,则将该包发向路由器。

    4. 搜索路由表,如果匹配同子网路由器失败,则匹配同网号(第一章有讲解)路由器,如果找到路由器,则将该包发向路由器。

    5. 搜索路由表,如果以上都失败了,就搜索默认路由,如果默认路由存在,则发包

    6. 如果都失败了,就丢掉这个包。

    这再一次证明了,ip包是不可靠的。因为它不保证送达。

    4.ARP协议

    还记得数据链路层的以太网的协议中,每一个数据包都有一个MAC地址头么?我们知道每一块以太网卡都有一个MAC地址,这个地址是唯一的,那么IP包是如何知道这个MAC地址的?这就是ARP协议的工作。

    在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。

    工作原理:

    1)每台主机都维护一个ARP缓存表,当源主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(就是一个IP-MAC地址对应表缓存)。

    2)如果查询的IP-MAC值对不存在,那么源主机就向网络发送一个ARP协议广播包,这个广播包里面就有待查询的IP地址,比如询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播)。

    1. 直接收到这份广播的包的所有主机都会查询自己的IP地址,如果收到广播包的某一个主机发现IP地址与本机相符,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP广播的源主机,而广播源主机拿到ARP包后会更新自己的ARP缓存(就是存放IP-MAC对应表的地方)。

    2. 发送广播的主机就会用新的ARP缓存数据准备好数据链路层的的数据包发送工作。

    5.ip地址与路由

    IPv4的IP地址长度为4字节,通常采用点分十进制表示法(dotted decimal representation)例如0xc0a80002表示为192.168.0.2。Internet被各种路由器和网关设备分隔成很多网段,为了标识不同的网段,需要把32位的IP地址划分成网络号和主机号两部分,网络号相同的各主机位于同一网段,相互间可以直接通信,网络号不同的主机之间通信则需要通过路由器转发。

    过去曾经提出一种划分网络号和主机号的方案,把所有IP地址分为五类,如下图所示:

    2019-06-08_200404.png

    A类 0.0.0.0到127.255.255.255 B类 128.0.0.0到191.255.255.255 C类 192.0.0.0到223.255.255.255 D类 224.0.0.0到239.255.255.255 E类 240.0.0.0到247.255.255.255

    一个A类网络可容纳的地址数量最大,一个B类网络的地址数量是65536,一个C类网络的地址数量是256。D类地址用作多播地址,E类地址保留未用。

    随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址,导致B类地址很快就分配完了,而A类却浪费了大量地址。这种方式对网络的划分是flat的而不是层级结构(hierarchical)的,Internet上的每个路由器都必须掌握所有网络的信息,随着大量C类网络的出现,路由器需要检索的路由表越来越庞大,负担越来越重。

    针对这种情况提出了新的划分方案,称为CIDR(Classless Interdomain Routing)。网络号和主机号的划分需要用一个额外的子网掩码(subnet mask)来表示,而不能由IP地址本身的数值决定,也就是说,网络号和主机号的划分与这个IP地址是A类、B类还是C类无关,因此称为Classless的。这样,多个子网就可以汇总(summarize)成一个Internet上的网络,例如,有8个站点都申请了C类网络,本来网络号是24位的,但是这8个站点通过同一个ISP(Internet service provider)连到Internet上,它们网络号的高21位是相同的,只有低三位不同,这8个站点就可以汇总,在Internet上只需要一个路由表项,数据包通过Internet上的路由器到达ISP,然后在ISP这边再通过次级的路由器选路到某个站点。

    下面举两个例子:

    划分子网的例子1

    IP地址 140.252.20.68 8C FC 14 44
    子网掩码 255.255.255.0 FF FF FF 00
    网络号 140.252.20.0 8C FC 14 00
    子网地址范围 140.252.20.0~140.252.20.255

    划分子网的例子2

    IP地址 140.252.20.68 8C FC 14 44
    子网掩码 255.255.255.240 FF FF FF F0
    网络号 140.252.20.64 8C FC 14 40
    子网地址范围 140.252.20.64~140.252.20.79

    可见,IP地址与子网掩码做与运算可以得到网络号,主机号从全0到全1就是子网的地址范围。IP地址和子网掩码还有一种更简洁的表示方法,例如140.252.20.68/24,表示IP地址为140.252.20.68,子网掩码的高24位是1,也就是255.255.255.0。

    如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址,这些地址不会出现在Internet上,如下表所示。

    • 10.*,前8位是网络号,共16,777,216个地址

    • 172.16.到172.31.,前12位是网络号,共1,048,576个地址

    • 192.168.*,前16位是网络号,共65,536个地址

    使用私有IP地址的局域网主机虽然没有Internet的IP地址,但也可以通过代理服务器或NAT(网络地址转换)等技术连到Internet上。

    除了私有IP地址之外,还有几种特殊的IP地址。127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1。loopback是系统中一种特殊的网络设备,如果发送数据包的目的地址是环回地址,或者与本机其它网络设备的IP地址相同,则数据包不会发送到网络介质上,而是通过环回设备再发回给上层协议和应用程序,主要用于测试。如下图所示)。

    2019-06-08_200545.png

    还有一些不能用作主机IP地址的特殊地址:

    • 目的地址为255.255.255.255,表示本网络内部广播,路由器不转发这样的广播数据包。

    • 主机号全为0的地址只表示网络而不能表示某个主机,如192.168.10.0(假设子网掩码为255.255.255.0)。

    • 目的地址的主机号为全1,表示广播至某个网络的所有主机,例如目的地址192.168.10.255表示广播至192.168.10.0网络(假设子网掩码为255.255.255.0)。

    相关文章

      网友评论

          本文标题:网络层

          本文链接:https://www.haomeiwen.com/subject/aoiquctx.html