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

计算机网络学习笔记——网络层(b站)

目录

网络层概述

网络层提供的两种服务

①面向连接的虚电路服务

②无连接的数据报服务

IPv4

路由选择

路由器转发IP数据报

静态路由选择

动态路由选择

路由信息协议RIP

开放最短路径优先OSPF(Open Shortest Path First)

内部网关协议IGP(如路由信息协议RIP或开放最短路径优先OSPF)

外部网关协议EGP(如边界网关协议BGP)

IPv4数据报首部格式

网际控制报文协议ICMP

虚拟专用网VPN与网络地址转换NAT

虚拟专用网VPN

网络地址转换NAT


网络层概述

网络层主要任务:实现网络互连,进而实现数据报在网络之间的传输

需解决一下问题:

①网络层向运输层提供怎样的服务(可靠传输or不可靠传输)

(不可靠传输丢弃有误码的帧,什么也不做;可靠传输要想办法实现发送端发送什么,接收端就接收什么)

②网络层寻址

③路由选择

网络层提供的两种服务

①面向连接的虚电路服务

可靠通信由网络来保证;必须建立网络层的连接(虚电路VC);双方沿已建立的虚电路发送分组;目的主机地址仅在建立连接阶段使用,之后每个分组首部只需携带一条虚电路编号;如果再使用可靠传输的网络协议,就可以使发送的分组正确到达;通信结束后,需释放虚电路

②无连接的数据报服务

可靠通信由用户主机来保证;不需要建立网络层连接;每个分组可以走不同路径;每个分组必须携带目的主机的完整地址;这种方式传送的分组可能误码、丢失、重复、失序

IPv4

32比特,采用点分十进制表示方法

分类编址的IPv4地址

只有A、B、C类地址可以分配给网络中的主机或路由器的各接口

主机号为全0的是网络地址,主机号为全1的是广播地址,两者都不能分配给主机或路由器的各接口

特殊IPv4地址

0.0.0.0表示本网络上的本主机,只能作为源地址使用

127开头且后面三个字节非全0或全1,用于本地软件环回测试,可以作为源地址、目的地址

255.255.255.255,表示只在本网络上进行广播,只能作为目的地址

从主机号中借用一部分作为子网号

使用子网掩码表示主机号部分被借用了几个比特作为子网号

子网掩码使用连续比特1对应网络号和子网号,使用连续比特0对应主机号

无分类编址

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

使用“斜线记法”或CIDR记法,在IPv4地址后加上斜线“/”,斜线后面写上网络前缀所占比特数

路由聚合

网络前缀越长,地址块越小,路由越具体

路由器查找转发表时发现由多条路由可以选择,则选择网络前缀最长的那条,这样更具体,称为最长前缀匹配

中继器和集线器工作在物理层,不隔离冲突域和广播域

网桥和交换机工作在数据链路层,隔离冲突域,不隔离广播域

路由器工作在网络层,隔离冲突域和广播域

路由选择

路由器转发IP数据报

①检查IP数据报首部是否出错

若出错则丢弃并向源主机发送ICMP差错报告报文,若没出错,则转发

②根据IP数据报的目的地主之在路由表中查找匹配的条目

若找到匹配的条目,则转发给条目中的下一跳,若找不到,则丢弃IP数据报并通告源主机

静态路由选择

用户或管理员使用路由器的相关命令给路由器人工配置路由表

不能及时适应网络状态(流量、拓扑等)的变化,一般只在小规模网络中使用

动态路由选择

路由器通过路由选择协议自动获取路由信息,能较好适应网络状态的变化,更适应大规模网络

因特网采用的路由选择协议主要特点

自适应:动态路由选择,能较好适应网络状态变化

分布式:路由器之间交换路由信息

分层次:将整个因特网划分为许多较小自治系统AS(Autonomous System)

路由信息协议RIP

要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录,使用跳数来衡量到达目的网络的距离

路由器到达直连网络的距离为1,到达非直连网络的距离为所经过的路由器数加一,允许一条路径只能包含15各路由器,距离为16时相当于不可达

RIP只适用于小型互联网

RIP认为好的路由就是所通过的路由器数量最少的路由,当到达同一目的网络有多条距离相等的路由时,可以进行等价负载均衡

RIP三个要点①仅和相邻的路由器交换信息②交换的是自己的路由表③周期性交换(如每30秒)

RIP存在坏消息传得慢问题

当网1出现故障

这个时候R1是知道是无法到达的,则其到网1的距离为16,并且为直接交付。
但是R2在收到R1报文之前,即在R2并不知道R1出故障时,发送了原来的报文,1 2 R1。
于是,R1收到R2跟新报文后,误以为可以经过R2到网1,于是更新自己的路由表,1 3 R2,并且将次更新信息发送给R2.
然后R2以后又跟新自己的路由表为1 4 R1, 30s后,又把这个信息发送给R1.
……………………
一直循环,直到距离等于16为止,才知道不可达

