[计算机网络]网络层

[计算机网络]网络层

1. 概述

    因为网络层是整个互联网的核心,因此应当让网络层尽可能简单。网络层向上只提供简单灵活的、无连接的、尽最大努力交互的数据报服务。
    使用 IP 协议,可以把异构的物理网络连接起来,是的网络层看起来好像是一个统一的网络。
在这里插入图片描述
    与 IP 协议配套使用的还有三个协议:

  • 地址解析协议ARP(Address Resolution Protocol)
  • 网际控制报文协议ICMP(Internet Control Message Protocol)
  • 网际组管理协议IGMP(Internet Group Management Protocol)
2. IP数据报格式

在这里插入图片描述

  • 版本:有4(IPv4)和6(IPv6)两个值。
  • 首部长度:占4位,因此最大值为15。值为1表示的是1个32位字的长度,也就是4字节。因为固定部分长度为20字节,因此该值最小为5.如果可选字段的长度不是4字节的整数倍,就用尾部的填充部分来填充。
  • 区分服务:用来获得更好的服务,一般情况下不使用。
  • 总长度:包括首部长度和数据部分长度。
  • 生存时间:TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当TTL为0时就丢弃数据报。
  • 协议:指出携带的数据应该上交给哪个协议进行处理,例如ICMP、TCP、UDP等。
  • 首部检验和:因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。
  • 标识:在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。
  • 片偏移:和标识符一起,用于发生分片的情况。片偏移的单位为8字节。

在这里插入图片描述

3. IP地址编址方式

    IP地址的编制方式经历了三个历史阶段:

  • 分类
  • 子网划分
  • 无分类
3.1 分类

    由两部分组成,网络号和主机号,其中不同分类具有不同的网络号长度,并且是固定的。

IP地址 ::= {<网络号>,<主机号>}
在这里插入图片描述

概念特征网络范围默认掩码
A类地址第1个8位中的第1位始终为00-127.x.x.x255.0.0.0/8
B类地址第1个8位中的第1、2位始终为10128-191.x.x.x255.255.0.0/16
C类地址第1个8位中的第1、2、3位始终为110192-y.x.x.x255.255.255.0/24

D类 以1110开始 用于组播
E类 以11110开始 用于科研保留

范围上划分有些要注意的:
A类 从1.0.0.0 到126.255.255.255
B类 从128.0.0.0到191.255.255.255
C类 从192.0.0.0到223.255.255.255
其中127.x.x.x段地址空间是被保留的回环地址

3.2 子网划分

    通过在主机号字段中拿一部分作为子网号,把两级IP地址划分为三级IP地址。

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

    要使用子网,必须配置子网掩码,一个B类地址的默认子网掩码为255.255.0.0,如果B类地址的子网占两个比特,那么子网掩码 11111111 11111111 11000000 00000000,也就是 255.255.192.0
    注意,外部网络看不到子网的存在。

    根据IP地址和子网掩码计算网络地址:

  1. 将IP地址与子网掩码转换为二进制数
  2. 将二进制形式的IP地址与子网掩码做“与”运算
  3. 将得出的结果转化为十进制,便得到网络地址

例子:
IP地址:192.168.1.100
子网掩码:255.255.255.0
网络地址:192.168.1.0
主机号:100
192.168.1.100 AND 255.255.255.0,结果为 192.168.1.0,含义为:该IP地址属于192.168.1.0这个网络,其主机号为100,即这个网络中编号为10的主机。

3.3 无分类

    无分类编制CIDR消除了传统A类、B类和C类地址以及划分子网的概念,使用网络前缀和主机号来对IP地址进行编码,目前前缀的长度可以根据需要变化。

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

    CIDR的记法上采用在IP地址后面加上网络前缀长度的方法,例如128.14.35.7/20表示前20位为网络前缀。
    CIDR的地址掩码可以继续称为子网掩码,子网掩码首1长度为网络前缀的长度。
    一个CIDR地址块中有很多地址,一个CIDR表示的网络就可以表示原来的很多个网络,并且在路由表中只需要一个路由就可以代替原来的多个路由,减少了路由表项的数量。把这种通过使用网络前缀来减少路由表项的方式称为路由聚合,也称为构成超网。
    在路由表中的项目由“网络前缀”和“下一跳地址”组成,在查找时可能会得到不止一个匹配结果,应当采用最长前缀匹配来确定匹配哪一个。

