【学习笔记】计算机网络 第四章 网络层

以下内容为参考课件和《计算机网络》(第7版,谢希仁编著)的个人整理,若有错误欢迎指出

第四章 网络层

数据链路层完成了帧的转发(一跳hop),网络层需要实现包的转发(由路由完成),而且可能Multi-hop。网络层负责任意两端间的传输,但是先不管出错,而是追求best effect。

一、网络层提供的两种服务

网络层应该为传输层提供什么样的服务一直有争议,下面两种是当时的观点,目前主要是第二种

1、面向连接的服务——虚电路

双方在数据传输之前先由网络建立连接(逻辑连接)

2、无连接服务——数据报

发送数据不需要建立连接,每一个分组(packet)在网络中独立传送

请添加图片描述请添加图片描述

数据报并不管出错(由传输层处理),只提供检测。这使得路由可以硬软件都相对简单

二、网络协议IP

1、IP(Internet Protocol)简介

请添加图片描述

与 IP 协议配套使用的还有四个协议:

  • 地址解析协议ARP(Address Resolutio Protocol)

  • 逆地址解析协议RARP(Reverse Address Resolution Protocol)

    配套ARP使用的,目前已被淘汰

  • 网际控制报文协议ICMP (Internet Control Message Protocol)

  • 网际组管理协议IGMP(Internet Group Management Protocol)

在上图中的上下关系是因为IP要使用ARP,而ICMP、IGMP要使用IP

2、分类的IP地址

(1)IP地址定义

是分配给主机或路由器的标识符,目前使用的IPv4为32位IP地址,由ICANN分配。

(2)编址方法的三个发展阶段

  • 分类的IP地址
  • 子网划分
  • 构成超网

(3)分类的IP地址

IP地址=网络号+主机号,不同类别是网络号、主机号长度不同
请添加图片描述

  • A、B、C类地址的网络号字段分别是1-3字节,最前面的类别位分别是1-3位。

  • 表示方法:点分十进制,即每8位用十进制表示

  • 全0表示本网络,全1表示广播
    请添加图片描述

3、IP地址与硬件地址

IP地址是网络层及其上层使用的,是逻辑地址;物理地址是数据链路层及物理层使用

请添加图片描述

4、ARP与RARP协议

解决的是IP地址和物理地址相互转换

(1)ARP:IP转物理

  • 高速缓存(ARP cache)

    存有本地局域网上各主机和路由器的IP与硬件地址的映射表

  • 具体流程

    • 先查缓存,若无进行下一步

    • 发送广播帧(含本机地址+待求解的IP),寻求IP地址对应的物理地址;对应主机收到后发送应答(非广播帧)

      这可以解释为什么会有广播风暴

  • 注意:ARP解决的是同一局域网内的

    因为若目的主机不在同一局域网,需要路由转发,因此不需要知道目的主机的物理地址,只需要知道路由器的物理地址

(2)RARP:物理转IP

5、IP数据报格式

分为头部和数据两部分。下面主要讲解头部 header

(1)头部的总体结构

20字节的固定字段+0到多个可选字段

下面的图表示各字段,因为总长度较大,故一般表示为每32bit一行,从上往下排开

请添加图片描述
(2)各字段介绍

  • Version字段:4bit,IP协议的版本,目前的IP协议版本号为4 (即 IPv4)

  • IHL:4bit,IP包头长度,最小5,最大15,单位为word(32bit)。因此 IP包头最长60 字节

  • Type of service:1字节,服务类型,目前很多路由器忽略该字段

  • Total Length:2字节,IP包总长度(含头部和数据),单位为字节。因此IP包的最大长度为65535( 2 16 2^{16} 216)字节

因为数据较多的包要分片传输(数据链路层帧长度限制),因此需要有以下相关的四个字段。实际应用中一般会限制包长度尽量减少分片。

  • Identification:2字节,标识,,表示这些片是一个包的

  • DF:1bit,DF=0表示允许分片

  • MF:1bit,MF=1表示后面还有分片,0表示这是最后一个分片

  • Fragment offset:13bit,片偏移,以8字节为单位

  • Time to Live(TTL):1字节,生存时间,指IP包在网络中可通过的路由器个数的最大值

    • 相当于一个倒计时,每经过一个路由器(one hop)就-1,至0就丢弃并向源主机发送告警包
    • 防止有包在网络中由于错误而无休止游荡
    • 最大值为255,由源主机设置
  • Protocol:8bit,协议字段,表示上层协议类型(如TCP、UTP)

  • Header checksum:2字节,包头校验和

    • 对IP包头每16位求反(校验和这段置为全0),循环相加(进位加在末尾),和再求反
    • 检验时同样操作,结果为0就保留
    • 因为TTL一直在变,所以实际上校验和每一跳都要变
  • Source address:4字节,源IP地址

  • Destination address:4字节,目的IP地址

  • 选项字段:以4字节为单位,最长40字节,实际网路中很少使用

