4.1 网络层概述

   网络层主要功能为转发(将数据从路由器输入接口转移到合适的输出接口)和路由选择(端到端的路径选择),每台路由器都有一张转发表,用最长前缀匹配规则来转发。

  4.1.1 转发和路由选择:数据平面和控制平面

  • 转发(forwarding) 是指将分组从一个输入链路转移到适当的输出链路接口的路由器本地动作。
  • 路由选择(routing) 是指确定分组从源到目的地所采取的端到端路径的网络范围处理过程。

  4.1.2 网络服务模型

  • 因特网的网络层IP协议提供单一服务,尽力而为服务,无带宽保证,无丢包保证,无顺序保证,不定时,无拥塞指示。也即差不多根本无服务。

4.2 路由器工作原理

  路由器的组成部分:

  1) 输入端口

  • 执行将一条输入的物理链路与路由器相连接的物理层功能
  • 执行与位于入链路远端的数据链路层交互的数据链路层功能
  • 查找功能,查询转发表决定路由器的输出端口,将分组转发到输出端口

  2) 交换结构

  • 将路由器的输入端口与输出端口相连
  • 分组通过交换结构转发到输出端口

  3) 输出端口

  • 存储从交换结构接收的分组,执行必要的链路层和物理层功能在输入链路上传输这些分组。

  4) 路由选择处理器

  • 执行路由选择协议

  5) 路由转发平面

  6) 路由控制平面

  4.2.1 输入端口处理和基于目的地转发

  

  4.2.2 交换

  三种交换技术。

  1.经内存交换。

  2.经总线交换。

  3.经互联网络交换。

  

  

  4.2.3 输出端口处理

  4.2.4 何处出现排队

  • 输入、输出都会出现排队。

  4.2.5 分组调度

  三种路由器中的排队规则

  1. 先进先出

  2.优先权排队

  3.循环和加权公平排队