开放最短路径优先OSPF(Open Shortest Path First)

基于链路状态,不同于RIP(基于距离向量)

(链路状态指本路由器和哪些路由器相邻,以及相应链路代价)

采用SPF算法计算路由

OSPF相邻路由器之间通过问候分组(Hello),建立和维护邻居关系

Hello分组封装在IP数据报中,发送组播地址224.0.0.5;发送周期为10秒;40秒未收到来自邻居路由器的Hello分组,则认为该邻居路由器不可达

使用OSPF的每个路由器都会产生链路状态通告LSA(Link State Advertisement)

LSA包含①直连网络的链路状态信息②邻居路由器的链路状态信息

LSA被封装在链路状态更新分组LSU中,采用洪泛法发送

每个路由器都有一个链路状态数据库LSDB,用于存储LSA

通过路由器洪泛发送封装有自己LSA的LSU分组,最终各路由器的LSDB到达一致

OSPF的五种分组类型

①问候分组:用来发现和维护邻居路由器的可达性

②数据库描述分组:向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息

③链路状态请求分组:向邻居路由器请求发送某些链路状态项目的详细信息

④链路状态更新分组:路由器使用这种分组将链路状态进行洪泛发送,即用洪泛法对全网更新链路状态

⑤链路状态确认分组:对链路状态更新分组的确认分组

OSPF在多点接入网络中中路由器邻居关系的建立

选举指定路由器DR(designated router)和备用的指定路由器BDR(backup designated router),

所有的非DR/BDR只有DR/BDR建立邻居关系,非DR/BDR之间通过DR/BDR交换信息

为了使OSPF能够用于规模很大的网络,把OSPF把一个自治系统再划分为若干个更小的范围,叫做区域(Area)

内部网关协议IGP(如路由信息协议RIP或开放最短路径优先OSPF)

设法使分组在一个自治系统内尽可能有效地从源网络传输到目的网络;无需考虑自治系统外部其他方面的内容

外部网关协议EGP(如边界网关协议BGP)

在不同自治系统内度量路由的代价(距离、带宽、费用等)可能不同,所以自治系统之间的路由选择必须考虑相关政策(政治、经济、安全等),BGP只能力求寻找一条能够到达且网络比较好的路由,而非最佳路由

在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”,不同自治系统建立TCP连接,发言人交换路由信息

使用TCP连接交换路由信息的两个BGP发言人彼此称为对方的邻站或对等站

BGP发言人交换网络可达性信息(要到达某个网络所要经过的一系列自治系统)后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由。也就是构造出树形结构、不存在回路的自治系统连通图。

IPv4数据报首部格式

版本:占4比特,表示IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)

首部长度:占4比特,表示IP数据报首部的长度。该字段的取值以4字节为单位。最小十进制取值为5,表示IP数据报首部只有20字节固定部分;最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分

可选字段:长度从1个字节到40个字节不等。用来支持排错、测量及安全等措施可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用。

填充字段:确保首部长度为4字节的整数倍。使用全0进行填充。

区分服务:占8比特,利用该字段的不同数值可提供不同等级的服务质量。只有在使用区分服务时,该字段才起作用。一般情况下都不使用该字段。

总长度:占16比特,表示IP数据报的总长度(首部+数据载荷)最大取值为十进制的65535,以字节为单位。

标识、标志、片偏移三个字段共同用于IP数据报分片

标识:占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。

标志:占3比特,各比特含义如下:
DF位:1表示不允许分片、0表示允许分片

MF位:1表示“后面还有分片”、0表示“这是最后一个分片”
保留位:必须为0

片偏移:占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位。片偏移以8个字节为单位。

协议:占8比特,指明IPv4数据报的数据部分是何种协议数据单元,常用的一些协议和相应的协议字段值如下

首部检验和:占16比特,用来检测首部在传输过程中是否出现差错。IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志、片偏移等)的取值可能发生变化。
(由于IP层本身并不提供可靠传输的服务,并且计算首部校验和是一项耗时的操作,因此在IPv6中路由器不再计算首部校验和,从而更快转发IP数据报。)

源IP地址和目的IP地址:各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址

举例对IPv4数据报进行分片

数据报分片例题

网际控制报文协议ICMP

(Internet Control Message Protocol)

目的:为了更有效地转发IP数据报和提高交付成功的机会

ICMP报文被封装在IP数据报中发送,主机或路由器使用ICMP来发送差错报告报文询问报文


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

①终点不可达

当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误。
②源点抑制
③时间超过