三、划分子网和构造超网

1、划分子网

(1)分类IP地址的缺点

每一类的主机数很多,都放一个网效率太差;(随着规模变大)如果每个物理网络分配一个网络号会使路由表变得很大

(2)解决方法

形成三级IP地址,增加子网字段(就是主机号分出一部分表示子网字段)比如:
请添加图片描述

2、子网掩码

方便算出子网划分信息(就是包括子网在内的网络号),会使用子网掩码

子网掩码就是表示主机号的全0,其他全1,然后与目的地址按位与就能算出所属的网络号。

3、使用子网掩码的分组转发过程
  • 路由器路由表项包含目的网络地址、子网掩码、下一跳地址

    路由表如何建立:见 五、路由算法及协议

  • 路由器的流程:

    • 收到的分组首部提取目的IP地址D
    • 与该路由器直接相连网络的子网掩码按位与,若与相应的网络地址匹配,则交付该网络,否则进行下一步
    • 路由表有目的地址为D的特定主机路由,则将分组传送给指明的下一跳路由器,否则执行下一步
    • D与路由表的子网掩码按位与,看是否与相应的网络地址匹配,则交付给指明的下一跳路由器,否则进行下一步
    • 发送给默认路由器(目的网络、掩码为全0),若失败则报告转发分组出错

    主机发包时会先根据自身判断目的地址是否在本地网络(目的地址 & 子网掩码 == 主机地址 & 子网掩码),若不是才发给网关。

    若是,则进行子网内直接交付

    查看ARP缓存看是否有对应的MAC地址,若有就将IP数据包封装成帧,发送;否则先在子网内广播发送ARP请求。

4、无分类编址CIDR
  • 使用各种长度的网络前缀来代替分类地址中的网络号和子网号。网络前缀相同的连续的IP地址组成CIDR地址块

  • IP:网络前缀+主机号

  • 斜杠记法:IP地址后加一个斜杠,后面是网络前缀所占的位数,如128.14.35.7/20

  • 子网掩码:/x就是前面是x个1

  • 意义:路由聚合

    • 原本路由表中的项可能很庞大
    • 一个CIDR地址块可以表示多个地址(对应原来的多个子网),因此在路由表项中一个项可以表示若干个传统分类地址的路由,从而减少了很多表项
    • 路由聚合也称为构成超网
  • 网络前缀匹配(路由表查询)时遵循最长匹配原则

    前缀越长地址块越小,就越具体

四、网际控制报文协议ICMP

前面主要讲传递IP数据包,但是也需要控制信息

1、简介

ICMP 即Internet Control Message Protocol,主要用于报告出错和测试等控制信息。此类报文的类型protocol字段为1。

2、9种ICMP报文
  • 差错报告
    • Destination unreachable:终点不可达
    • Source quench:源点抑制,拥塞时让源主机放慢发送速度
    • Time exceeded:超时,即路由器收到TTL字段为0的报文时向源主机发送
    • Parameter problem:参数问题,即头部有非法字段
    • Redirect:重定向,向主机发送此报告知路由改变,主机下次发送数据报给另外的路由器
  • 询问报文
    • Echo request/reply:回声探测,测试网络连通性
    • Timestamp request/reply:请求时间,可用于时间同步
3、常用ICMP协议
  • ping

    • 测试两个主机间的连通性
    • 采用Echo request/reply报文
  • traceroute/tracert

    • 测试到另一台主机所经过的路由信息
    • 采用超时报告报文:逐个发送UDP报文,TTL分别设置为1,2,3.……直到到达目的主机。路径上的路由器会返回超时报文,从而得知路由器IP

五、路由算法及协议

路由协议就是用来生成路由信息(生成路由表)的,但不是转发分组的。路由算法时路由协议的基础和核心

1、分类
  • 静态路由

    • 人为设定不再改变
  • 动态路由

    • 自适应网络变化

    • 两类典型算法:距离向量路由算法、链路状态路由算法

在自治系统背景下,Internet路由协议可以分为内部网关协议(自治系统内部)和外部网关协议(自治系统之间)两类。

