当前位置: 首页 > news >正文

计算机网络第四章——网络层

网络层的主要任务就是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层的传输单位是数据报

网络层的主要功能:

功能一:路由选择与分组转换

功能二:异构网络互联

功能三:拥塞控制

一.SDN

路由器的功能:转发和路由选择

转发:达到路由器输入链路之一的数据报然后转发到该路由器的输出链路之一。

路由选择:控制数据报沿着从源主机到目的主机的端到端路径中路由器之间的路由方式。

两大平面:数据平面和控制平面

数据平面:数据平面对于数据处理过程中各种具体处理转发过程。

控制屏幕:控制平面用于控制和管理网络协议的运行,比如:OSPF协议,RIP协议,BGP协议

1.数据平面

数据平面对应的就是路由器的转发功能。

2.控制平面

传统方法:也叫每路由器法,路由选择算法运行在每个路由器中,并且每台路由器都包含转发和路由选择两种功能。

SDN(软件定义网络)方法:将控制平面从路由器上物理分离,路由器仅仅只实现转发,通过远程控制器来计算和转发转发表以供每台路由器使用。

控制平面中的路由选择控制器

在传统方法中,路由选择处理器负责执行控制平面的功能,而在SDN方法中,因为控制平面被物理分离出去了,所以无法负责执行控制平面,而是负责与远程控制器进行通信

3.SDN控制器的三个层次

SDN控制器和网络控制应用程序

SDN控制器的三个层次分别是:对于网络控制应用程序的接口、网络范围状态管理层、通信层。

例题:

总结:

二.IP数据报

1.IP数据报格式

首部长度最小是5,因为首部长度的单位是4B,最小就是20B,正好是首部中固定部分的大小,首部中的可变部分可以有,也可以没有,因此最小是5。

协议部分占8位,指的是传输层传下来的数据部分所含的协议,具体如下:

2.IP数据报分片

我们先来复习一下数据链路层最大传输单元MTU:MTU指数据链路层的数据帧可封装的数据的上限,以太网的MTU是1500b

也就是数据链路层中数据帧的数据部分不能超过MTU,那如果所传送的数据报长度超过了数据链路的MTU,这怎么办呢?这就是现在介绍的IP数据报分片。

IP数据报分片的目的就是为了解决IP数据报长度大于了数据链路层的MTU的问题

在上一小节介绍IP数据报格式时,并没有介绍固定部分中的标识、标志和片偏移三个字段的意义,他们主要就是为了控制IP数据报分片以及分片后的重组问题。

例题:

该例题中,需要把IP数据报分片成不超过1420B的数据报分片,注意:每一片分片都会添加一个相同的首部,因此分成了长度为1420B,1420B以及1020B的三片IP数据报分片,因三个报片都是原IP数据报的,所以他们的标识字段值是相同的(12345是随便写的),对于DF字段,三个报片都是允许分片,因为它们自己就是分片得来的,所以都是0(表示允许分片),对于MF字段,它表示该报片后面还有没有报片,很显然,报片1后面有报片2,报片2后面有报片3,报片3后面没有报片,所有分别赋值1,1,0。

三.IPv4地址

IP地址:IP地址表面了当前主机是在哪个网络,哪个主机,就跟人的身份证一样。是全世界唯一的32位标识符,由网络号和主机号组成。(一般用点分十进制表示)

1.分类的IP地址

2.特殊的IP地址

3.私有IP地址

4.常用各类网络可用情况

A类网络中,网络号有7位可变,但是网络号全0表示本网络的意思,如果是127表示环回地址,这两种都是特殊的IP地址,因此最大可用网络为2^7-2,同理,主机号有24位,但是要减去全0和全1,都是属于特殊的IP地址

B类网络也是与A类同理,这里最大网络数应该是2^14,因为现在128.0的网络也可以指派了,最大主机数也是要减去全0和全1的特色IP地址。