若生存时间TTL0,除丢奔该IP数据报外,还要向源点发送时间超过报文门

另外,当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文。
④参数问题

当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。
⑤改变路由(重定向)

路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。

以下情况不应发送ICMP差错报告报文:
① 对ICMP差错报告报文不再发送ICMP差错报告报文
② 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文

③对具有多播地址的数据报都不发送ICMP差错报告报文
④对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文

常用的ICMP询问报文有以下两种:
①回送请求和回答
ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达及了解其有关状态。
②时间戳请求和回答
ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。这种询问报文用来进行时钟同步和测量时间

虚拟专用网VPN与网络地址转换NAT

虚拟专用网VPN

VPN(Virtual Private Network):利用公用的因特网作为本机构各专用网之间的通信载体。由于IPv4地址的紧缺,一个机构能够申请到的IPv4地址数量往往远小于本机构所拥有的主机数量。因此,虚拟专用网中的各主机所分配的地址应该是本机构可自由分配的专用地址而不是需要申请的、在因特网上使用的公有地址

专用(私有)地址:

10.0.0.0~10.255.255.255(10/8地址块)

172.16.0.0~172.31.255.255(172.16/12地址块)

192.168.0.0~192.168.255.255(192.168/16地址块)

如上图所示,同一机构内不同部门的内部网络所构成的虚拟专用网VPN又称为内联网VPN

有时一个机构的VPN需要有某些外部机构(通常就是合作伙伴)参加进来。这样的VPN就称为外联网VPN

在外地工作的员工需要访问公司内部的专用网络时,只要在任何地点接入到因特网,运行驻留在员工PC中的VPN软件,在员工的PC和公司的主机之间建立VPN隧道,即可访问专用网络中的资源。这种VPN称为远程接入VPN.

网络地址转换NAT

NAT(Network Address Translation):能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。

再次缓解了IPv4地址空间即将耗尽的问题

该转换方法存在一个问题:如果NAT路由器具有N个全球IP地址,那么至多只能有N个内网主机能够同时和因特网上的主机通信。

于是引入NAPT(Network Address and Port Translation):

将端口号和IP地址一起进行转换的技术叫作网络地址与端口号转换,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。

NAT中外网主机不可以首先发起通信

收到来自外网的IP数据报后在转换表中找不到相应的记录

相关文章:

  • 关于ida如何进行远程linux调试(详解)
  • Gradio 案例——将文本文件转为词云图
  • 科研数据分析常见问题
  • CSPM.pdf
  • 中国Scada市场现状,国内厂家已占领65%
  • springboot 集成minio 实现文件上传
  • 特别实用的8个机器学习算法总结!建议收藏,反复观看!
  • C++操纵符用法
  • 《庆余年算法番外篇》:范闲通过最短路径算法在阻止黑骑截杀林相
  • 【Linux】在Windows环境下配置两台Linux机器的文件互传
  • simulink基础学习笔记
  • 零基础学Java第二十七天之前端-HTML5详解
  • Golang编程语言:深度探索与应用实践
  • 521源码-源码下载-个人网盘源码2024最新web网盘系统源码一键安装版源码分享
  • [每周一更]-(第99期):MySQL的索引为什么用B+树?
  • [译] 怎样写一个基础的编译器
  • 10个最佳ES6特性 ES7与ES8的特性
  • Angular 4.x 动态创建组件
  • CSS 提示工具(Tooltip)
  • Docker入门(二) - Dockerfile
  • FineReport中如何实现自动滚屏效果
  • Idea+maven+scala构建包并在spark on yarn 运行
  • javascript 哈希表
  • JavaScript中的对象个人分享
  • npx命令介绍
  • python大佬养成计划----difflib模块
  • Redis字符串类型内部编码剖析
  • SQLServer之创建显式事务
  • supervisor 永不挂掉的进程 安装以及使用
  • Terraform入门 - 3. 变更基础设施
  • 包装类对象
  • 对超线程几个不同角度的解释
  • 关于字符编码你应该知道的事情
  • 批量截取pdf文件
  • 思维导图—你不知道的JavaScript中卷
  • 新手搭建网站的主要流程
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 责任链模式的两种实现
  • #define,static,const,三种常量的区别
  • (03)光刻——半导体电路的绘制
  • (12)Linux 常见的三种进程状态
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (十八)SpringBoot之发送QQ邮件
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • .NET CLR基本术语
  • .Net IE10 _doPostBack 未定义
  • .NET MAUI Sqlite程序应用-数据库配置(一)
  • .Net 基于MiniExcel的导入功能接口示例
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .so文件(linux系统)
  • @拔赤:Web前端开发十日谈
  • [ SNOI 2013 ] Quare
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [100天算法】-实现 strStr()(day 52)
  • [AIGC 大数据基础]hive浅谈