4.3 网际协议 : IPv4、寻址、IPv6及其他

  4.3.1 IPv4 数据报格式

  

  • 版本号:包括IPv4、IPv6。
  • 首部长度:通常20字节。
  • 服务类型:区分不同类型数据报,如实时流量(IP电话)和非实时流量(FTP)。
  • 数据报长度:首部+数据长度,很少超过1500字节。
  • 标识、标志、片偏移:用于分组分片。IPv6不分片
  • 寿命(Time-To-Live, TTL):经过一台路由器,TTL减一。
  • 上层协议:数据报交付给哪个应用层协议。
  • 首部检验和:只对首部校验,TCP/UDP与IP不一定属于同一协议栈(如ATM代替IP)。
  • 源和目的IP。
  • 选项:IPv6不使用。
  • 数据:交付给运输层的数据,也可能是ICMP报文等其他类型。

  4.3.2 IPv4 数据报分片

  • 链路层MTU限制数据报长度,不同链路使用不同的协议,MTU不同,所以一个数据报可能分成数个小的数据报,称为分片(fragment)。
  • 数据报在端系统中重新组装,然后上传传输层。
  • 标识标记初始IP数据报。
  • 最后一个片的标志为0,其余为1。
  • 偏移字段指定该片在初始IP数据报的位置。

  4.3.3 IPv4 编址

  主机与路由器连入网络的方法

  • 一台主机通常只有一条链路连接到网络,主机IP发送数据报从该链路发送
  • 主机与物理链路的边界叫接口,一台路由器有多个接口
  • IP要求每台主机和路由器都有自己的IP地址,因此一个IP地址实际上是与每一个接口相关联的
  • 每个IP地址长度32bit(4字节),总共2^32个可能的IP地址,约40亿个 点分十进制记法,如193.32.216.9
  • 一个接口的IP地址的一部分需要由其连接的子网决定
  • 如互联3个主机接口与1个路由器接口的网络形成一个子网,IP编址为这个子网分配一个地址:223.1.1.0/24,/24记法称为子网掩码,指示了32bit中的最左侧24bit定义了子网地址
  • 为了确定子网,分开主机和路由器的每个接口,产生几个隔离的网络岛,使用接口端接这些隔离的网络的端点,这些隔离的网络中每一个都叫做一个子网

  因特网地址分配策略:无类别域间路由选择CDIR

  • a.b.c.d/x的地址的x最高比特构成IP地址的网络部分,称为该地址的前缀,一个组织通常被分配一块连续的地址,即具有相同前缀的一段地址。BGP路由选择协议中,该组织网络外的路由器仅考虑x,减少了转发表的长度,因为形式为a.b.c.d/x单一表项足以将数据报转发到该组织内的任何目的地

  地址聚合(路由聚合):使用单个网络前缀通告多个网络的能力

  • 一个ISP将8个组织连接到因特网。该ISP向外界通告:向我发送以200.23.16.0/20开始的任何内容。外部无需知道在该地址块内还有8个其他组织,每个组织有自己的子网

  在CDIR出现之前,采用分类编址,A、B、C类网络,分别具有8、16、24比特子网地址

  • C类(/24)仅能容纳2^8-2=254台主机(其中两个用于特殊用途)
  • B类(/16)支持65534台主机,一个组织分配一个B类地址却只用2000个接口,造成巨大浪费
  • A类
  • IP广播地址
  • 当一台主机发出目的地址为255.255.255.255的数据报时,报文会交付给同一个网络的所有主机,可用于DHCP发现报文的发送,广播最小生成树

  动态主机配置协议(Dynamic Host Configuration, DHCP),允许主机自动获取一个IP地址,还有其他信息,例如子网掩码、第一条路由器地址(默认网关)、本地DNS服务器地址。

  DHCP是C-S协议,客户是新到达的主机,服务器是子网中的DHCP服务器或者是DHCP中继代理(通常是路由器)。

  
  4个步骤 :
  1.DHCP服务器发现。使用广播目的地址255.255.255.255和源地址0.0.0.0,进行链路层广播。
  2.DHCP服务器提供。使用广播发送推荐IP、地址租用期等信息。
  3.DHCP请求。从一个或多个服务器提供的选择中响应,回显配置参数。
  4.DHCP ACK。对请求报文响应,证实要求的参数。

 4.3.4 网络地址转换

  • 网络地址转换(Network Address Translation, NAT),通过NAT转换表管理小型子网络,对外隐藏网络细节。
  • 子网络中的主机使用专用地址(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16),该地址只有在该网络中才有意义,不能用于因特网。
  • NAT路由器将因特网的IP和端口号、子网的IP和端口号进行转换,对外行为就像具有单一IP的单一设备。

  

  

  4.3.5 IPv6

  1.IPv6 数据报格式

  

  

  • 地址:由32比特增加到128比特。任播地址将数据报交付给一组主机中的任意一个(例如GET一组镜像站点中的某个)。
  • 下一个首部:与IPv4**协议**字段相同,表示数据字段交付上层哪个协议。

  取消的字段

  • 分片:如果数据报太长,发送ICMP差错报文。
  • 首部校验和,TCP和UDP、以太网已经校验。

  2.从IPv4到IPv6的迁移,两种双栈(dual-stack)方法。

  • 接受结点和发送节点如果都是IPv6,则使用v6,否则使用IPv4。
  • 将IPv4路由器集合作为隧道(tunneling),将IPv6数据报放入IPv4的数据字段。

4.4 通用转发和 SDN

  4.4.1 匹配

  4.4.2 动作

  4.4.3 匹配加动作操作中的OpenFlow例子

参考:

  https://blog.csdn.net/A657997301/article/details/78452092

  https://blog.csdn.net/qq_40369829/article/details/78794793#%E6%95%B0%E6%8D%AE%E5%8C%85%E6%A0%BC%E5%BC%8F

