• 保研计网复习笔记:IP层


    网络层

    网络层的通信:主机到主机

    1. 逻辑寻址

    IP address:TCP/IP中的逻辑地址

    IPv4——32位, 2 32 2^{32} 232个地址

    IPv6——128位, 2 128 2^{128} 2128个地址

    1.1 IPv4地址

    IPv4地址是唯一的。唯一指的是每一个地址定义了在因特网上仅有一个设备。因特网上的设备永远不会有同样的地址。

    1.1.1 地址空间

    地址空间指的是指该协议能用的地址的总个数。

    IPv4能用的地址的总个数为 2 32 2^{32} 232

    1.1.2 表示法

    点分十进制表示法,每个点分数的范围为0~255

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h51hCbf2-1664536049280)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/46fd6e97f59331f9edbb89dd229bd3f7-image-20220823161415543-dbb12c.png)]

    1.1.3 分类寻址

    分类寻址中,地址空间被分为A,B,C,D和E五类

    当一个地址用二进制或者点分十进制表示时,可以由开头前几位求出地址的类型:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2lTzER7l-1664536049281)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/222729a3b36879f5946345ead471684e-image-20220823161709927-1ceb56.png)]

    注意,D类和E类是没有主机号的。

    1.1.3.1 类和块
    (1)A类地址

    为那些具有大量的主机或者路由器的大型组织机构设计

    • IP:={,}
    • 网络号: 2 7 − 2 = 126 2^7-2=126 272=126
      • 网络号字段全为0的IP地址为保留地址,意为本网络
      • 网络号为127(01111111)保留为本地软件环回测试(loopback test)本主机进程之间的通信用
    • 主机号: 2 24 − 2 2^{24}-2 2242
      • 全0的主机号表示是“本主机”连接到的单个网络地址
      • 全1主机号字段表示的是该网络上的所有主机
    • A类地址占所有的地址的50%
    (2)B类地址

    为中型机构设计

    • IP:={,}
    • 网络号: 2 14 − 1 2^{14}-1 2141
      • 网络号全0的128.0.0.0不指派,B类的最小网络地址是128.1.0.0
    • 主机号: 2 16 − 2 2^{16}-2 2162
      • 去除全0和全1的主机号
    • B类地址空间占整个IP空间的25%
    (3)C类地址

    为小型机构设计

    • IP:={,}
    • 网络号: 2 21 − 1 2^{21}-1 2211
      • 全0的不予指派
    • 主机号: 2 8 − 2 = 254 2^8-2=254 282=254
      • 扣除全0和全1的主机号
    • C类地址占整个IP空间的12.5%
    (4)D类地址

    多播可发送一个消息给同一多播组中的一组成员设备。

    两种多播

    (5)E类地址

    为将来使用而保留

    image-20220104111053015
    1.1.3.2 掩码

    A类,B类,C类的掩码如下:

    image-20220104111602920

    以/n的形式表示掩码,在classful Addressing中n是8,16和24.这种标记法称为Classless Interdomain Routing(无类域间路由选择 CIDR)

    D类和E类没有掩码.

    1.1.3.3 私有网络

    在IP地址空间中,保留了几个用于私有网络的地址。私有网络常用于公司,组织和个人网络,他们没有置于因特网中

    • A类:10.0.0.0~10.255.255.255
    • B类:172.16.0.0 ~ 172.31.255.255
    • C类:192.168.0.0~192.168.255.255
    1.1.3.4 子网化

    划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。

    主机号借用若干个位作为子网号subnet-id,而主机号Host-id也就相应减少了若干个位
    I P : : = { < n e t − i d > , < s u b n e t − i d > , < h o s t − i d > } IP ::= \{,,\} IP::={<netid>,<subnetid>,<hostid>}

    • 凡是从其他网络发送给本单位某个主机的IP数据报,仍然是根据 IP 数据报的目的网络号net-id,先找到连接在本单位网络上的路由器。
    • 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。
    • 最后就将 IP 数据报直接交付目的主机。

    image-20220823163535215

    当没有划分子网时,IP地址是两级结构;

    划分子网后IP地址变成了三级结构

    划分子网只是把IP地址的主机号host-id这部分再进行划分,而不改变IP地址原来的网络号net-id

    从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。

    • 使用子网掩码可以找出IP地址中的子网部分

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jrXX0L49-1664536049283)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/0cfbe50828d9312024c56027ffef2653-image-20220823164327561-df5e13.png)]

    1.1.3.5 子网掩码和网关的作用
    image-20220104153617484

    两台计算机通信的过程:

    1.判断自己与对方是否在同一网段

    • 自己的IP地址掩码进行AND运算得到自己所在的网段
    • 对方的IP自己的网段掩码进行AND
    • 比较二者是否相同,不相同转2,相同转3

    2.不相同,二者不在同一网段。封装帧时以网关的MAC地址作为目的MAC地址,交换机会把帧交给路由器接口

    3.相同,二者在同一网段。封装帧时直接使用目标主机IP的MAC地址作为目的MAC地址,直接将帧发给目标地址

    EXAMPLE:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HvdlO5hW-1664536049284)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/722b24b2792ecb5edcd0401d9e3d47d4-image-20220823164501994-2437c0.png)]

    (a)A和B可以互通

    (b)A可以发给B,但是B无法发给A

    1.1.4 无类寻址

    无类编址仍提供了地址块

    网络前缀来替代网络号和子网号

    三级编址 -----> 两级编址

    1.1.4.1 地址块

    在无类寻址中,当一个小的或者大的实体需要连接因特网时,给他分配一个合适的地址块。

    块的大小(地址的个数)按实体大小规模与性质来决定。

    Restrictions:

    • 块中的地址必须是一个接着一个连续的
    • 一个块中的地址的个数是2的整数次幂(1,2,4,8…)
    • 块的起始地址必须能被地址的个数整除
    1.1.4.2 CIDR

    CIDR的特点:

    • CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。

    • CIDR使用各种长度的**“网络前缀” (network-prefix)**来代替分类地址中的网络号和子网号。
      I P : : = { < n e t v o r k − p r e f i x > , < h o s t − i d > } IP ::= \{,\} IP::={<netvorkprefix>,<hostid>}

    • IP地址从三级地址又回到了二级地址

    CIDR把网络前缀都相同的连续IP地址组成“CIDR地址块”

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UuK734iX-1664536049285)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/346b8bdaeb4901307868d7369d2e8361-image-20220823165041373-f35d46.png)]

    1.1.5 NAT路由转换

    背景:家庭用户和小型商业公司的需求增加,IP地址短缺

    NAT:使用户在内部拥有大量的地址,在外部拥有少量的地址。

    • Address for private networks专用地址:组织内部唯一,全球范围内不唯一。使用时不必向因特网管理机构申请
    • global address全球地址:全球唯一IP地址,使用必须向因特网管理机构申请

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SGkDY0qR-1664536049285)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/9164e7588fd1d9ed4d6a7ba2ed9c7a90-image-20220823165212300-4d6c57.png)]

    路由器将一个专用网络与全局因特网相连的路由器有两个地址:

    • private address:172.18.3.30
    • global address:200.24.5.8
    1.1.5.1 地址转换

    所有外发的分组都通过NAT路由器发送出来,该路由器用全球NAT地址来替代分组中的源地址。

    所有的输入也要通过NAT路由器,该路由器用相应的专用地址来代替分组中的目的地址。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GAh2Ne3Y-1664536049286)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/bd4bf69d6f6b6354f8d4cfaac258b8c5-image-20220823165252755-947865.png)]

    1.1.5.2 转换表

    如何知道来自因特网的分组的目的地址?每个专用的IP地址属于某个特定的主机,NAT路由器有一个转换表。

    (1)使用一个IP地址

    NAT只有一个external address

    实现私有地址和全球公有地址的一对一映射,公有地址分配给唯一且固定的内网主机。

    转换表有两列:

    Private address & External address

    image-20220104214144138

    (2)Using a pool of IP Address

    NAT有多个地址。

    当NAT路由器具有n个全球IP地址时,专用网内最多可以同时有n个主机接入到因特网。NAT路由器IP地址数量有限时,专用网内较多数量的主机可轮流使用NAT路由器的全球IP地址。

    (3)Using both IP address and Port Numbers

    同时使用IP地址+端口号

    为了更有效地利用NAT路由器上的全球IP地址,常用的NAT转换表把传输层端口号也利用上。

    使多个拥有本地地址的主机,共用一个NAT路由器上的全球IP地址,因而可以同时和因特网上的不同主机进行通信。

    1.1.5.3 NAT的类型
    • 静态NAT:实现了私有地址和全球公有地址的一对一映射,一个公有IP只会分配给唯一且固定的内网主机

    • 动态NAT:

      将内部网络的私有IP地址转换为公有IP地址时,IP地址对是不确定的、随机的,所有被授权访问Internet的私有IP地址可随机转换为任何指定的公有IP地址。

      当ISP提供的共有IP少于网络内部计算机数量

    • 网络地址端口转换PAT(Port address Translation):把内部地址映射到外部网络的一个IP地址的不同端口上。PAT与动态地址NAT不同,它将内部连接全部映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的端口号。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y7QFQ7z9-1664536049287)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/1237383701d97e93b3f59f0879410d5c-image-20220823165637707-cc84c5.png)]

    PAT NOTE:

    • PAT把专用网内不同的源IP地址,都转换为同样的全球IP地址

    • 对源主机所采用的TCP端口号(无论是否相同)转换为不同的新的端口号

    • 从层次的角度看,PAT的机制有些特殊。

      • 普通路由器在转发IP数据报时,源IP地址或目的IP地址都是不改变的,但NAT路由器在转发IP数据报时,一定要更换其IP地址(转换源地址或目的地址)。
      • 普通路由器在转发分组时工作在网络层,但PAT路由器要查看和转换运输层的端口号,属于运输层的范畴。

    PAT路由器工作在传输层!

    1.2 IPv6地址

    1.2.1 地址结构

    128位,十六进制冒号表示法

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FIZioXix-1664536049293)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/1312b888d6fe701fd18dd24edb2c5725-image-20220823170422421-fe16e4.png)]

    缩短:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v7lpzfMx-1664536049294)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/058feb8034a8d849a573f8d06bf57fdf-image-20220823170443905-739e48.png)]

    1.2.2 地址空间

    2 128 2^{128} 2128个地址,划分为多个类,可变长类型前缀

    基于提供者的单播地址前缀:

    定义一个单独的计算机,发送到单播地址的分组必须传递到这个指定的计算机。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hr1nitse-1664536049294)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220104220733150.png)]

    多播地址:

    定义的是一组主机,而非一个主机。报文会发给每一个成员

    任播地址:

    发送给改组的任意一个成员

    2. IP协议

    { 当前: I P v 4 将来主流: I P v 6

    {IPv4IPv6" role="presentation">{IPv4IPv6
    {当前:IPv4将来主流:IPv6

    2.1 网络工作

    image-20220104221459639

    由A发送数据报到D,仅仅数据链路层和物理层,无法帮助路由器做出从哪个端口转发出去的选择。

    需要设计网络层,IP地址进行路由选择。

    2.1.1 网络层的必要性

    网络层不仅负责主机间的传递,而且还负责通过路由器或者交换机对分组进行路由选择

    • 将来自传输层的输入数据生成为一个分组,分组的头部包含源和目的逻辑地址及其他信息
    • 网络层负责检验路由表,进行路由选择
    • 分组太大时需要分段
    2.1.2 数据报网络

    网络层中的交换是通过Packet Switching数据报交换的方式实现的。

    2.1.3 无连接服务

    p a c k e t   s w i t c h i n g { 面向连接的服务connection oriented service 无连接的服务connectionless service packet\ switching

    {connection oriented serviceconnectionless service" role="presentation">{connection oriented serviceconnectionless service
    packet switching{面向连接的服务connection oriented service无连接的服务connectionless service

    • connection oriented service

    源端在发送一个分组之前首先与目的端建立一个连接,建立连接后,分组可以按照顺序依次从相同的源端发送到相同的目的端

    分组逻辑上连接在一起。

    • connectionless service

    无连接是指交换机路由器不保存有关连接状态的信息,不需要建立连接,也不需要拆除连接。

    网络层协议独立地对待每个分组,而且每个分组与其他的分组没有任何关系。

    分组可能不会沿着同样的路径到达目的地

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CsiojHtN-1664536049295)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/29b51509eb66268018368d4d828c1d10-image-20220823171253857-7c76dd.png)]

    2.2 IPv4

    Internet Protocol version4 网际协议第四版是TCP/IP协议使用的传输机制。

    特点:

    • IPv4是一种不可靠的无连接的数据报协议,它尽力传递(Best-effort delivery)数据报,但是不提供差错控制或流量控制(除首部的检验和之外),因此不保证可靠性。
    • 当可靠性很重要时,IPv4需要和一个可靠协议TCP配合起来使用

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dcIxO3rS-1664536049295)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/1cb608e63c3753de642dd50fb759d3df-image-20220823172411830-e76053.png)]

    2.2.1 数据报

    数据报 20 − 65536 b y t e s { 头部 H e a d e r : 20 − 60 b y t e s { 固定首部 : 20 b y t e s 选项 : 40 b y t e s 数据 D a t a 数据报20-65536bytes

    \begin{cases}头部Header:20-60bytes\begin{cases}固定首部:20bytes\\选项:40bytes\end{cases}" role="presentation">\begin{cases}头部Header:20-60bytes\begin{cases}固定首部:20bytes\\选项:40bytes\end{cases}
    \\数据Data\end{cases} 数据报2065536bytes 头部Header2060bytes{固定首部:20bytes选项:40bytes数据Data

    image-20220823172642146

    2.2.1.1 字段说明
    • VERSION:IP协议版本,现为IPv4,后将被IPv6取代

    • HLEN:头部长度,占4bit,表示20~60bytes——单位是4byte

      • HLEN = 字面值 × 4byte
      • 没有选项时,头部长度为20bytes,则 H L E N m i n = 20 4 = 5 HLEN_{min} = \frac{20}{4}=5 HLENmin=420=5,即最小是:0101
      • 当选项长度为最大值时,头部长度为60bytes,则 H L E N m i n = 60 4 = 15 HLEN_{min} = \frac{60}{4}=15 HLENmin=460=15,即最大是:1111
    • Service:有服务类型Service type差分服务Differentiated Service两种解释,占8bit

      • Service Type
      image-20220104230642801

      当做服务类型解释时,前三位为优先位Precedence,后四位为服务类型TOS位

      a. Precedence

      Precedence的3bit值从000到111,共8个优先级,当出现了拥塞等问题时,优先级较低的数据报将被丢弃。

      IPv4中未使用优先级字段

      b. TOS位

      image-20220104230753646 image-20220105094813314

      • Differentiated Service

        前6位为码点codepoints,后2位不用。

      image-20220104230905890

    c o d e p o i n t 的两种使用方法 { 当码点字段最右边 3 位都是 0 时:最左边 3 位与服务类型中的优先级相同。 最右边三位不全为 0 ,则六位含义为 64 种服务类型 { 第一类: I E T F 分配 32 种 第二类:本地机构 16 种 第三类:实验目的 16 种 codepoint的两种使用方法

    \begin{cases} 当码点字段最右边3位都是0时:最左边3位与服务类型中的优先级相同。\\最右边三位不全为0,则六位含义为64种服务类型\begin{cases}第一类:IETF分配32种\\第二类:本地机构16种\\第三类:实验目的16种\end{cases}" role="presentation">\begin{cases} 当码点字段最右边3位都是0时:最左边3位与服务类型中的优先级相同。\\最右边三位不全为0,则六位含义为64种服务类型\begin{cases}第一类:IETF分配32种\\第二类:本地机构16种\\第三类:实验目的16种\end{cases}
    \end{cases} codepoint的两种使用方法 当码点字段最右边3位都是0时:最左边3位与服务类型中的优先级相同。最右边三位不全为0,则六位含义为64种服务类型 第一类:IETF分配32第二类:本地机构16第三类:实验目的16

    Total Length

    总长度 = 数据长度 + 首部长度 = 总长度 + HLEN * 4

    某些网络不允许65536bytes长度的数据报,则需要进行分段。总长度不得超过MTU。

    • IP数据报在以太网中

    【标准以太网允许的最小报文长度为64bytes,数据部分最小为64 - 18 bytes = 46 bytes

    【标准以太网允许的最大报文长度为1518bytes,数据部分最大为1518-18bytes = 1500 bytes
    数据长度 { 最小: 46 b y t e s 最大: 1500 b y t e s 数据长度

    {46bytes1500bytes" role="presentation">{46bytes1500bytes
    数据长度{最小:46bytes最大:1500bytes
    所以当IP数据报封装在标准以太网的帧中,当长度不足46Bytes时需要进行位数填充。

    超过1500bytes时,需要进行分段。

    image-20220105101238657
    • identification:16bits

      计数器,用于产生数据报的标识,在分段中使用

    • flag :标志,后两位有效

    • Fragmentation offset:片偏移 13bit

    该片在原片中的位置,占13bits,以8byte为偏移单位

    • Time to live:生存时间,占8bit

      标识数据报可经过路由器的最大值。

      原因:若路由表故障,那么报文可能在两个或者更多的路由器之间传输很长的时间。
      含义 { 原:维护时间戳,统一时间,比较复杂 现:路由器数,约定为任意两主机之间的路由器个数的 2 倍 含义

      {2" role="presentation">{2
      含义{原:维护时间戳,统一时间,比较复杂现:路由器数,约定为任意两主机之间的路由器个数的2

    • Protocol:高层的协议,如TCP,UDP

      以便接收方网络层将数据交付给那个处理过程。

    • Header checksum:占16bits

    只检验数据报的首部,不包括数据的部分。

    image-20220105103626478
    • Source IP Address and Destination IP Address:均为32位二进制
    2.2.2 分段

    数据报可以通过不同的网络进行传播
    { 刚刚经过的网络:收到的帧的格式,长度 将要传输的网络:发出去的帧的格式,长度

    {" role="presentation">{
    {刚刚经过的网络:收到的帧的格式,长度将要传输的网络:发出去的帧的格式,长度
    最大传输单元MTU(maximum transmission unit):数据字段的最大长度。

    数据报封装成帧时,数据报的总长度必须小于这个最大数据长度。

    image-20220823185933067

    由网络所使用的硬件和软件给出的限制所定义的。

    image-20220105104731373

    IP数据报的最大长度时65535bytes。如果使用Hyperchannel那么不用进行分段。然而对于其他的物理网络,就要对数据报进行分割。

    • 数据报被分段时,每个分段都有自己的头部,其中大部分的字段是重复的,但有些发生了变化。
    • 数据报在到达最终的终点前,如果遇到更小的MTU的网络,那么已经分段的数据报还可以继续分段。
    • 数据报的分段可能被主机或者路径中的任何路由器分段。
    • 重组只能在目的主机上进行,在传输器件重组会造成传输效率的降低。
    • 不管是否分段,校验和字段总是重新计算的
    • 分段中改变三个字段的值:identification,flag,fragmentation offset

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pBNBk6lx-1664536049297)(https://cdn.jsdelivr.net/gh/Holmes233666/blogImage@main/img/2022/08/23/d7e2804b71106b9f72cfe616638315fc-image-20220823190046127-6909f8.png)]

    (1)identification

    16bits,标识一个从源主机发出的数据报。数据报离开源主机后,这个字段与IPv4地址唯一定义这个数据报。

    使用计数器来标识数据报。

    IPv4发送一个数据包时,就将当前计数器中的值复制到identification字段中,并将此计数器的值+1。

    当数据报分段时,标识字段的值就复制到所有的分段中:所有的分段有与原始数据报相同的identification

    帮助在目的端重组数据报。

    (2)flag

    3位的字段。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZH0NARRj-1664536049297)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220105110237485.png)]

    • 第一位保留为以后使用

    • 第二位称为**“不分段”位 Do not fragments**

      • DF = 1:机器不能对该数据报进行分段。

        如果无法将此数据报通过任何可用的物理网络,那么丢弃数据包,并向主机发送ICMP差错报文

      • DF = 0:根据需要对数据报进行分段

    • 第三位为**“多分段”位More fragments**

      • MF = 1:此段不是最后的一段,还有更多的分段
      • MF = 0:他是最后的唯一分段
    (3)fragmentation offset

    13bit,表示这个分段在整个数据报中的相对位置。他是在原始数据报中的数据偏移量,以8字节为度量单位。

    • 要求第一个字节编号能被8整除
    • 所有分段的标识部分都相同
    • 除了最后一个分段,所有flag的MF都是1
    • 每一个段的 o f f s e t 值 = 第一个字节的编号 / 8 offset值=第一个字节的编号/8 offset=第一个字节的编号/8
    • 对一个分段本身再进行分段时,分段的偏移量所表示的位置都是相对于原始的数据
    2.2.3 选项

    选项部分最多为40bytes。

    image-20220105120350130

    2.3 IPv6

    2.3.1 IPv6优点
    • 更大的地址空间:32---->128位 【解决IPv4地址耗尽问题】
    • 更好的头部格式:首部中不含有选项 【简化路由选择,路由器不用再检查选项】
    • 改进的选项:新选项实现附加功能
    • 允许继续扩充
    • 支持即插即用
    • 支持资源预分配 【音频,视频传输增加,需要最小】
    • 支持更多的安全性 【IPv4不提供加密和鉴别】
    • IPv6首部改为8字节对齐
    2.3.2 数据报格式

    分组 = 基本头部 + 有效载荷 = Base header + Payload

    image-20220105154442026
    {Base header40bytesPayload:up to 65535bytes{Extension headersData packet from upper layer" role="presentation">{Base header40bytesPayload:up to 65535bytes{Extension headersData packet from upper layer
    2.3.2.1 基本首部
    image-20220105155316575
    • Version:版本,IPv6,即0110

    • Priority:优先级,定义了发生通信拥塞时的分组的优先级

      IPv6的优先级字段定义了从相同源端发出每一个分组相对于其他的分组的优先级。

      网络拥塞时,丢弃优先级低的分组
      I P v 6 的通信量划分 { c o n g e s t i o n − c o n t r o l l e d 可进行拥塞控制 n o n c o n g e s t i o n − c o n t r o l l e d 不可进行拥塞控制 IPv6的通信量划分

      {congestioncontrollednoncongestioncontrolled" role="presentation">{congestioncontrollednoncongestioncontrolled
      IPv6的通信量划分{congestioncontrolled可进行拥塞控制noncongestioncontrolled不可进行拥塞控制

      • congestion-controlled 可进行拥塞控制的通信量

        可进行拥塞控制的通信量允许分组延迟到达,或丢失,或不按顺序接收

        被指定为0-7的优先级。0是最低的,7是最高的。

        image-20220105162307042
      • noncongestion-controlled 不可进行拥塞控制的通信量

        期待最小延迟的通信量,丢弃分组是不希望的,重传也是不可能的。

        即,源端不能自己适应拥塞,实时音频和视频是这类通信量的很好的例子

        优先级8~15被分配给不可进行拥塞控制的通信量 noncongestion-controlled traffic

        image-20220105162555701

    • flow label:流标号,用来对特殊的数据进行专门处理

      从特定源端向特定目的端发送的分组序列,如果需要路由器的特殊处理,则称为分组流。

      一个流是共享某些特性的分组序列,源地址和流标号的值唯一定义了一个分组流。

      相同的路径,使用相同的资源,具有相同的安全性,等等。

      支持流标号的路由器有一个流标号表,这个表为每个活动的流标号设置一个项目,项目定义流标号需要的服务。

      • 简单应用:加速路由器对分组的处理。

        不用查找路由表并用路由选择算法确定下一跳的地址,直接在流标号表中查找下一跳的地址

      • 复杂形式:支持实时音频和视频的传输

        进程可以事先对这些资源进行预留。

      • 流标号使用的三个原则

        • 流标号由源主机指定给分组,是1到 2 24 − 1 2^{24} - 1 2241之间的随机数。

        • 如果主机不支持流标号,则置为0

        • 所有属于同一个流的分组必须具有相同的源地址、目的地址、优先级和选项。

    • Payload length:2字节定义了除了基本头部在内的IP数据报的总长度

    • Next header:跟在基本头部之后的下一个头部。

      • 可以是扩展首部

      • 也可以上层协议的UDP或者TCP的头部

    • Hop Limit:跳数限制

      和IPv4中的TTL功能相同

    2.3.2.2 扩展首部

    6个扩展头部,很多是IPv4的选项
    扩展头部 { hop by hop option Source routing Fragmentation Authentication Encrypted security payload Destination option 扩展头部

    {hop by hop optionSource routingFragmentationAuthenticationEncrypted security payloadDestination option" role="presentation">{hop by hop optionSource routingFragmentationAuthenticationEncrypted security payloadDestination option
    扩展头部 hop by hop optionSource routingFragmentationAuthenticationEncrypted security payloadDestination option

    (1)hop-by-hop option

    包括Pad1、PadN和特大有效载荷。

    (2)Source Routing

    将IPv4的严格的源路由和松散的源路由的概念结合在一起。

    (3)Fragmentation

    和IPv4概念相同,但是发生的地方不同。
    { IPv4:源端或者路由器进行分段 IPv6:只有源端才能进行分段,源端使用路径MTU发现技术,找到最小的MTU,进行分段

    {IPv4:源端或者路由器进行分段IPv6:只有源端才能进行分段,源端使用路径MTU发现技术,找到最小的MTU,进行分段" role="presentation">{IPv4:源端或者路由器进行分段IPv6:只有源端才能进行分段,源端使用路径MTU发现技术,找到最小的MTU,进行分段
    {IPv4:源端或者路由器进行分段IPv6:只有源端才能进行分段,源端使用路径MTU发现技术,找到最小的MTU,进行分段

    2.4 Transition from IPv4 To IPv6

    IPv4到IPv6的过渡需要平滑,设计了三种策略:
    T r a n s i t i o n   s t r a t e g i e s { 双栈协议 D u a l   s t a c k 隧道技术 T u n n e l i n g 头部转换 H e a d e r   t r a n s l a t i o n Transition\ strategies

    {双栈协议Dual stackTunnelingHeader translation" role="presentation">{双栈协议Dual stackTunnelingHeader translation
    Transition strategies 双栈协议Dual stack隧道技术Tunneling头部转换Header translation

    2.4.1 双栈策略

    一个站点同时运行IPv4和IPv6。

    当把分组发送到目的端时,主机要向DNS进行查询。

    • DNS返回IPv4地址,那么发送IPv4分组
    • DNS返回IPv6地址,那么发送IPv6分组

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2LAJR6bW-1664536049298)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220105171638319.png)]

    2.4.2 隧道策略

    两台使用IPv6的计算机通信,但是分组要经过IPv4的区域,那么分组需要有IPv4的地址

    IPv6分组封装成IPv4分组,离开时去掉封装

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VXs3Y8kD-1664536049298)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220105171802910.png)]

    2.4.3 头部转换

    头部格式通过头部转换彻底改变:

    • IPv6头部---->IPv4头部
    • IPv4头部---->IPv6头部

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dxcxmO5R-1664536049298)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220105171920757.png)]

    3. 和IP协议配合使用的其他协议

    IP:best-effort delivery protocol,尽力传输协议。

    没有流量控制和差错控制等特性,是使用逻辑寻址的主机到主机的协议。

    IP协议需要其他的协议的帮助。
    { 分组组装成帧,需要物理地址( h o p − t o − h o p ): A R P 地址解析协议 物理地址到逻辑地址的映射 { R A R P B O O T P D H C P 流量控制和差错控制: I C M P 协议 多播协议: I G M P 协议

    \begin{cases}分组组装成帧,需要物理地址(hop-to-hop):ARP地址解析协议\\物理地址到逻辑地址的映射\begin{cases}RARP\\BOOTP\\DHCP\end{cases}" role="presentation">\begin{cases}分组组装成帧,需要物理地址(hop-to-hop):ARP地址解析协议\\物理地址到逻辑地址的映射\begin{cases}RARP\\BOOTP\\DHCP\end{cases}
    \\流量控制和差错控制:ICMP协议\\多播协议:IGMP协议\end{cases} 分组组装成帧,需要物理地址(hoptohop):ARP地址解析协议物理地址到逻辑地址的映射 RARPBOOTPDHCP流量控制和差错控制:ICMP协议多播协议:IGMP协议

    3.1 地址映射

    • 物理地址

      本地地址,管辖范围是本地网络。

      物理地址在本地范围内是唯一的,但是在全局上不是。

      物理地址大多是用硬件实现的。如以太网的48位的MAC地址,被写入主机或者路由器的网卡上

    • 分组传递到主机/路由器需要两级地址:
      { 物理地址 逻辑地址

      {" role="presentation">{
      {物理地址逻辑地址
      两种映射实现物理地址<——>逻辑地址

    3.1.1 静态映射

    将一个逻辑地址与物理地址联系起来,这个表储存在网络上的每个机器上。

    通过【查表】,由IP地址得到物理地址。

    局限性:物理地址可能因为某些原因改变

    (1)更换网卡

    (2)LocalTalk,计算机加电时,地址改变

    (3)移动计算机从一个物理网络转换到另一个物理网络,引起物理地址的改变

    3.1.2 动态映射:协议

    当机器知道逻辑地址和物理地址之一时,可以利用协议求出另一个地址。

    3.1.2.1 逻辑地址到物理地址的映射:ARP

    IP地址的获得:

    • 发送方是主机:从DNS求得(域名到IP地址)
    • 发送方是路由器:从路由选择表获得

    但是IP数据报需要封装成帧,需要有接收方的物理地址。

    主机或路由器发送一个ARP查询分组,该分组:
    A R P 分组 { 发送方的物理地址 发送方的 I P 地址 接收方的 I P 地址 ARP分组

    {IPIP" role="presentation">{IPIP
    ARP分组 发送方的物理地址发送方的IP地址接收方的IP地址
    ARP查询在网络上广播broadcast:

    image-20220105201543276

    该物理网络上的每一个系统都接收到此分组,但是只有系统B才会回答。

    image-20220105201500798

    系统B会发送一个包含他的物理地址的ARP回答分组。【单播unicast】

    然后系统A使用接收到的地址来发送到该目的地的所有地址。

    • 会不会出现:B不在本网络上,那B没法回复,广播到了路由器,由路由器检查后返回路由器的物理地址。路由器怎么知道没人回复A

      不会,A会先查自己的路由表,如果B不在本网络,那么一定广播的是路由器的IP,问路由器的MAC

    • 路由器路由选择时为什么要运行ARP?和IP匹配后直接从路由表指示的那个端口发出去不就行了?

      要获得下一跳的MAC地址

    (1)Cache Memory

    若系统A到系统B的每个分组均需要ARP请求广播:低效

    系统通常发给多个分组到同一个目的地。接收到ARP回答的系统将他的映射保存在高速缓存中,保持20-30分钟(除非高速缓存已满)。之后发送ARP之前,现在高速缓存中寻找。

    (2)数据报格式
    image-20220105202858839
    • Hardware Type:指出运行ARP的网络类型。ARP可以运行在任何物理网络上
    • Protocol Type:发送方使用的协议类型,IPv4是0800H
    • Hardware length:定义字节为单位的物理地址的长度。
    • Protocol length:以字节为单位的逻辑地址的长度
    (3)封装

    ARP分组是直接封装在数据链路帧中的,以太网帧如下:

    Type字段指出了此帧携带的是ARP分组

    image-20220105203304859
    (4)操作

    ARP的工作过程:

    • 发送方知道目标的IP地址

    • IP请求ARP协议产生一个ARP请求报文,填入发送方的物理地址,发送方的IP地址,目标的IP地址。目标的物理地址未知填入0

    • 将报文发送给数据链路层,被封装成帧,使用发送方的物理地址作为源地址,而将物理广播地址作为目的地址

      image-20220105204017293

    • 每一个主机和路由器都收到这个帧。因为这个帧包含了广播的目的地址,所有所有的站点都将此报文送给ARP。除了目标机器外,所有的机器都丢弃这个分组。目标机器识别这个IP地址。

    • 目标机器使用ARP回答报文进行应答,此回答报文包含了他的物理地址。使用单播

    • 发送方接收到这个回答报文,他现在知道了目标机器的物理地址

    • 携带发送给目标机器的IP数据报现在封装成帧,用单播发送给目的端。

    (5)四种情况
    image-20220105210320676
    • 情况1:发送方是一个主机,发给同一个网络上的另一个主机。这时必须将IP地址映射为物理地址,并将逻辑地址作为数据报头部的目的IP地址。
    • 情况2:发送方是一个主机,希望发给另一个网络上的主机,这时候路由器的IP需要映射成物理地址。
    • 情况3:发送方是一个路由器,收到了数据报,要将数据报发送给另一个路由器。另一个路由器的IP就是要映射成物理地址的IP
    • 情况4:路由器收到了数据报,要将数据报发送给同一个网络上的一个主机。数据报的目的IP就是要映射成物理地址的那个逻辑地址
    (6)代理ARP

    Proxy ARP有子网化的效果

    代理ARP是可以代表一组主机的ARP。

    每当运行代理ARP的路由器收到一个寻找这些主机中的其中一个主机的IP地址的ARP请求时,ARP发送一个ARP回答,宣布他自己的物理地址,真正收到数据报后转发给相应的主机。

    image-20220105211928400
    3.1.2.2 物理地址到逻辑地址的映射:RARP,BOOTP,DHCP

    主机只知道其物理地址,不知道IP地址的情况:

    • 无盘站点正在被引导
    • 一个机构无足够的IP地址,只能按需分配
    (1)RARP反向地址解析协议

    Reverse Address Resolution Protocol:为仅知道物理地址的机器寻找他的IP地址而设计的

    每一个主机都有一个或者多个IP地址,这些地址是唯一的,并与物理地址无关。要创建一个数据报,那么主机就要知道他自己的IP地址。一个机器的IP地址通常可以从存储在磁盘文件中的配置文件中读出。

    对于上面的无法知道IP地址的情况。可以根据自己的物理地址使用RARP协议从物理地址求得IP地址

    a. 过程

    • 创建RARP请求,在本地网络上广播
    • 本地网络上知道所有IP地址的另一个机器使用RARP来响应
    • 请求机器必须运行RARP客户程序,响应机器必须运行RARP服务程序

    b. RARP缺点

    不能通过网络边界,需要为每个子网指定一个RARP服务器。(几乎不用)

    (2)BOOTP协议

    引导程序协议:客户机/服务器程序

    BOOTP是一个应用层协议。

    • BOOTP 报文被封装在UDP分组中,UDP分组被封装在IP数据报中

    • 客户机使用:

      • 全0作为源地址
      • 全1作为目的地址——广播地址,不能跨过路由器------>若不在一个网络,需要代理主机【优于RARP的地方】
    • 两种情况:

      • 客户机和BOOTP服务器在同一个网络上

        image-20220105214348757
      • 客户机和BOOTP服务器不在一个网络上

        使用一个主机或者路由器作为中介,中介知道BOOTP服务器的单播地址。

        relay agent中继代理:收到这种类型的分组时,他在单播的数据报中封装报文并发送到BOOTP服务器。

        BOOTP知道来自中继代理的报文,因为在请求字段中定义了中继代理的IP地址。接收到回答后,中继代理向BOOTP客户机转发它。

      image-20220105214745062

      ​ 缺点:只能静态配置,不能动态配置。

      ​ 主机请求IP地址,BOOTP查表,寻找与物理地址匹配的IP地址:关系必须已经存在

    (3)DHCP协议

    动态主机配置协议:Dynamic Host Configuration Protocol
    提供 { 静态 / 动态 人工 / 自助 地址配置 提供

    {//" role="presentation">{//
    地址配置 提供{静态/动态人工/自助地址配置
    a. static address allocation

    与BOOTP相同,查询数据库,返回与物理地址匹配的IP地址

    b. dynamic address allocation

    有一个可用的IP地址池。DHCP客户机请求一个临时地址时,DHCP服务器查找可用的IP,指定一个在可协商期内有效的IP地址。

    c. 请求过程

    客户机发出请求时,DHCP先查找静态的,有则返回;否则在动态IP地址池中选择一个并返回,添加到动态的数据库

    d. Manul and Automatic Configuration

    DHCP可人工,可自动

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tpTBn0lL-1664536049299)(…/…/…/…/Users/%E5%AD%99%E8%95%B4%E7%90%A6/AppData/Roaming/Typora/typora-user-images/image-20220824001825822.png)]

    3.2 ICMP协议

    IP协议缺少差错控制和流量控制,需要ICMP配合IP使用。

    3.2.1消息的类型

    m e s s a g e   t y p e { error reporting message:向主机或者路由器报告错误(无法纠错) query message:帮助主机 / 网络管理员从一个路由器 / 主机得到特定信息 message\ type

    {error reporting messagequery message//" role="presentation">{error reporting messagequery message//
    message type{error reporting message:向主机或者路由器报告错误(无法纠错)query message:帮助主机/网络管理员从一个路由器/主机得到特定信息

    ICMP特点:

    • 为了提高 IP 数据报交付成功的机会,在网际层使用了因特网控制报文协议 ICMP。
    • ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
    • ICMP 不是高层协议,而是 IP 层的协议
    • ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
    • ICMP不能纠错,只能报告错误。
    3.2.2 报文格式

    ICMP报文有一个8字节的头部和可变长的数据部分,8字节头部

    • 前四字节对所有类型的ICMP相同
    • 后四个字节格式不同
    image-20220105223022634
    3.2.3 错误报告

    ICMP使用IP数据报中的源IP地址,向原始的源方发送差错报告报文

    差错报文的原因:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LYvKqyzL-1664536049300)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220105223227611.png)]

    ICMP不产生差错报告的情况:
    { I C M P 错误报告本身不再产生差错报告 分段的报文,不是第一个分组不产生错误报文 多播的 I C M P 不产生差错报文 特殊的地址:全 0 / 全 1 不再发送差错报文

    {ICMPICMP0/1" role="presentation">{ICMPICMP0/1
    ICMP错误报告本身不再产生差错报告分段的报文,不是第一个分组不产生错误报文多播的ICMP不产生差错报文特殊的地址:全0/1不再发送差错报文
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AqeBYrk2-1664536049300)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220105223805241.png)]

    3.2.3.1 目的端不可达

    当路由器不能找到路由或者主机不能传递数据时候,丢弃这个数据报,然后发回目的端不可达报文。

    目的端不可达报文或者由路由器产生,或者由目的主机创建。

    3.2.3.2 源端抑制

    IP无流量控制,可能在路由器或者目的主机中产生拥塞,当来不及处理溢出的缓存队列时,只能将数据报丢弃。

    使用ICMP的目的有两个:

    • 告诉源端数据报被丢弃
    • 通知源端存在拥塞,减缓发送速度
    3.2.3.3 超时

    TTL减为0时,数据报被丢弃,发送超时的ICMP报文

    所有的分片没有在有限的时间内到达

    3.2.3.4 参数错误

    IP首部中产生错误或者二义性,路由器或者主机丢弃这个分组,然后向源方发送参数问题报文。

    3.2.3.5 重定向

    路由器参与路由选择更新,但是主机不参与路由选择更新。

    通常主机只知道一个默认路由,当主机向另一个网络发送报文时,就错误地发送给了这个默认路由

    默认路由需要:

    • 转发给正确的路由器
    • 重定向报文
    image-20220105225103319
    3.2.4 查询报文

    ICMP对某些网络进行诊断,4种报文实现

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kM0llV0e-1664536049301)(https://cdn.jsdelivr.net/gh/Holmes233666/gitee-image@main/pictureStore/image-20220105225640076.png)]

    3.2.4.1 echo-request and reply message

    回送请求和回答报文:诊断目的设计。确定两个系统是否能够通信

    e.g. ping命令

    3.2.4.2 时间戳请求和回答

    时间戳请求和回答:确定IP数据报在两个机器之间的往返时间。

    可用于时钟同步。

    3.2.4.3 地址掩码请求和回答

    主机知道自己的IP,但是可能不知道自己的掩码。获取对应地址的地址掩码,向路由器发送地址掩码请求报文。不知道路由器地址时进行广播。路由器收到,使用地址掩码回复报文回复。

    3.2.4.4 路由器询问和通告

    主机需要知道路由器是否正常工作。

    3.2.5 Debugging Tools
    3.2.5.1 ping

    ping:确定一个主机是否正常工作

    如果目标主机工作,那么他用ICMP报文回答

    3.2.5.2 traceroute程序

    traceroute程序:追踪中间路由的地址。

    利用:【时间超时TTL】+【目的端不可达】两种差错报文。

    4. Delivery, Fowarding and Routing

    Delivery:在网络层的控制下利用底层网络对一个分组进行处理

    Forwarding:将一个分组传递到下一个站点的方法

    Routing:转发过程中创建路由表的方法

    路由选择协议routing protocol:用于不断更新在转发和路由选择中要查找的路由表。

    4.1 Delivery

    delivery:网络层控制下利用底层网络对一个分组进行处理。

    • 直接交付
      • 最后一个路由器与目的主机
      • 源端和目的端在同一个网络
    • 间接交付
      • 源端与目的端不在同一个网络上

    ​ Note:

    • 一个传递永远包含一个直接传递和0或若干个间接传递
    • 最后的传递总是直接传递

    4.2 Forwarding

    转发:将分组路由到他的目的端,转发要主机或者路由器有一个路由表。当主机有分组要发送时,或是路由器已收到一个分组要转发时,就要查找路由表以便求得到达最终目的端的路由。

    4.2.1 向前交付技术

    路由表的设计:

    • 下一条方法 vs 源路由方法
    • 特定网络 vs 特定主机
    • 默认方法
    4.2.2 向前处理过程

    假定主机和路由器使用classless addressing。在无类寻址中,路由表对涉及到的每一个地址块都有一行信息。

    路由表需要根据网络地址进行查询,但是分组中只有目的地址而没有网络地址,所以我们还需要掩码mask

    在无类寻址中,一个路由表至少要有4列:

    image-20220106150205106

    其中next-hop address指的是下一个路由器的ip地址。

    Example:制作R1的路由表

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EyjK8flA-1664536049301)(…/…/…/…/Users/%E5%AD%99%E8%95%B4%E7%90%A6/AppData/Roaming/Typora/typora-user-images/image-20220824135100244.png)]

    4.2.2.1 最长掩码匹配规则

    路由表中的掩码存放按照从长到短的原则排列,不按此顺序可能出现问题。

    • 使用 CIDR 时,路由表中的每个项目由“掩码”、“网络地址”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。
    • 应当从匹配结果中选择具有最长掩码的路由。
    • 掩码越长,其地址块就越小,因而路由就越具体
    4.2.2.2 地址聚合
    路由汇总

    classless addressing将地址空间划分成可管理的地址块。

    地址块的增多将增大路由器的寻找:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JmXpxsnd-1664536049301)(…/…/…/…/Users/%E5%AD%99%E8%95%B4%E7%90%A6/AppData/Roaming/Typora/typora-user-images/image-20220824135416468.png)]

    Example:

    image-20220106164759395
    4.2.3 路由表
    a. 路由表

    路由:从某一网络设备出发去往某个目的地所经过的路径。路由器通过查询路由表为数据报选择转发路径。

    路由表只存在于终端计算机路由器三层交换机中,二层交换机中不存在路由表。

    路由表中的常用字段:

    image-20220106161231881

    b. 三种路由
    • 直连路由:设备自动发现的路由信息,路由器可自动发现与自己接口直接相连的网络的路由
    • 静态路由:人工输入,无法自动更新。用于小型互联网或试验网络
    • 动态路由:可周期性更新,适合大型网络
    c. 动态路由优先级

    静态路由的优先级高于动态路由的优先级

    image-20220824135721089

    4.3 单播路由协议

    static routing table:有人工输入项目,大型网络不适用

    dynamic routing table:使得路由表自动更新

    需要有动态路由表,所以产生了多种路由选择协议。

    4.3.1 优化协议

    路由器将收到的分组转发到哪个网络?取决于最优化原则

    取决于度量metric
    m e r i c 取决于协议的类型 { R I P :同等对待所有的网络,即通过每个网络的代价都是一样的,跳数都是 1 O S P F :允许管理员基于服务类型指定通过网络的代价 { 最大吞吐量 最小延迟 . . . . B G P :可由网络管理员设置的策略 meric取决于协议的类型

    \begin{cases}RIP:同等对待所有的网络,即通过每个网络的代价都是一样的,跳数都是1\\OSPF:允许管理员基于服务类型指定通过网络的代价\begin{cases}最大吞吐量\\最小延迟\\....\end{cases}" role="presentation">\begin{cases}RIP:同等对待所有的网络,即通过每个网络的代价都是一样的,跳数都是1\\OSPF:允许管理员基于服务类型指定通过网络的代价\begin{cases}最大吞吐量\\最小延迟\\....\end{cases}
    \\BGP:可由网络管理员设置的策略\end{cases} meric取决于协议的类型 RIP:同等对待所有的网络,即通过每个网络的代价都是一样的,跳数都是1OSPF:允许管理员基于服务类型指定通过网络的代价 最大吞吐量最小延迟....BGP:可由网络管理员设置的策略

    4.3.2 域内和域间路由选择

    互联网划分为自治系统autonomous system

    image-20220106190831648

    autonomous system :一个单一的管理机构管辖下的一组网络和路由器。

    在自治系统内的路由选择称为域内路由选择interadomain routing

    • 每一个autonomous system可以选择一种或者多种域内路由选择协议处理域内路由选择
    • 自治系统之间,通常使用一种域间路由选择协议

    { R I P  [Routing Information Protocol]:基于【距离向量 D i s t a n c e   v e c t o r 】的协议 O S P F  [Open Shortest Path First]:基于【链路状态  l i n k   s t a t e 】的协议 B G P  [Border Gate Protocol]:基于【路径向量 p a t h   v e c t o r 】的协议

    {RIP [Routing Information Protocol]Distance vectorOSPF [Open Shortest Path First] link stateBGP [Border Gate Protocol]path vector" role="presentation">{RIP [Routing Information Protocol]Distance vectorOSPF [Open Shortest Path First] link stateBGP [Border Gate Protocol]path vector
    RIP [Routing Information Protocol]:基于【距离向量Distance vector】的协议OSPF [Open Shortest Path First]:基于【链路状态 link state】的协议BGP [Border Gate Protocol]:基于【路径向量path vector】的协议

    image-20220106191451292
    4.3.3 距离向量路由

    在距离向量路由选择中,任何两个节点之间路由的最低代价是最小距离的路径

    每个节点都保留一张到其他的节点的最小向量距离表。每个节点也用这张表表示路由中的下一个节点指导分组流向目的节点。

    image-20220106192140288
    4.3.3.1 初始化

    最开始时:每个节点仅知道与他直接连接的邻站的距离

    我们假定一个节点能向邻站发送报文并得到与这些邻站的距离。

    初始的表如下:

    image-20220106192820583
    4.3.3.2 共享

    距离向量路由选择的总的思想是与邻站共享路由信息

    每个站点向邻站发送完整的表,让邻站决定哪个信息是有用的。

    • next是没有用的,邻站收到时,需要用发送方的节点名代替
    • 周期性或者有变化时共享表
    4.3.3.3 更新

    step1:接收节点在表的第二列加上它与发送节点之间的代价值。

    step2:将发送节点名作为第3列【发送节点作为next】

    step3:

    • 如果下一节点的项目相同,选取新行
    • 如果下一节点项目不同,选取具有代价较小的行,最小代价相同时保持旧项目
    image-20220106193705227

    什么时候更新?
    { 周期性:通常 30 s 触发更新,路由表有变化时 { 节点接收邻站的表,引起自己的表的更新 节点检测到邻站链路有故障

    \begin{cases}周期性:通常30s\\触发更新,路由表有变化时\begin{cases}节点接收邻站的表,引起自己的表的更新\\节点检测到邻站链路有故障\end{cases}" role="presentation">\begin{cases}周期性:通常30s\\触发更新,路由表有变化时\begin{cases}节点接收邻站的表,引起自己的表的更新\\节点检测到邻站链路有故障\end{cases}
    \end{cases} 周期性:通常30s触发更新,路由表有变化时{节点接收邻站的表,引起自己的表的更新节点检测到邻站链路有故障

    4.3.3.4 两个结点循环不稳定性和三个结点循环不稳定性
    image-20220824161502662

    解决方案:

    • 定义无穷大defining infinity:将一个较小的值定义为无穷大,RIP使用16

    • 分割范围 split horizon:每个节点仅能通过接口发送表的一部分,B的信息是从A获得的,那么这条信息将不会通知给A

      在上图中,删除最后一样发送给A,那么问题不会发生

    • 分割范围与毒性逆转Poison Reverse:分割范围与毒性逆转结合起来。节点B依旧通知X的值,但是如果信息源是A,那么用无穷大的距离表示警告

    4.3.3.5 RIP协议
    • RIP:路由选择信息协议,在自治系统内使用域内路由选择协议

    • RIP基于的事实:

      • 度量为跳数hop
      • 16定义为无穷大——RIP只适用于小型网络
      • next为发送方
      • 路由器有路由表,网络没有
      • 分类
        • RIPI:有类路由选择,通知IP可知道地址类型,无需通告掩码
        • RIPII:支持可变长掩码,掩码需要通知
    • RIP优点:实现简单,开销较小

    • RIP缺点:

      • 网路故障时,需要经过较长时间才能将信息传送到所有的路由器
      • RIP限制了网络规模,他能使用的最大的距离为15
      • 路由器之间交换的路由信息是完整的路由表,因而随着网络的扩大,开销也增大
    • RIP算法:

      image-20220106200750621

    注意收到的相邻的节点,所以默认两个节点直接的距离是1.即+1.

    4.3.4 链路状态路由

    链路状态路由选择与距离向量路由选择基本原理不同:每个节点有该区域的全部拓扑结构
    全部拓扑结构 { 所有节点和链路的列表 如何连接 { 类型 代价 条件 全部拓扑结构

    \begin{cases}所有节点和链路的列表\\如何连接\begin{cases}类型\\代价\\条件\end{cases}" role="presentation">\begin{cases}所有节点和链路的列表\\如何连接\begin{cases}类型\\代价\\条件\end{cases}
    \end{cases} 全部拓扑结构 所有节点和链路的列表如何连接 类型代价条件
    image-20220217165210004

    基于假设:整个拓扑可以由每个节点的知识复合而成——迪杰斯特拉算法

    如果网络中的任意一个点改变,就必须更新整个拓扑。

    image-20220106202116337
    4.3.4.1 建立路由表

    step1:为每个节点建立LSP(link state packet)

    • LSP携带信息:
      • 节点标识
      • 链路清单
      • 序列号:洪泛区别新的LSP和旧的LSP
      • 寿命
    • LSP生成的时刻:
      • 区域的拓扑发生变化时,让周围的节点知道
      • 周期性:实际上不需要,且周期较长

    step2:使用一种可靠的方法向其他的路由器扩散LSP,称为flodding洪泛

    • 洪泛:一个节点准备好LSP后,必须向其他的节点扩散,不仅是相邻节点。
      • 创建节点的LSP,并从每个接口发送LSP
      • 接收到的LSP的节点与已有的副本比较。如果到达的LSP是比较旧的,那么丢弃。如果是比较新的,那么执行
        • 丢弃丢的,保留新的
        • 节点通过每个接口,但是除了接收到分组的接口再发送分组的副本——确保洪泛的停止

    step3:为每个节点构成一个最短路径树——Dijkstra

    step4:基于最短路径树计算路由表

    4.3.4.2 OSPF

    Open Shortest Path First 开放最短路径协议:基于link state的协议

    • O:”开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
    • SPF:“最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法
    • OSPF 只是一个协议的名字,并不表示其它的路由选择协议不是“最短路径优先”。
    a. 区域area

    OSPF在自治系统的基础上划分区域。一个area是包含在autonomous system中的一些网络,主机和路由器的集合。

    自治系统可以划分为不同的区域,在一个区域中的所有网络必须是互相连接的。

    • 区域内:一个区域内通过洪泛传送路由选择信息。——减少通信量
    • 区域边界有区域边界路由器 area border router:将本区域的信息概括起来发送给其他的区域

    自治系统中有一个特殊的area称为主干backbone,其他的区域称为从区域secondary area

    自治系统中的所有的区域必须连接到backbone上。

    每个区域有一个区域标识,主干区域的标识是0.

    image-20220106205753678 image-20220106210407512
    4.3.5 路径向量路由

    path vector:自治系统之间的路由选择。

    原理与距离向量路由选择相似。

    4.3.5.1 speaker node

    path vector routing中,假定每个AS中有一个节点的行为代表了整个自治系统,该节点称为代言节点speaker node

    一个自治系统的speaker node生成一个路由表并且通知相邻的自治系统中的代言节点。

    • 通知的是他的自治系统或者其他自治系统中的路径,而不是节点的跳数
    4.3.5.2 初始化

    初始化:每个代言节点只知道自己的自治系统内的节点的可达性。

    image-20220106222833703
    4.5.3.3 共享

    每个代言节点与邻站的speaker node共享路由表

    A1与C1和B1共享,C1与A1和D1共享…

    4.5.3.4 更新

    当代言节点从邻站收到一个两列的路由表时,更新自己的路由表。
    更新内容 { 增加不在表中的节点 A S 与发送方之间的路径 更新内容

    {AS" role="presentation">{AS
    更新内容{增加不在表中的节点AS与发送方之间的路径
    image-20220106223248114

    Path Vector Routing优点:

    • 预防回路:避免距离向量路由选择协议的不稳定性和回路问题
    • 策略路由选择:路由器检查报文路径,如果路径中列出的某自治系统不符合策略,则忽略。
    • 优化路径:符合组织机构标准的路径及保密、安全、可靠性等其它原则。
    4.3.5.5 BGP

    边界网关协议 Border Gateway Protocol

    自治系统的类型:

    • 残桩
    • 多接口
    • 转送

    特点:

    • 节点数量是自治系统的数量级,比网络数要少很多
    • BGP代言节点数目很少,交换不复杂
    • 支持CIDR

    边界网关协议 Border Gateway Protocol

    自治系统的类型:

    • 残桩
    • 多接口
    • 转送

    特点:

    • 节点数量是自治系统的数量级,比网络数要少很多
    • BGP代言节点数目很少,交换不复杂
    • 支持CIDR
  • 相关阅读:
    【SQL刷题】DAY18----SQL汇总数据专项练习
    app在线客服系统怎么对接
    SpringCloud 从入门到入土
    Redis 的大 Key 对持久化有什么影响?
    Word控件Spire.Doc 【加密解密】教程(四):在 C# 中为 Word 添加数字签名
    Windows进程的创建与结束
    IP-guard WebServer RCE漏洞复现
    Pytorch数据集读出到transform全过程
    看完100%会写毕业论文
    代码随想录刷题day51 309.最佳买卖股票时机含冷冻期;714.买卖股票的最佳时机含手续费
  • 原文地址:https://blog.csdn.net/weixin_45745854/article/details/127128071