2、距离向量路由

距离向量路由也称为Bellman-Ford路由算法和Ford-Fulkerson算法,最初用于ARPANET,被RIP协议采用

(1)基本思想

  • 每个路由器维护一张表,记录到每个目的地已知的最佳距离和路线(下一跳)
  • 周期性向相邻路由器发送距离表,同时也接受邻居节点发送来的距离表
  • 更新自己的路由表:若邻居x距离i为 x i x_i xi,自己到x的距离为m,更新到i的距离为 m i n ( x i + m , 原 始 值 ) min(x_i+m, 原始值) min(xi+m,)

(2)缺陷

对好消息反应迅速,对坏消息反应迟钝(考虑shutdown,但是因为之前有的是可达的,会误发很多信息,造成的无穷计算,直至都超过阈值被认为不可达)

3、RIP(Routing Information Protocol)协议
  • 基于距离向量路由协议

  • 简单,适用于小规模网络

  • 距离定义:路由器的跳数,直接连接为0,最长允许15意味着超过15的表示无穷大

  • 要点

    仅和相邻路由交换全部信息,按固定时间间隔交换

  • RIP报文格式

  • 收到相邻路由器X的RIP报文后的处理

    • 修改RIP报文中的所有项目:下一跳都改为X,距离+1。因为报文原意为X到目标网络N的距离为d,那么本路由到目标网络的距离为d+1,是经过X去的。
    • 对修改后的报文的每一个项目:
      • 若路由表没有目标网络N,则加上
      • 若已有,则查看原路由中到N的表项:
        • 若(原路由的)下一跳字段是X,则用收到的项目替换原路由表中的项目(获取最新状态)
        • 若不是(就是都是到达网络N,但下一跳路由不是X),则若收到的项目距离更短,就更新
    • 若3分钟还没收到相邻路由的更新路由表,则标记为不可达(防止无穷计算)
  • 优点:简单、开销小

  • 缺点:网络出现故障,要较长时间才能把信息送到所有路由器(距离向量路由固有缺点);支持网络规模有限,最大为15;交换的是全部信息,开销大

4、链路状态路由

(1)基本思想

  • 发现邻居并学习其网络地址(发送HELLO包)
  • 测量到各邻居节点的延迟或开销
  • 构造分组,包含所有刚知道的信息,并把分组发送给其他所有路由器
  • 计算到每一个其他路由的最短路径

(2)每个路由器都建立一个链路状态数据库——全网的拓扑结构图,一句dijkstra算法计算最佳路径

5、OSPF(Open Shortest Path First)协议

(1)属于链路状态路由协议

(2)优点

  • 收敛速度快

    链路状态发生变化时,以洪泛(flooding)方式(向除输入链路外的所有链路发送)告知所有网络节点。因此只需要在变化时更新路由表

  • 适用于较大规模的网络

(3)为扩大规模,OSPF将一个自治系统再划分为若干个区域,将洪泛局限在一个区域,而一个区域内的路由器也仅知道本区域的完整网络拓扑

(4)OSPF分组结构

(不用UDP,直接用IP数据报)
5种类型的分组:

  • 问候分组(Hello):发现和维持邻站的可达性
  • 数据库描述(Database Description)分组:给出自己数据库的所有链路状态的摘要信息
  • 链路状态请求(Link State Request)分组:请求部分链路状态的详细信息
  • 链路更新状态(Link State Update)分组:洪泛,仅有一个路由器链路状态发生变化时使用
  • 链路状态确认(Link State Acknowledgment)分组:对链路更新分组的确认

后四种都是用于数据库同步的

为了减少发送所有信息的代价,一般是让数据库用数据库描述分组与相邻路由交换信息,请求分组去获取缺少的链路状态信息。

前面说的时自治系统内的(即内部网关路由协议)

6、外部网关路由协议BGP(Border Gateway Protocol)

(1)规模大,而且不同的路由选择需考虑不同的策略(比如有的考虑距离,有的涉及保密),因此难以找到最佳路由,BGP只是找到一条可达且就好的无环路由

(2)BGP发言人(speaker)

  • 每个AS(自治系统)选择至少一个路由器作为 speaker,两个speaker通过共享网络连接
  • speaker一般是边界路由器,也可以不是
  • speaker之间先建立TCP连接,交换BGP报文,建立BGP会话,进而交换路由信息