4. 地址解析协议ARP

    网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,IP数据报的源地址和目的地址始终不变,而MAC地址随着链路的改变而改变。
在这里插入图片描述
    ARP实现由IP地址得到MAC地址。
在这里插入图片描述
    每个主机都有一个高速缓存,里面有本局域网上的各主机和路由器的IP地址到MAC地址的映射表。
    如果主机A知道主机B的IP地址,但是ARP高速缓存中没有该IP地址到MAC地址的映射,此时主机A通过广播的方式发送给ARP请求分组,主机B收到该请求后会发送ARP响应分组给主机A告知其MAC地址,随后主机A向其高速缓存中写入主机B的IP地址到MAC地址的映射。
在这里插入图片描述

5. 网际控制报文协议ICMP

    ICMP是为了更有效的转发IP数据报和提高交付成功的机会。它封装在IP数据报中,但是不属于高层协议。
在这里插入图片描述
    ICMP报文分为差错报告报文和询问报文。
在这里插入图片描述

5.1 Ping

    Ping是ICMP的一个重要应用,主要用来测试两台主机之间的连通性。
    Ping的原理是通过向目的主机发送ICMP Echo请求报文,目的主机收到之后会发送Echo回答报文。Ping会根据响应时间和成功响应的次数估算出数据包往返时间以及丢包率。

5.2 Tranceroute

    Traceroute是ICMP的另一个应用,用来跟踪一个分组从源头到终点的路径。
    Tranceroute发送的IP数据报封装的是无法交付的UDP用户数据报,并且目的主机发送终点不可达差错报告报文。

  • 源主机向目的主机发送一连串的IP数据报。第一个数据报P1的生存时间TTL设置为1,当P1到达路径上的第一个路由器R1时,R1收下它并把TTL减1,此时TTL等于0,R1就把P1丢弃,并向源主机发送一个ICMP时间超过差错报告报文;
  • 源主机接着发送第二个数据报P2,并把TTL设置为2。P2先到达R1,R1收下后把TTL减1再转发给R2,R2收下后也把TTL减1,由于此时TTL等于0,R2就丢弃P2,并向源主机发送一个ICMP时间超过差错报文;
  • 不断执行这样的步骤,直到最后一个数据报刚刚到达目的主机,主机不转发数据报,也不把TTL值减1。但是因为数据报封装的是无法交付的UDP,因此目的主机要向源主机发送ICMP终点不可达差错报告报文;
  • 之后源主机知道了到达目的主机所经过的路由器IP地址以及到达每个路由器的往返时间。
6. 虚拟专用网VPN

    由于IP地址的紧缺,一个机构能申请到的IP地址数往往远小于本机构所拥有的的主机数。并且一个机构并不需要把所有的主机接入到外部的互联网中,机构内的计算机可以使用仅在本机构有效的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

    VPN使用公用的互联网作为本机构各专用网之间的通信载体。专用指机构内的主机只与本机构内的其它主机通信,虚拟指好像是,而实际上并不是,它有经过公用的互联网。
    下图中,场所A和场所B的通信经过互联网,如果场所A的主机X要和另一个场所B的主机Y通信,IP数据报的源地址是10.1.0.1,目的地址是10.2.0.3。数据报先发送到与互联网相连的路由器R1,R1对内部数据进行加密,然后重新加上数据报的首部,源地址是路由器R1的全球地址125.1.2.3,目的地址是路由器R2的全球地址194.4.5.6。罗预期R2收到数据报后将数据报进行解密,恢复原来的数据报,此时目的地址为10.2.0.3,就交付给Y。
在这里插入图片描述