C类网络中,最大网络数应该是2^21,因为现在的128.0.0也可以指派。

四.网络地址转换NAT

在前面介绍了私有IP地址,如图:

私有IP地址也叫本地IP地址,一般用于本地网或者专用网,路由器对于这种私有IP地址的数据报一律不进行转发。那这种IP地址又该怎么样与外界互联网或者因特网建立通信呢?这就是现在介绍的网络地址转换NAT!

网络地址转换NAT:在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。

五.子网划分和子网掩码

分类IP地址的缺点:①IP地址空间利用率有时会很低。②二级IP地址不够灵活

例如:一个企业要申请多个网络IP地址,但是如果使用B类网络,所连的主机并不会有那么多,这样就会有大量B类网络IP地址被浪费。并且要申请多个网络IP地址,需要向ISP进行申请,这显然很麻烦,所以,有没有什么办法可以灵活增加单位的网络而不用去向ISP申请?这个办法就是通过子网划分。

1.子网划分

子网划分就是对两级IP地址修改成三级IP地址,对主机号部分修改成子网号加上主机号,子网号能否全0全1看情况,主机号不能全0全1。

划分子网后,对外仍表现为一个网络,即本单位外的网络看不见本单位内的子网划分。

由于外部并不知道内部单位网络是否进行了子网划分,因此对于外部网络的主机想要发送IP数据报到内部单位主机,它只知道发送给哪一个路由器,但是传给哪台主机呢?这就要借助子网掩码了!

2.子网掩码

子网掩码就是主机号位数部分全部是0,网络部分全部为1.子网掩码与IP地址相与,可以得到子网网络地址

例题:

六.无分类编址(CIDR)

1.构成超网

构成超网:将多个子网聚合成一个较大的子网,叫做构成超网,或者叫路由聚合。

