《计算机网络 自顶向下》第四章==网络层:数据平面==随堂笔记

第四章 网络层:数据平面

4.1 导论

  • 在发送主机和接收主机对之间传送段(segment)
  • 在发送端将数据封装到数据报中
  • 在接收端,将段 上交给传输层实体
  • 网络层协议存在于每一个主机和路由器
  • 路由器检查每一个经过它的IP数据报的头部

网络层功能:
转发:将分组从路由器的输入接口转发到合适的输出接口
路由:使用路由算法来决定分组从发送主机到目标接收主机的路径(路由选择算法、路由选择协议)

举例:
转发:通过单个路口的过程
路由:从源到目的地的路由路径规划过程

数据平面

  • 本地、每个路由器功能
  • 决定从路由器输入端口到达的分组如何转发到输出端口
  • 转发功能:传统方式(基于目标地址+转发表)、SDN方式(基于多个字段+流表)

控制平面

  • 网络范围内的逻辑
  • 决定数据报如何在路由器之间路由,决定数据报从源到目标主机之间的端到端路径
  • 控制平面方法:传统的路由算法(在路由器中被实现)、SDN(software defined network在远程的服务器中实现)

传统路由方式:在每一个路由器中的单独路由器算法元件,在控制平面进行交互

控制平面:路由算法决定端到端路径
数据平面:IP协议根据转发表决定了IP数据报在此路由器上的局部转发

SDN方式:一个不同的控制器(通常是远程的)与本地控制代理交互

SDN字面意思是软件定义网络,其试图摆脱硬件对网络架构的限制,这样便可以像升级、安装软件一样对网络进行修改,便于更多的APP(应用程序)能够快速部署到网络上。

网络服务模型

  • 同步阻塞IO模型
    相当于串行,在系统内核准备数据期间会发生阻塞,数据准备完成后才会准备下一次数据。
  • 同步非阻塞IO模型
    在数据没有准备好之前,会直接返回error,然后进程可以做其他的事情,不会发生阻塞。数据准备好之后,复制数据到用户空间,进程处理数据,这一阶段,进程会发生阻塞。
  • 异步IO模型
    通过aio_read调用系统内核,告知需要的数据,然后进程可以做其他事情,直到系统内核完成数据,将数据复制到用户空间再通知进程,此时进程直接处理用户空间的数据。
  • 信号驱动
    应用程序通过sigaction发送请求,通知系统内核需要什么样的数据,然后进程就可以去做其他事,当系统内核准备好数据之后,会立刻返回信号,然后进程立刻调用recvfrom,等待数据从内核空间复制到用户空间,待完成之后recvfrom返回成功指示,进程才处理别的事情
  • IO多路复用
    I/O多路复用和阻塞I/O类似,不同的是这里使用两个system call (select 和 recvfrom),而blocking IO只调用了一个system call (recvfrom)。I/O多路复用用户进程阻塞的不是recvfrom,而是select/epoll。但是,用select的优势在于它可以同时处理多个connection。所以,如果处理的连接数不是很高的话,使用select/epoll的web server不一定比使用multi-threading +blocking IO的web server性能更好,可能延迟还更大。select/epoll的优势并不是对于单个连接能处理得更快,而是在于能处理更多的连接

4.2 路由器组成

路由:运行路由选择算法,生成路由表

转发:根据路由表,将数据从输入链路转发到对应的输出链路

任何一个端口既是输入端口,又是输出端口!

输入端口缓存

  • 当交换机构的速率小于输入端口的汇聚速率时,在输入端口可能要排队。

  • 多个输入端口向同一个输出端口传输数据时,部分输入端口的数据可能会阻塞,需要存在缓存里。

输入端口缓存用完时,缓存溢出,会有分组被丢弃

输出端口缓存

  • 当数据从交换机构的到达速度比 输出端口 的传输速率快时,需要输出端口缓存

输出端口缓存用完时,缓存溢出,会有分组被丢弃

交换结构

将分组从输入缓冲区传输到合适的输出端口

  • 通过内存交换
    通过软件系统,在CPU的控制下交换,从输入端口,经过计算机总线到达软件处理系统,之后再通过计算机总线到达输出端口
    转发速率被内存的宽带限制
    一次只能转发一个分组
  • 通过总线交换
    数据报通过共享总线,从输入端口转发到输出端口
    交换速率受限于总线带宽
    一次处理一个分组
  • 通过互联网络交换
    搭建计算机互联网络,通过控制器短接响应的总线,
    可同时并发转发多个分组,克服总线带宽限制

调度策略

  • FIFO先进先出
    默认的调度机制,根据到来的先后顺序进行处理。
  • 优先权
    会根据某些算法对某些数据 或者 某类数据 加不同级别的优先权,优先权大的先处理。
  • 循环发送
    循环发送不同类型的分组,按照类型进行循环
  • 加权公平队列
    每种类比在获得一定比例的权重,根据权重安排处理顺序,如:
    A类50%,B类30%,C类20%
    那么A类在运行过程中就会占据50%的队列,以此类推。

丢弃策略

当输入端口或在输出端口的缓冲区用完时,如果仍有数据进来,就需要抛弃部分数据

  1. 丢弃刚刚到达的新分组
  2. 根据优先权,先丢弃优先权低的分组
  3. 随机丢弃,全凭运气

4.3 IP:Internet Protocol

数据报格式

数据报格式

  • IP协议版本号
  • 头部长度
  • 数据报总长
  • 数据类型
  • identifier (分片、重组使用)
  • flags(分片、重组使用)
  • fragmeng offset(分片、重组使用)
  • 存活时间(经过每个路由器时减一,减到0时被丢弃)
  • 上层协议(TCP或UDP)
  • 校验和
  • 源IP地址
  • 目标IP地址
  • 选项(存储一些其他数据,如经过的路由的列表)
  • 要传输的数据

