美文网首页计算机组成/网络/系统
计算机网络(二)之网络层篇

计算机网络(二)之网络层篇

作者: ThunderChen | 来源:发表于2021-08-21 22:11 被阅读0次

    网络层概述

    问题回顾(上一篇文末)

    • 跨节点传输?

    网络层相关内容

    IP协议详解

    • 虚拟互联网络

    1. 计算机网络是错综复杂的
    2. 物理设备通过使用IP协议,屏蔽了物理网络之间的差异
    3. 当网络中主机使用IP协议连接时,则无需关注网络细节
    4. IP协议使得复杂的实际网络便为一个虚拟互联的网络
    5. IP协议使得网络层可以屏蔽底层细节而专注网络层的数据转发
    6. IP协议解决了在虚拟网络中数据报传输路径的问题
    • IP协议

    MAC地址和IP地址的区别

    IP协议定义

    1. IP地址长度为32位,常分成4个8位
    2. IP地址常用使用点分十进制来表示(0-255.0--255.0--255.0--255)
      例如: 114.114.114.114 、 1.1.1.1 、8.8.8.8 、70.12.34.34 、255.255.255.255 、111.111.111.111
      总共有 2^32 = 4294961292 个IP地址

    对于上节提到的"帧"数据,主要是分为"帧"首部,"帧"尾部,"帧"的数据;对于帧的数据主要就是IP数据报

    IP数据报

    IP数据报分为 IP首部IP数据报的数据
    IP首部图解如下:

    1. 版本 :占四位,指的是IP协议的版本,通信双方的版本必须一致,当前主流版本是4,即IPv4,也有IPv6
    2. 首部长度: 占4个字节,最大数值为15,表示的是IP首部长度,单位是"32位字"(4个字节),也即是IP首部最大长度为60字节,最小长度为20字节
    3. 总长度:占16位,最大数值为65535,表示的是IP数据报总长度(IP首部+IP数据),最大的数据链路长度MTU为1500,显然65535远大于1500,因此数据链路层会把IP协议进行分片.
    4. 标识:协议内部主要的相关信息
    5. 标志: 标记IP报文是否可以分片
    6. 片偏移:将IP报文进行分片,拆分成多个数据帧.记录当前数据帧保存的是第几个偏移的数据.
    7. TTL:占8位,IP数据报文在网络中的寿命,每经过一个设备,TTL减1,当TTL=0时,网络设备必须丢弃该报文,丢掉之后通过会发出一个ICPM终点不可达差错报文
      解决的是,当IP报文找不到终点的时候,避免IP数据在网络中无限的传输而消耗带宽,因此设置TTL可以让IP在有限次传输后到达目的机器或者未到达丢弃掉.
    8. 协议:占8位,表明IP数据所携带的具体数据是什么协议的(如:TCP、UDP等)
      具体如下图:
    9. 首部校验和: 占16位,校验IP首部是否有出错!
    10. 源IP地址:发送IP数据包的IP地址
    11. 目的IP地址:数据包到达目的地的IP地址

    IP协议的转发流程

    逐跳(hop-by-hop)

    路由表简介

    流程:

    • A通过网卡发出数据帧
    • 数据帧到达路由器,路由器取出前6字节
    • 路由器匹配MAC地址表,找到对应的网络接口
    • 路由器往该网络接口发送数据帧

    计算机或者路由器都拥有路由表

    IP协议的转发流程


    流程如下:

    • A发出目的地为C的IP数据报,查询路由表发现下一跳为E
    • A将数据报发送给E
    • E查询路由发现下一跳为F,将数据报发送给F
    • F查询路由表发现目的地C直接连接,将数据报发送给C

    结合数据链路层/网络层:

    • A发出目的地为C的IP数据报,查询路由表发现下一跳为E
    • A将IP数据报交给数据链层,并告知目的MAC地址是E
    • 数据链路层填充源MAC地址A目的MAC地址E
    • 数据链路层通过物理层将数据发送给E
    • E的数据链路层接收到数据帧,把帧数据交给网路层
    • E查询路由表,发现下一跳为F
    • E把数据报交个数据链路层,并告知目的MAC地址为F
    • E的数据链路层封装数据帧并发送
    • F的数据链路层接收到数据层,把帧数据交给网路层
    • F查询路由表,发现下一跳为C
    • F把数据报交给数据链路层,并告知目的地MAC地址为C
    • F的数据链路层封装数据帧并发送

    总结:

    • 数据帧的每一跳的MAC地址都在变化
    • IP数据报每一跳的IP地址始终不变

    ARP协议与RARP协议


    转发基本流程
    • A通过网卡发出数据帧
    • 数据帧到达路由器,路由器取出前6字节
    • 路由器匹配MAC地址表,找到对应的网络接口
    • 路由器往该网络接口发送数据帧

    问题:路由器不知道C的MAC地址?

    • E检查MAC地址表,发现没有C的信息
    • E将广播A的数据包到除A以外的端口
    • E将收到来自B、C的回应,并将MAC 地址记录

    A把IP数据包交给数据链路层处理 ,并且得知下一跳的MAC地址为E
    那么A是如何知道E的MAC地址呢?

    ARP(Addess resolute Protocol)地址解析协议


    将网络层的IP32位地址转换为数据链路层MAC48位地址
    ARP缓存表

    ARP缓存表有两种情况
    1. ARP缓存表缓存有IP地址和MAC地址的映射关系(如 转发基本流程)
    2. ARP缓存表没有缓存IP地址和MAC地址的映射关系(如 上述提到的问题)

    因此 ARP缓存表是ARP协议和RARP协议运行的关键, ARP缓存表缓存了IP地址到硬件地址之间的映射关系,ARP缓存表中的记录并不是永久有效的,有一定的期限.(cmd -> arp -a)

    ARP协议具体的报文信息

    注意:ARP是直接封装到数据链路层中的数据帧中的
    如图:


    RARP(Revese Address Resolute Rrotocol)逆地址解析协议

    图解:



    与ARP类似


    补充:在前面的跳转传递中,需先要查询ARP缓存表得知目的地的MAC地址

    IP地址的子网划分

    IP地址长度为32为位,常分成4个8位

    分类的IP地址

    主要是网络号、主机号总共是32位
    A类地址:网络号----8位、主机号----24位、首位是0
    B类地址:网络号----16位、主机号----16位、首位是10
    C类地址:网络地址----24位、主机号----8位、首位是110

    特殊主机号:

    • 主机号全0表示当前网络段,不可分配为特定主机
    • 主机号为全1表示广播地址,向当前网络段所有主机发消息
      如1.2.3.4、1.0.0.0 、1.255.255.255
      特殊的网络号:
    • A类地址网络段全0(00000000)表示特殊网络
    • A类地址网络段后7位全1(01111111:127)表示回环地址
    • B类地址网络段(10000000.00000000:128.0)是不可使用的
    • C类地址网络段(192.0.0)是不可使用的
      精确图解(对比上图)

    125.125.3.60: 前八位 01111101
    163.70.31.23:前八位10100011
    210.36.127.11:前八位11010010

    127.0.0.1,通常被称为本地回环地址( Loopback Address,不属于任何
    个有类别地址类。它代表设备的本地虚拟接口,所以默认被看作是永远
    不会宕掉的接口。在 Windows操作系统中也有相似的定义,所以通常在
    安装网卡前就可以ping通这个本地回环地址。一般都会用来检查本地网络
    协议、基本数据接口等是否正常的

    划分子网

    某公司拥有256名员工,每人配备一个计算机,请问该公司应该申请哪种网络段?
    答:应该选择A类地址,但是造成了很大的地址空间浪费
    因此新增子网号

    问题:子网号这么多有没有办法快速判断某个IP的网络号?
    答:通过子网掩码

    子网掩码

    • 子网掩码和|P地址一样,都是32位
    • 子网掩码由连续的1和连续的0组成
    • 某一个子网的子网掩码具备网络号位数个连续的1
      图解:


    子网掩码划分(看图解析)

    网络号:193.10.10.0



    无分类编址CIDR

    • CIDR中没有A、B、C类网络号、和子网划分的概念
    • CIDR将网络前缀相同的IP地址称为一个“CIDR地址块”

    主要是分为网络前缀(网络前缀是任意位数的)、主机号

    斜线记法

    • 193.10.10.129/25
      25:表示当前的网络号前缀为25位


    公司


    城市

    网络地址转换NAT技术

    • 网络地址转换NAT(Network Address Translation)
    • NAT技术用于多个主机通过一个公有IP访问互联网的私有网络中
    • NAT减缓了IP地址的损耗,但是增加了网络通信的复杂度

    首先我们先了解
    内网地址:

    • 内部机构使用
    • 避免与外网地址重复

    外网地址:

    • 全球范围使用
    • 全球公网唯一

    三类内网地址

    • 10.0.0.0 ~ 10.255.255.255 (支持万级数量级设备)
    • 172.16.0.0 ~ 172.31.255.255(支持百万级数量级设备)
    • 192.168.0.0 ~ 192.168.255.255(支持万数量级设备)

    对于公司:可以在外部使用外网IP,在内部使用内网地址;对于家庭:可以使用外网IP,在内部使用C类的内网地址

    图解:




    如果电脑(192.168.2.11)发送数据报文到手机(192.168.2.10),通过路由器(173.21.59.10)将地址替换成路由器的地址和端口号,手机接收到的实际上是路由器的IP地址. 也就是内网-外网相互转换

    ICMP协议解析

    • 网际控制报文协议(Internet Control Message Protocol)
    • 辅助IP协议传输,ICMP协议可以报告信息错误或者异常情况
    • 封装在IP数据包中,ICMP是IP是数据中的一部分

    图解:


    ICMP首部


    8位类型:主要是ICPM种类
    8位代码:不同的ICPM出现的错误代码
    16位校验和:对ICMP报文数据进行校验

    ICMP协议详解


    在进行传输的时候,会将在IP数据包中将ICMP中的字段值 1 写入

    报文类型

    • 差错报告报文
    • 询问报文


    ICMP的应用

    • Ping 应用
    • Traceroute应用
    1. Ping应用
      ping应用,会发出ICMP的询问报文,因此在输入Ping命令的时候,首先会组装IP协议的报文,数据包里面会组装一个ICMP的询问报文,并将其封装到IP协议中,在通过数据链路层发出.
      Ping回环地址127.0.0.1
      Ping网关地址
      Ping远端地址



      因为IP首部最小字节数为20,所有该数据报(在这里表示ICMP,因为无数据)为12,时间表示传输时间

    2. Traceroute应用
      Traceroute可以探测IP数据报在网络中做够的路径
      图解如下:


    网络层的路由概述

    (见上述IP转发流程)

    自治系统(Autonomous System)

    • 一个自治系统(AS)是处于一个管理机构下的网络设备群
    • AS内部网络自行管理,AS对外提供一个或多个出(入)口

    自治系统内部路由的协议称为:内部网关协议(RIP,OSPF)
    自治系统外部路由的协议称为:外部网关协议(BGP)
    例如:公司内部AS1学校内部AS2 通信

    内部网关路由协议之RIP协议

    距离矢量(DV)算法

    • 每一个节点使用两个向量DiSi
    • Di描述的是当前节点到别的节点的距离
    • Si描述的是当前节点到别的节点的下一节点
    • 每一个节点与相邻的节点交换向量Di和Si的信息
    • 每一个节点根据交换的信息更新自己的节点信息

    图解


    蒙蔽

    目的就是为了求dij的最小值

    DV图解


    通过观察发现距离矢量信息会有所差别
    原因是:
    A -> C -> B: A到B的距离可能是由A到C在到B的
    B -> C -> D -> A:同上

    RIP协议的过程

    • RIP(Route Infomation Protocol) 协议
    • RIP协议是使用DV算法的一种路由协议
    • RIP协议把网络的跳数(hop)作为DV算法的距离
    • RIP协议每隔30s交换一次路由信息
    • RIP协议认为跳数 > 15的路由则为不可达路由

    RIP协议的过程

    1. 路由器初始化路由信息(两个向量Di和Si)
    2. 对相邻路由器X发来的信息,对信息的内容进行修改(下一跳地址设置为X,所有距离加1)
      i. 检索本地路由,将信息中的新的路由插入到路由表里面
      ii. 检索本地路由,对于下一跳为X的,更新为修改后的信息
      iii. 检索本地路由,对比相同目的地距离,如果更新信息的距离更小,则更新本地路由()
    3. 如果3分钟没有收到相邻的路由信息,则把相邻路由设置为不可达(>15跳)

    图解

    i

    图1代表的是路由器到D的距离为2下一跳的为A, 收到图2新路由发到A点的距离为4下一跳为C,到B点的距离为2下一跳为C,图三(灰色)是图二距离加1后更新的信息,图四是将新的路由器(图二)中的路由表添加到图一中

    ii
    1. DV算法过程


      iii

    RIP缺点
    RIP协议:实现简单,开销很小
    RIP协议:限制了网络的规模
    RIP协议:"坏消息传递慢",更新收敛时间过长

    Dijkstra(迪杰斯特拉)算法

    • Dijkstra算法是著名的图算法
    • Dijkstra算法解决有权图从一个节点到其他节点的最短路径问题
    • "以起始点为中心,向外层层扩展"
    最短路径
    1. 初始化两个集合(S,U)(S为只有初始顶点A的集合,U为其他顶点集合
    2. 如果U不为空,对U集合顶点进行距离的排序,并取出距离A最近的一个顶点D
      i. 将顶点D的纳入S集合
      ii. 更新通过顶点D到达U集合所有点的距离(如果距离更小则更新,否则不更新
      iii. 重复2步骤
    3. 知道U集合为空,算法完成
      (网上查查资料明白道理就好/~)

    内部网关路由协议之OSPF协议

    链路状态(LS)协议

    • 消息描述该路由器相邻路由器的链路状态(距离、时延、带宽)

    特点:

    1. 向所有的路由器发送消息
    2. 消息描述该路由器与相邻路由器的链路状态
    3. 只有链路状态发生变化时,才发送更新信息

    OSPF协议的过程

    • OSPF(Open Shorttest Path First:开放最短路径优先)
    • OSPF的协议的核心是Dijkstra算法

    1. 向所有路由器发送消息
    获取网络中的所有信息 => "网络的完整拓扑"
    每个路由器都会运行Dijkstra算法,进而找到自己到达某个顶点的最短路径
    * 也称为"链路状态数据库"
    * "链路状态数据库"是全网一致的
    2.消息描述该路由器与相邻路由器的链路状态
    OSPF协议更加客观、更加先进(仔细理解理解~)
    3.只有链路状态发生变化时,才发送更新信息
    减少了数据的交换,更快收敛

    五种消息类型
    1. 问候消息(Hello)
    2. 链路状态数据库描述信息
    3. 链路状态请求信息
    4. 链路状态更新信息
    5. 链路状态确认消息

    图解:


    OSPF

    RIP和OSPF协议对比

    RIP VS OSPF

    外部网关路由协议之BGP协议

    • BGP(Border Gateway Protocol:边际网关协议)
    • BGP协议是运行在AS之间的一种协议
    • BGP协议能够找一套到达目的比较好的路由

    原由

    • 互联网规模很大
    • AS内部使用不同的路由协议


      BGP
    • AS之间需要考虑除网络特性以外的一些因素(政治、安全...)

    BGP发言人(speaker)

    • BGP并不关心内部网络拓扑
    • AS之间通过BGP发言人交流信息
    • BGP Speaker 可以认为配置策略


      BGP Speaker

    完结

    相关文章

      网友评论

        本文标题:计算机网络(二)之网络层篇

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