计算机网络学习笔记——网络层(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数据报后在转换表中找不到相应的记录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/341467.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络编程:回顾网络通信

1.数据从应用层到数据链路层的本质 数据的封装: 用户在用户级缓冲区输入数据,经过应用层协议进行序列化成字节流数据,拷贝到传输层的缓冲区。而操作系统在传输层维护了sk_buff这一个结构体,然后data指针指向这段数据的开头&#x…

【C++面试50题】

以下是针对C程序员面试可能遇到的一些问题,涵盖了从基础语法、面向对象、STL、内存管理、模板、异常处理、并发编程等多个方面。 ### 基础概念与语法 1. C与C的主要区别是什么? 2. 什么是构造函数和析构函数?它们何时被调用? 3. 什…

xml 取值错误 #{} boolean 一直为 false

取值时 #{param.msgStatus} 一直是false&#xff0c;java代码里面显示true。 <select id"findPageOaReading" resultType"com.focusin.data.office.func.dto.ProcessMessageInfoDTO">select i.*, t.template_name procdefNamefrom process_message_…

常见的Web漏洞——CORS

渗透做了多年的朋友都知道&#xff0c;大洞小洞都是漏洞。因此也学习、沉淀一下以前没重视的漏洞。 简介 CORS&#xff08;Cross-Origin Resource Sharing&#xff0c;跨源资源共享&#xff09;是一种由Web浏览器实现的安全策略&#xff0c;用于控制一个Web页面&#xff08;服…

Unity DOTS技术(五)Archetype,Chunk,NativeArray

文章目录 一.Chunk和Archetype什么是Chunk?什么是ArchType 二.Archetype创建1.创建实体2.创建并添加组件3.批量创建 三.多线程数组NativeArray 本次介绍的内容如下: 一.Chunk和Archetype 什么是Chunk? Chunk是一个空间,ECS系统会将相同类型的实体放在Chunk中.当一个Chunk…

机器学习18个核心算法模型

1. 线性回归&#xff08;Linear Regression&#xff09; 用于建立自变量&#xff08;特征&#xff09;和因变量&#xff08;目标&#xff09;之间的线性关系。 核心公式&#xff1a; 简单线性回归的公式为&#xff1a; , 其中 是预测值&#xff0c; 是截距&#xff0c; 是斜…

leetcode第867题:转置矩阵

matrix[i][j]需要放在转置矩阵的(j,i)位置 public class Solution {public int[][] Transpose(int[][] matrix) {int rows matrix.Length; int columns matrix[0].Length; int[][] array2 new int[columns][];// 初始化内部数组&#xff08;列数&#xff09;for (int i 0…

MySQL数据库常见工具的基础使用_1

在上一篇文章中提到了对MySQL数据库进行操作的一些常见工具 mysqlcheck mysqlcheck是一个用于数据库表的检查&#xff0c;修复&#xff0c;分析和优化的一个客户端程序 分析的作用是查看表的关键字分布,能够让sql生成正确的执行计划(支持InnoDB,MyISAM,NDB)检查的作用是检查…

Linux系统编程(七)网络编程TCP、UDP

本文目录 一、基础知识点1. IP地址2. 端口3. 域名4. 网络协议类型5. IP协议类型6. 字节序7. socket套接字 二、TCP 常用API1. socket套接字描述符2. bind套接字绑定3. listen设置最大排队数4. accept接收客户端请求5. connect连接服务端6. read读取数据7. write发送数据 三、UD…

240.搜索二维矩阵

题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,…

【AI大模型】基于Langchain和Openai借口实现英文翻译中文应用

&#x1f680; 作者 &#xff1a;“大数据小禅” &#x1f680; 文章简介 &#xff1a;本专栏后续将持续更新大模型相关文章&#xff0c;从开发到微调到应用&#xff0c;需要下载好的模型包可私。 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 目…

CSPM.pdf

PDF转图片 归档&#xff1a;

C盘清理攻略!!!详细步骤

c盘爆满怎么清&#xff0c;往下看 一、清缓存文件键盘winr打开运行窗口&#xff0c;输入&#xff1a;%temp% 二、清理安装包文件键盘winr打开运行窗口&#xff0c;输入&#xff1a;softwaredistribution 三、清理软件解压临时文件键盘winr打开运行窗口&#xff0c;输入&#xf…

【C语言】结构体(及位段)

你好&#xff01;感谢支持孔乙己的新作&#xff0c;本文就结构体与大家分析我的思路。 希望能大佬们多多纠正及支持 &#xff01;&#xff01;&#xff01; 个人主页&#xff1a;爱摸鱼的孔乙己-CSDN博客 欢迎 互粉哦&#x1f648;&#x1f648;&#xff01; 目录 1. 声明结构…

SQL注入-时间盲注

SQL时间盲注&#xff08;Time-based Blind SQL Injection&#xff09;&#xff0c;又叫延时注入&#xff0c;是一种SQL注入攻击技术&#xff0c;用于在无法直接获取查询结果或查看响应内容变化的情况下&#xff0c;通过引入时间延迟来推断数据库的信息&#xff1b;时间盲注依赖…

tinyrenderer-切线空间法线贴图

法线贴图 法线贴图分两种&#xff0c;一种是模型空间中的&#xff0c;一种是切线空间中的 模型空间中的法线贴图的rgb代表着每个渲染像素法线的xyz&#xff0c;与顶点坐标处于一个空间&#xff0c;图片是五颜六色的。 切线空间中的法线贴图的rgb同样对应xyz&#xff0c;是切线…

可视化数据科学平台在信贷领域应用系列四:决策树策略挖掘

信贷行业的风控策略挖掘是一个综合过程&#xff0c;需要综合考虑风控规则分析结果、效果评估、线上实时监测和业务管理需求等多个方面&#xff0c;以发现和制定有效的信贷风险管理策略。这些策略可能涉及贷款审批标准的调整、贷款利率的制定、贷款额度的设定等&#xff0c;在贷…

低代码开发平台一般都有哪些功能和模块?

在当今快速变化的数字化时代&#xff0c;企业对于高效、灵活且经济的软件开发解决方案的需求愈发迫切。低代码开发平台应运而生&#xff0c;成为众多企业实现数字化转型的首选工具。本文将详细探讨低代码开发平台一般具备的主要功能和模块&#xff0c;以及它们如何助力企业提升…

Dinky MySQLCDC 整库同步到 Doris

资源&#xff1a;flink 1.17.0、dinky 1.0.2、doris-2.0.1-rc04 问题&#xff1a;Cannot deserialize value of type int from String &#xff0c;detailMessageunknowndatabases &#xff0c;not a valid int value 2024-05-29 16:52:20.136 ERROR org.apache.doris.flink.…

AI论文工具推荐

AI 在学术界的使用情况也比较疯狂&#xff0c;特别是一些美国大学&#xff0c;用 AI 来辅助阅读文献以及辅助写论文的越来越多&#xff0c;毕竟确实可以提高写作效率&#xff0c;特别是在文献综述和初稿生成方面。 但在科研界其实&#xff0c;发现看论文的速度已经赶不上发论文…