7. 网络地址转换NAT

    专用网内部的主机使用本地IP地址又想和互联网上的主机通信时,可以使用NAT来将本地IP转换为全球IP。
    在以前,NAT将本地IP和全球IP一一对应,这种方式下拥有n个全球IP地址的专用网最多只可以同时有n台主机接入互联网。为了更有效地利用全球IP地址,现在常用的NAT转换表把传输层的端口号也用上了,使得多个专用网内部的主机共用一个全球IP地址。使得端口号的NAT也叫做网络地址与端口转换NAPT。
在这里插入图片描述

8. 路由器的结构

    路由器从功能上可以划分为:路由选择和分组转发。
    分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口。
在这里插入图片描述

9. 路由器分组转发流程
  • 从数据报的首部提取目的主机的IP地址D,得到目的网络地址N。
  • 若N就是与此路由器直接相连的某个网络地址,则进行直接交付;
  • 若路由表中有目的地址为D的特定主机路由,则把数据报传送给表中所指明的下一跳路由器;
  • 若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器;
  • 如路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;
  • 报告转发分组出错。

在这里插入图片描述

10. 路由选择协议

    路由选择协议都是自适应的,能随着网络通信量和拓扑结构的变化而自适应地进行调整。
    互联网可以划分为许多较小的自治系统AS,一个AS可以使用一种和别的AS不同的路由选择协议。
    可以把路由选择协议划分为两大类:

  • 自治系统内部的路由选择:RIP和OSPF
  • 自治系统间的路由选择:BGP
10.1 内部网关协议RIP

    RIP是一种基于距离向量的路由选择协议。距离是指跳数,直接相连的路由器跳数为1,跳数最多为15,超过15表示不可达。
    RIP按固定的时间间隔仅和相邻路由器交换自己的路由表,经过若干次交换之后,所有路由器最终会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址。
    距离向量算法:

  • 对地址为X的相邻路由器发来的RIP报文,先修改报文中的所有项目,把下一跳字段中的地址改为X,并把所有的距离字段加1;
  • 对修改后的RIP报文中的每一个项目,进行以下步骤:
    • 若原来的路由表中没有目的网络N,则把该项目添加到路由表中;
    • 否则,
      • 若下一跳路由器地址为X,则把收到的项目替换原来路由表中的项目;
      • 否则,若收到的项目中的距离d小于路由表中的距离,则进行更新(例如原始路由表表项为Net2,5,P,新表项为Net2,4,X,则更新)
        • 否则什么也不做。
        • 若3分钟还没有收到相邻路由器的更新路由表,则把该相邻路由器标为不可达,即把距离设置为16。
              RIP协议实现简单,开销小。但是RIP能使用的最大距离为15,限制了网络的规模。并且当网络出现故障时,要经过比较长的实际才能将此消息传送到所有路由器。
10.2 内部网关协议OSPF

    开放最短路径优先OSPF,是为了克服RIP的缺点而开发出来的。
    开放表示OSPF不受某一厂家控制,而是公开发表的;最短拒绝优先表示使用了Dijkstra提出的最短路径算法SPF。
    OSPF具有以下特点:

  • 向本自治系统中的所有路由器发送信息,这种方法是洪泛法。
  • 发送的信息就是与相邻路由器的链路状态,链路状态包括与哪些路由器相连以及链路的度量,度量用费用、距离、时延、带宽等来表示。
  • 只有当链路状态发生变化时,路由器才会发送信息。

    所有路由器都具有全网的拓扑结构图,并且是一致的。相比于RIP,OSPF的更新过程收敛的很快。

10.3 外部网关协议BGP

    BGP(Border Gateway Protocol,边界网关协议)
    AS之间的路由选择很困难,主要是由于:

  • 互联网规模很大;
  • 各个AS内部使用不同的路由选择协议,无法准确定义路径的度量;
  • AS之间的路由选择必须考虑有关的策略,比如有些AS不愿意让其它AS经过。

    BGP只能寻找一条比较好的路由,而不是最佳路由。
    每个AS都必须配置BGP发言人,通过在两个相邻BGP发言人之间建立TCP连接来交换路由信息。
在这里插入图片描述
原文-CyC2018

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值