(3)路径向量路由选择协议

  • BGP采用的时路径向量路由选择协议,与上文提到的两种都不同
  • 路径向量是网络的可达性信息,即到达某个网络需要经过哪些AS
  • speaker交换可达性信息后,根据所采取的策略选择到达各AS较好的路由

(4)BGP-4的四种报文

  • OPEN报文:用来与相邻的另一个BGP发言人建立关系

  • UPDATE报文:用来发送某一路由的信息,以及列出要撤消的多条路由

  • KEEPALIVE报文:用来确认打开报文和周期性地证实邻站关系

  • NOTIFICATION报文:用来发送检测到的差错

流程:

  • BGP发言人通过OPEN报文与另一发言人建立会话,对方如同意则回应KEEPALIVE报文

  • 双方周期性交换KEEPALIVE报文,以确认会话未中断

  • 路由信息变化时,发送UPDATE报文

(5)协议特点

  • 交换路由信息的结点数量级与自治系统个数相当,大大少于这些自治系统中的网络数

  • 每个自治系统中BGP发言人(或边界路由器)的数目很少,使得自治系统间的路由选择不致过分复杂

  • BGP支持CIDR,因此BGP路由表包括目的网络前缀、下一跳路由器,以及到达该目的网络要经过的各个自治系统序列

  • 在BGP刚运行时,邻站交换完整的BGP路由表,以后只需要在发生变化时更新变动部分,有利于节省网络带宽和减少处理开销

7、路由器

(1)定义

具有多个输入/输出端口的专用计算机,其任务是转发分组。

(2)组成

  • 路由选择部分:按照路由选择协议,构建路由表

  • 分组转发部分:

    • 输入输出端口

      why需要排队:输入输出端口速率不匹配

      缓冲区溢出会丢包,而网络层不处理这个(传输层处理)

    • 交换结构:根据转发表进行快速转发(需要更改TTL),转发表从路由表得到
      (3)设计关键之一:高速转发- 影响因素:输入输出端口的处理性能、交换机构的性能

  • 线速(line speed):分组的处理速率能够达到线路上分组的传输速率,即线速=传输速率/分组长度

  • 衡量路由器性能的指标:pps(packet per second)

8、网络的控制平面与数据平面

(1)控制平面:生成路由表和转发表

(2)数据平面:进行分组的快速转发

传统网络中路由器集成了两者,缺少灵活性

(3)软件定义网络(SDN)

  • 控制平面(控制器)与数据平面(路由器)分离

  • 如果转发表中找不到匹配表项,就询问控制器,控制器接收各路由器的请求、计算转发表项(策略可编程)返回给路由器

  • 优点:可以灵活快速控制路由/转发策略,适用于路由策略频繁的网络(如云数据中心)

六、IP组播

1、基本概念
  • 组播,又称多播,实现一点对多点的数据传输

    如果使用单播,那么1对n就要传输n条数据流,但这n条数据流是一样的。因此组播就是希望只需传1条数据流

2、组播地址
  • D类IP地址:224.0.0.0—239.255.255.255

  • 组播数据报:IP包包头目的地址为D类地址,协议类型为2(IGMP协议)

  • 组播地址就是特定组播的标识符,主机通过加入组播组来接收组播数据

3、两类组播
  • 局域网中的硬件组播

    将MAC地址中的特定地址段作为组播地址,并于IP组播地址形成对应关系

  • Internet中的组播

    • 组播路由器
    • 主机通过IGMP协议与组播路由器通信,加入/退出某个组播组
    • 组播路由器之间通过组播路由协议实现组播数据报的传输

七、地址转换NAT

1、专用地址(保留地址)

只用于机构的内部,Internet中的路由器不转发目的地址为专用地址的包。根据RFC1918规定,有下列专用地址:

  • 10.0.0.0 ~ 10.255.255.255 (CIDR记法: 10/8)
  • 172.16.0.0 ~ 172.31.255.255 (CIDR记法: 172.16/12)
  • 192.168.0.0 ~ 192.168.255.255 (CIDR记法: 192.168/16)

优点:减少IP地址空间的占用;提高安全性

2、地址转换NAT
  • 当内部网络使用专用地址时,与Internet的通信需要通过NAT(Network Address Translation)

  • 发向外网需要换成全球IP地址,并且要记录什么时候内网的哪台主机向外网发送了信息

  • 接收外网数据报时,根据TCP/UDP端口号转回内网地址

  • 减少全球IP占用;安全(外网不知道具体内网地址)

3、虚拟专用网VPN

多个企业/机构的内部网络之间互连的实现方法

涉及隧道、加密等技术

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值