计算机网络自顶向下方法第4章 网络层:数据平面 (Network layer)的更多相关文章

  1. 计算机网络自顶向下方法第3章-传输层 (Transport Layer).1

    3.1 概述和运输层服务 运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信(logic communication)功能. 3.1.1 运输层和网络层的关系 网络层提供了主机之间的逻辑通信,而 ...

  2. 计算机网络自顶向下方法第2章-应用层(application-layer).1

    2.1 应用层协议原理 2.1.1网络应用程序体系结构 1)在客户-服务器体系结构 (client-server architecture)中,有一个总是打开的主机称为服务器,它服务于来自许多其他称为 ...

  3. 计算机网络自顶向下方法第2章-应用层(application-layer).2

    2.4 DNS:因特网的目录服务 2.4.1 DNS提供的服务 DNS的定义 实体层面看,DNS是一个由分层的DNS服务器实现的分布式数据库 协议层面看,DNS是一个使得主机能够查询分布式数据库的应用 ...

  4. 计算机网络自顶向下方法第3章-传输层 (Transport Layer).2

    3.5 面向连接的运输: TCP 3.5.1 TCP连接 TCP是因特网运输层的面向连接的可靠的运输协议. TCP连接提供全双工服务(full-duplex service). TCP连接是点对点的连 ...

  5. 《计算机网络 自顶向下方法》 第2章 应用层 Part1

    常见的应用层协议有哪些?  HTTP(HyperText Transfer  Protocol):超文本传输协议 FTP(File Transfer Protocol):文件传输协议 SMTP(Sim ...

  6. 《计算机网络 自顶向下方法》 第3章 运输层 Part1

    由于个人精力和智商有限,又喜欢想太多.钻牛角尖,导致学习系统性知识很痛苦,尝试改变学习方式,慢慢摸索 现在看到 rdt2.0,又有点看不下去 现在的想法: 要有个目标,且有截止时间(作业模式.考试模式 ...

  7. 《计算机网络 自顶向下方法》 第8章 计算机网络中的安全 Part2

    SSL(使 TCP 连接安全) SSL(Secure Socket Layer),即安全套接字层,是对 TCP 的强化 HTTPS 使用 SSL,而 HTTP 不使用 SSL 通过采用机密性.数据完整 ...

  8. 《计算机网络 自顶向下方法》 第3章 运输层 Part2

    待补充完善 TCP 相关基本点 1.面向连接 两个不同主机上的进程在通过 TCP 进行通信之前,必须先通过三次握手来建立 TCP 连接 2.全双工服务 即,如果一台主机上的进程 A 与另一台主机上的进 ...

  9. 《计算机网络 自顶向下方法》 第6章 链路层和局域网 Part2

    待补充完善 Web 页面的请求历程 应用层     报文.主机 运输层     报文段. 网络层     数据报.路由器.IP 地址 链路层     以太网帧.交换机.MAC 地址 步骤 1)到 4) ...

随机推荐

  1. Promethues实战-简易教程系列

    1.监控概述 2.Promethues基础 3.Promethues初体验

  2. 康哲20191114-1 每周例行报告kz404

    此作业的要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/10004 本周PSP  本周进度条  本周折线图  饼状图

  3. 深度学习面试题12:LeNet(手写数字识别)

    目录 神经网络的卷积.池化.拉伸 LeNet网络结构 LeNet在MNIST数据集上应用 参考资料 LeNet是卷积神经网络的祖师爷LeCun在1998年提出,用于解决手写数字识别的视觉任务.自那时起 ...

  4. Linux中进程的几种状态

    linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态. Linux进程状态:R (TASK_RUNNING),可执行状态. 只有在该状 ...

  5. centos7搭建maven私服

    Linux:CentOS7安装maven私服Nexus https://blog.csdn.net/plei_yue/article/details/78616267 搭建nexus3版的maven私 ...

  6. [原][bigemap][globalmapper]通过bigemap下载全球30米DEM高程数据(手动下载)(下载全球高精度dom卫片、影像、等高线、矢量路网、POI、行政边界)

    本文研究了bigemap下载高程数据的方式,但是严重不推荐使用这总手动方式,bigemap这个软件一次只能下载100M以内的高程数据,即使花钱,也不给你提供批量下载dem的方式!也有些其他更好的软件, ...

  7. Vue CLI3和Vue CLI2环境搭建

    关于 Vue CLI 旧版本的安装以及创建项目 1.搭建 vue 的开发环境 ,安装 vue 的脚手架工具 官方命令行工具 npm install --global vue-cli / cnpm in ...

  8. 设计input搜索框提示文字点击消失的效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. java-mybaits-015-mybatis逆向工程最佳实践【基础mybatis-generator、tk.mybatis、mubatis-plus】

    一.概述 三款框架的功能对比 Mybatis-generator 通用Mapper Mybatis-Plus 代码生成器 支持自动生成Model,Mapper,Mapper XML文件 生成方式不够灵 ...

  10. C2678 二进制“>>”: 没有找到接受“std::stringstream”类型的左操作数的运算符(或没有可接受的转换)

    C2678 二进制“>>”: 没有找到接受“std::stringstream”类型的左操作数的运算符(或没有可接受的转换)