IPv4

IP地址:32位标识,对主机或路由器的接口编址。

  • 分片和重组
    网络链路有MTU(最大传输单元,链路层帧携带的最大数据长度),所以大的数据报在网络上被分片。

    一个数据报被分割成若干个小的数据报(这些小的数据报具有相同的ID,偏移量不同。最后一个flag被标记为0,其他的被标记为1)

    重组只在最终的目标主机上进行,中途的路由器转发时不会组装。

  • 子网
    在32位IP地址中根据某种规则将IP地址分为两段,其中高位段叫做网络部分,低位段叫做主机部分。

    当一些IP地址的高位部分相同时,即网络部分相同时,这些结点构成的网络的一部分叫做子网。

    特点:无需路由器介入,子网内各主机可以在物理上相互直接到达。

  • IP地址分类
    A类地址:0开头,126个网络,每个网络可配置一千六百万主机
    B类地址:10开头,一万六千多个网络,每个网络可以配置六万四千台主机
    C类地址:110开头,2百万哥网络,每个网络下仅可配置254台主机
    D类地址:1110开头,用于多播,一对多通信
    E类地址:11110开头,保留地址,以后使用

  • 特殊IP地址
    网络部分全为0:本网络
    主机部分全为0:本主机
    主机部分全为1:广播地址
    网络号为127:保留用于环回测试,表示当前节点。

  • 内网(专用)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

  • 无类域间路由(CIDR)
    上面将IP分为A类地址、B类地址、C类地址等。但是有些情况下C类地址的254台主机满足不了需求,B类地址的六万四千台主机又用不完,这时候需要一种机制,按需分配。

    无类域间路由:网络位置可以在任意部分。如200.23.16.0/23,即200.23.16.0的前23位代表网络地址,后9位地址代表主机地址。

  • 子网掩码
    因为无类域间路由的存在,需要一种机制来区分出网络地址和主机地址,由此引出子网掩码的概念,子网掩码也是32位,1代表网络部分,0代表主机部分。

    只需要将IP地址和子网掩码进行&操作,就可以快速得到网络部分,此时可以拿着网络部分去路由。

  • DHCP
    获取IP地址的方式有两种,一种是从网络服务提供商处得到IP地址,配置在电脑配置文件。还有一种是DHCP,从服务器中动态获取一个IP地址。

    DHCP工作流程:
    1、主机广播“DHCP Discover”。
    2、DHCP服务器用“DHCP Offer”提供报文响应。
    3、主机选择一个IP地址,并向DHCP服务器请求“DHCP Request”。
    4、DHCP服务器发送响应“DHCP ACK”。

    DHCP服务器获取的内容:IP地址、第一跳路由器的IP地址、子网掩码、DNS服务器的域名和IP地址

IP地址是怎么分配的

ICCAN( Internet Corporation for Assigned Names and Numbers)给ISP分配地址块
ISP再给企业或个人分配更小的地址块

NAT(Network Address Translation 网络地址转换)

动机:本地网络只有一个有效IP地址

不需要从ISP分配一块地址,可用一个IP地址用于所有的局域网设备–省钱
局域网内部改变IP地址时不用通知外界。
可以改变ISP提供的地址,而无需改变内部的设备地址
局域网内部的设备没有明确的地址,对外是不可见的–安全

NAT执行流程:
1、主机 10.0.0.1 发送数据报到128.119.40, 80端口
2、NAT路由器变换数据报源地址、端口号从10.0.0.1, 3345到138.76.29.7, 5001端口
3、响应返回目标地址: 138.76.29.7, 5001
4、NAT 路由器变换目标地址从138.76.29.7, 5001 到10.0.0.1, 3345

IPv6

动机:IPv4的32位地址很快被用完。

IPv6地址由IPv4的32位升为128位。

对IPv4的升级:

  • 每次经过路由器时,ttl都要减一。每次ttl改变之后,校验和都要重新计算。所以IPv6中把校验和移除掉了。
  • 分片与重组会增加路由器的负担。IPv6数据报传输过程中不允许分片。如果遇到较大的分组,就发错误报告,要求客户端发小点的分组,路由器不再处理分组过大的问题。

IPv4到IPv6的过渡:
隧道:在IPv4路由器之间传输的的IPv4数据报中携带IPv6数据报

4.4 通用转发和SDN

网络设备控制平面(传统方式)

路由器的网络层功能:

路由:决定路径、计算路由表;处在控制平面
IP转发:对于到来的分组按照路由表决定如何转发;处在数据平面

每个设备都实现了数据平面和控制平面的事情

还有其他种类繁多的网络设备:交换机、防火墙、负载均衡设备等。

SDN(逻辑上集中)

控制平面和数据平面分离、解耦。

有一个远程的控制器(SDN交换机),在控制平面,执行控制逻辑
将路由器、交换机和目前大多数网络设备的功能 进一步抽象成:按照流表(控制逻辑)进行PDU(分组)的动作(转发、丢弃、泛洪、阻塞)

SDN特点

  1. 通用;基于流的匹配+行动
  2. 控制平面和数据平面分离
  3. 可编程控制应用(在控制器之上以网络应用形式实现各种网络功能)
  4. 控制平面功能在数据交换设备之外实现

SDN控制器:

  1. 维护网络状态信息
  2. 通过上面的北向API和网络控制应用交互
  3. 通过下面的南向API和网络交换机交互
  4. 逻辑上集中,但是在实现上通常由于性能、可扩展性、容错性采用分布式方法

每个路由器都包含一个流表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值