方法:将网络前缀缩短(所有网络地址取交集

例题:

2.最长前缀匹配

使用CIDR时,查找路由表可能得到几个匹配结果(与网络掩码按位相与),应选择最长网络前缀的路由,前缀越长,地址块越小,路由越具体。

例题:

七.ARP协议

发送端发送数据时,从应用层开始,到传输层会根据发送数据的大小来对数据进行分段,即报文段,运输层将各报文段交付给网络层,网络层会给各报文段加上发送主机IP地址IP1和目的IP地址IP2,IP1是自己的IP地址,很好获得,而目的IP地址IP2的获取与传输层有关,之后交付给数据链路层,当然,还有根据数据链路层的MTU来决定是否进行分片,在数据链路层,会进行封装,加上主机MAC地址和目的MAC地址作为帧首部,尾部加上FCS形成帧。那目的MAC地址应该怎么填入呢?这就涉及到ARP协议了。

ARP高速缓存:IP地址与MAC地址的映射。

一个网段内发送数据的过程

如果ARP高速缓存当中没有目的IP地址和目的MAC地址的映射,那么会使用ARP协议,即源主机会发送广播ARP请求分组并等待目的主机单播ARP响应分组

不同网段内发送数据的过程:

如果发送目的主机不在本网段内,并且ARP高速缓存中没有映射,那么就会向默认网关发送广播ARP分组。

ARP协议总结如下

例题:

八.DHCP协议

主要內容:

九.ICMP协议

1.ICMP差错报告报文

ICMP差错报告报文有以下五种:

2.形成ICMP差错报告报文的过程:

3.不发送ICMP差错报文情况

2.ICMP询问报文

3.ICMP应用

十.路由算法与路由协议

1.路由算法

路由算法‌是指在计算机网络中,根据网络拓扑结构和路由策略,计算出数据包从源节点到目的节点的最佳路径的算法。

路由算法的分类

2.分层次的路由选择协议

采取分层次的路由选择协议的原因

自治系统AS:一个有权自主地决定在本系统中应采用各种路由协议的小型单位。

十一.IPv6

为什么要有IPv6?

32位的IPv4地址空间已分配殆尽,而CIDR和NAT并不能从根本上解决问题,因此就有了IPv6。简而言之,IPv6就是为了从根本上解决地址耗尽问题。

1.IPv6数据报格式


2.IPv6和IPv4

3.IPv6地址表示形式

4.IPv6基本地址类型

IPv6主要有单播地址、多播地址和任播地址。

十二.RIP协议与距离向量算法

1.RIP协议

RIP协议要求网络中每一台路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录。只适用小互联网。

距离:通常指跳数,从源端口到目的端口,经过一个路由器跳数+1,距离为16,表示网络不可达。

1.距离向量算法

例题:

3.RIP协议的报文格式

RIP协议特点:好消息传得快,坏消息传得慢。

十三.OSPF协议及链路状态算法

1.OSPF协议

2.链路状态路由算法

3.OSPF区域(了解)

OSPF特点:

十四.BGP协议

BGP协议:

BGP协议特点:

三种路由协议(RIP、OSPF、BGP)比较:

十五.IP组播

IP数据报的三种传输方式:

举个例子,如果有90台主机需要接收视频节目,那么源站点就会复制90份视频数据通过路由分发给各主机,而组播(多播),只需要准备一个,到路由器需要分路传输就会进行复制,提高了数据传送速率。

1.IP组播地址

组播地址范围为:224.0.0.0——239.255.255.255(D类地址),一个D类地址表示一个组播组。只能用作分组的目标地址。源地址总是单播地址。

2.IGMP协议

IGMP工作的两个阶段:

2.组播路由选择协议

组播路由选择协议的目的是找出以源主机为根节点的组播转发树。

组播路由选择协议常用的三种算法:

十六.移动IP

移动IP通信过程

十七.网络层设备

路由器功能:转发和路由选择

三层设备的区别:

路由表和路由转发

相关文章:

  • mtk平台编译出来的cust.dtsi有什么作用
  • JVM频繁Full GC问题的排查与解决方案
  • SpringBoot使用validation进行自参数校验
  • 未来数字世界相关技术:数字人、元宇宙、全息显示
  • 2024新动态:低代码开发占领新常态市场
  • 智能抠图怎么使用?4个快速消除图片背景的小技巧
  • FPGA随记-二进制转格雷码
  • pytorch 加载模型参数后 如何测试数据,应用模型预测数据,然后连续变量转换成 list 或者numpy.array padans并保存到csv文件中
  • 单链表的实现(C语言)
  • Android 去掉SIM卡插拔出现的重启弹窗提示
  • STM32 的 SDIO 接口(基于STM32F429HAL库)
  • 【xhs截流软件】爬取小红书关键词笔记下的筛选评论
  • ComfyUI 节点、插件的基本指南
  • PHP程序如何实现限制一台电脑登录?
  • 024.PL-SQL进阶—游标
  • JavaScript-如何实现克隆(clone)函数
  • 【comparator, comparable】小总结
  • 4个实用的微服务测试策略
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • JavaScript创建对象的四种方式
  • Java的Interrupt与线程中断
  • Java精华积累:初学者都应该搞懂的问题
  • JDK9: 集成 Jshell 和 Maven 项目.
  • React 快速上手 - 07 前端路由 react-router
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 高性能JavaScript阅读简记(三)
  • 主流的CSS水平和垂直居中技术大全
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #、%和$符号在OGNL表达式中经常出现
  • #pragma once与条件编译
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • $refs 、$nextTic、动态组件、name的使用
  • (1)Jupyter Notebook 下载及安装
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (Java入门)抽象类,接口,内部类
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (三)uboot源码分析
  • (算法)硬币问题
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • .Net FrameWork总结
  • .net程序集学习心得
  • .NET是什么
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @RequestParam,@RequestBody和@PathVariable 区别
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [@Controller]4 详解@ModelAttribute
  • [AIGC] Redis基础命令集详细介绍
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt