计算机网络入门基础篇——网络层

Posted 敲代码的xiaolang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络入门基础篇——网络层相关的知识,希望对你有一定的参考价值。

参考视频教程:计算机网络微课堂.

文章目录


一、网络层概述

网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。

因特网是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈。
由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层。

二、网络层提供的两种服务

1.面向连接的虚电路服务

2.无连接的数据报服务

3.比较

三、地址概述

1.IPV4地址概述

IPv4地址就是给因特网上的每一台主机(或路由器)的每一个接口,分配一个在全世界范围内是唯一的32比特的标识符

IPV4表示的是点分十进制表示方法:


2.分类编址的IPV4地址

分为A,B,C,D,E几类

A类地址

1.最小网络号0,保留不指派
2.第一个可指派的网络号为1,网络地址为1.0.0.0
3.最大网络号127,作为本地环回测试地址,不指派
4.最小的本地环回测试地址为127.0.0.1
5.最大的本地环回测试地址为127.255.255.254
6.最后一个可指派的网络号为126,网络地址为126.0.0.0


可指派的网络数量为 2^(8-1) - 2 = 126
(减2的原因是除去最小网络号0和最大网络号127)
每个网络中可分配的IP地址数量为2^(24) - 2 = 16777214 (减2的原因是除去主机号为全0的网络地址和全1的广播地址)

B类地址

1.最小网络号也是第一个可指派的网络号128.0
2.网络地址为128.0.0.0
3.最大网络号也是最后一个可指派的网络号191.255
4.网络地址为191.255.0.0


可指派的网络数量为2^(16-2) = 16384
每个网络中可分配的IP地址数量为2^16 - 2 = 65534 (减2的原因是除去主机号为全0的网络地址和全1的广播地址)

C类地址

1.最小网络号也是第一个可指派的网络号192.0.0
2.网络地址为192.0.0.0
3.最大网络号也是最后一个可指派的网络号223.255.255
4.网络地址为223.255.255.0


可指派的网络数量为2^(24-3) = 2097152
每个网络中可分配的IP地址数量为2^8 - 2 = 254 (减2的原因是除去主机号为全0的网络地址和全1的广播地址)

栗子:

练习:

3.划分子网的IPV4地址

32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号。
子网掩码使用连续的比特1来对应网络号和子网号。
子网掩码使用连续的比特0来对应主机号。
将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址。

练习



默认的子网掩码

小结

4.无分类编址的IPV4地址

(1)定长的子网掩码

1.使用同一个子网掩码来划分子网。
2.每个子网所分配的IP地址数量相同,造成IP地址的浪费。

栗子:


(2)变长的子网掩码

1.使用不同的子网掩码来划分子网
2.每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费。

栗子:

(3)小结

四、IP数据报的发送和转发过程

IP数据报的发送和转发包含:

主机发送IP数据报
路由器转发IP数据报

这里忽略ARP协议获取目的主机或路由器MAC地址的过程,以及以太网交换机自学习和转发帧的过程。

由上图可以知道同一个网络中的主机可以直接通信,这属于直接交付;不同网络间的主机,需要路由器中转,这属于间接交付。

那么就会有一个问题:
源主机如何判断目的主机与自己处于同一个网络中?

由上图可以知道:C要给F发送数据报,就知道F的IP地址,C将F的IP地址与自己的子网掩码相与,得到目的网络地址,如果两个网络地址不相等,C就知道F与自己不在同一个网络,他们之间的通信属于间接交付

紧接着又会有一个问题:C将数据报传输给路由器,由路由器转发给F,那么C又是如何知道,应该将数据报交给哪个路由器转发呢?

用户为了让本网络中的主机与其他网络中的主机相互通信,就必须给其指定本网络中的一个路由器,由该路由器帮忙转发,所指定的路由器就是默认网关。在本例中,可以将路由器与主机直连的接口地址作为主机的默认网关

假设A与D通信,A将数据报传输给默认网关,那么路由器收到数据报后,如何转发呢?

检差IP数据报首部是否出错,若出错,则直接丢弃该IP数据报并通告源主机;若没有出错,则进行转发。
根据IP数据报的目的地址在路由表中查找匹配的条目,如果找到,则转发给条目中指示的下一跳,若没有找到,则丢弃并告知源主机。


栗子:


小结

五、静态路由配置及其可能产生的路由环路问题

静态路由配置是指用户或管理员使用路由器的相关命令给路由器人工配置路由表,这种方式简单、开销小,但不能及时适应网路状态的变化,一般只在小规模网络中使用。而静态路由配置也可能导致产生路由环路的错误。

路由器R2要发送数据报给192.168.1.0/24,但查找路由表没有发现目的网络的相关信息。为了解决这种问题,可以手动配置一条路由记录,目的网络填入192.168.1.0/24,下一跳填入路由器R1的接口1。

如果R1要转发IP数据报到因特网中的某一个网络,由于因特网中的网络众多,如果挨个给每个网络都配置一条路由条目是不现实的,因此我们添加一条默认路由记录,其CIDR形式为0.0.0.0/0,下一跳为R2的端口0。

出于安全或其他方面的考虑,我们也可以设置特定主机路由。比如对于IP地址为192.168.2.1的主机,R1需要转发数据报给它时,可以在自己的路由表中添加特定主机路由记录,目的网络为目的主机的IP地址,下一跳为R2的端口0地址。在所有的路由记录中,特定主机路由的网络前缀最长,默认路由最短,当有多条路由可选时,最长前缀路由优先。

如果在R2的路由表中出现了设置错误,原本192.168.1.0/24网络的下一跳应当是R1的接口1,却错误配置成了R3的接口0。那么当发送数据报时,就会先发送到R3的端口0,查找R3的路由表,发现目的地址对应的下一跳为R2的端口1,又进行了转发后,就形成了一个路由环路。
为了解决这种问题,在IP数据报首部设置生存时间TTL字段,数据报进入路由器后,TTL的值减一,如果TTL的值等于0,数据报会被丢弃。


在R2的路由表中设置了一条聚合路由,其是将对于R2来说下一跳相同的两个网络选取共同前缀进行聚合,得到聚合网络192.168.0.0/22。

聚合路由中其实有两个不存在的网络192.168.0.0/24和192.168.3.0/24,当R2要发送数据报到192.168.3.0/24,数据报会到达R1的接口1,查找R1的路由表,没有该网络的路由,就会按默认路由转发回R2的接口0。

为了解决这种问题,在R2的路由表中设置两条黑洞路由,当数据报的目的地址为黑洞路由的目的网络,就会被丢弃而不被转发。同样,如果出现网络故障而导致某个网络无法被联通造成的路由环路,也可以使用这种解决办法。

小结:

六、路由协议

1.路由选择协议概述

路由选择可分为两类:静态路由选择和动态路由选择。

a 、静态路由选择

概念:由人工配置的网络路由,默认路由,特定主机路由,黑洞路由等都属于静态路由。
特点:这种人工配置方式简单,开销小,但不能及时适应网络状态(流量,拓扑)的变化。
适用范围:一般只在小规模网络中采用。

b、动态路由选择

概念:路由器通过路由选择协议自动获取路由信息。
特点:比较复杂 开销比较大 但能较好的适应网络状态的变化。
适用范围:适用于大规模网络。

c、常见的路由选择协议

d、因特网所采用的路由选择协议的特点

1.自适应
动态路由选择 能够较好的适应网络状态的变化。
2.分布式
路由器之间交换路由信息。
3.分层次
将整个因特网划分为许多较小的自治系统AS。

1.自治系统之间的路由选择简称为域间路由选择,使用外部网关协议EGP这个类别的路由选择协议。
2.自治系统内部的路由选择简称为域内路由选择,使用内部网关协议IGP这个类别的路由选择协议。
3.EGP/IGP只是路由选择协议的分类名称,而不是具体的路由选择协议。

e、路由器的基本结构


1.分组部分由三部分构成,输入端口,交换结构,输出端口。
2.信号从某个输入端口接入路由器。
3.物理层将信号转换成比特流送交数据链路层处理。
4.数据链路层从比特流中识别出帧。
5.去掉帧头和帧尾,送至网络层处理。
6.如果是简单的待转发分组,则到转发表中查找,找不到就丢弃,找得到就转发。
7.网络层更新数据分组首段中的值。
8.送交数据链路层封装,封装成帧。
9.给物理层,物理层将其当成比特流转化信号。
10.如果送交网络层的分组是路由器之间交换路由信息的路由报文,则把其交给路由选择处理机,路由选择处理机根据分组内容来更新主机的路由表。

2.路由信息协议RIP的基本原理

路由信息协议RIP是内部网关协议IGP中最先得到广泛使用的协议之一,其相关标准文档为RFC 1058。
RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V。

RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。

路由器到直连网络的距离定义为1。
路由器到非直连网络的距离定义为所经过的路由器数加1。
允许一条路径最多只能包含15个路由器。“ 距离"等于16时相当于不可达。因此,RIP只适用于小型互联网。


RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。


RIP的基本工作过程


例题:

3.开放最短路径优先OSPF的基本工作原理

开放最短路径优先OSPF,是为克服RIP的缺点在1989年开发出来的。

“开放”表明OSPF协议不是受某一家厂商控制,而是公开发表的。
"最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。

OSPF是基于链路状态的,而不像RIP那样是基于距离向量的。
OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路。
OSPF不限制网络规模,更新效率高,收敛速度快。
链路状态是指本路由器都和哪些路由器相邻,以及相应链路的"代价”(cost) 。

“代价”用来表示费用、距离、时延、带宽,等等。这些都由网络管理人员来决定。




4.边界网关协议BGP的基本工作原理


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

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

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

在不同自治系统内,度量路由的“代价”(距离, 带宽,费用等)可能不同。
因此,对于自治系统之间的路由选择,使用“代价"作为度量来寻找最佳路由是不行的。



BGP-4有以下四种报文

OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。
UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的多条路由。
KEEPALIVE(保活)报文:用来周期性地证实邻站的连通性。
NOTIFICATION(通知)报文:用来发送检测到的差错。

例题

七、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比特,用来获得更好的服务。
该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。
1998年,因特网工程任务组IETF把这个字段改名为区分服务。
利用该字段的不同数值可提供不同等级的服务质量。
只有在使用区分服务时,该字段才起作用。一般情况下都不使用该字段。
总长度占16比特,表示IP数据报的总长度(首部+数据载荷)。
最大取值为十进制的65535,以字节为单位。

栗子:






首部检验和

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

源IP地址和目的IP地址

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

八、网际控制报文协议ICMP

为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol)。
主机或路由器使用ICMP来发送差错报告报文和询问报文。
ICMP报文被封装在IP数据报中发送。






以下情况不应发送ICMP差错报告报文:

1.对ICMP差错报告报文不再发送ICMP差错报告报文
2.对第一个分片的数据报的所有后续数据报片都不发送ICMP差错报告报文
3.对具有多播地址的数据报都不发送ICMP差错报告报文
4.对据有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文

常用的ICMP询问报文有:

回送请求和回答:ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文,这种询问报文用来测试目的站是否可达及了解其有关状态。

时间戳请求和回答:ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间,在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒,这种询问报文用来进行时钟同步和测量时间。



原理:
H1想知道到H2要哪些路由器,H1给H2发送ICMP回送请求报文,该报文封装在IP数据报中,TTL设置为1,该IP数据报到达R1后,TTL减1,R1丢弃该数据报,并返回ICMP差错报告报文,H1就知道了到达H2的路径中的第一个路由器。

H1继续发送封装有ICMP回送请求报文的IP数据报,TTL设置为2,到达R2后,R2将TTL减1,TTL=0,R2丢弃该数据报,并返回ICMP差错报告报文,这样H1就知道了到达H2的路径中的第二个路由器。

H1进行发送TTL=3的报文,就找到了H2。

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

虚拟专用网VPN

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

假设使用私有地址的主机(192.168/16)要与使用全球地址的主机通信,需要在专用网的路由器上安装NAR软件(NAT路由器,至少一个有效的全球IP地址),这样所有私有地址的主机要与因特网通信时,都需要将私有地址转换为全球IP地址。


当专用网上的两个主机都发送数据报,路由器的NAT转换表中,就会有两条记录。

这种转换方式存在一个问题:如果NAT路由器具有N个全球IP地址,那么最多有N个内网主机能够同时与因特网通信。

绝大多数的网络都是使用运输层协议TCP或UDP来传输数据,因此可以利用运输层的端口号和IP地址一起进行转换,这样一个全球IP地址就可以使多个拥有本地地址的主机同时与因特网上的主机进行通信,这种将端口号和IP地址一起进行转换的技术叫做网络地址与端口号转换NAPT。

外网主机能否先访问到内网主机?

由外网首先发起通信,在NART路由器中,找不到对应的记录,也就不能找到专用网的目的主机。

文中若有错误,欢迎评论区留言,笔者才疏学浅,希望各位师傅不吝赐教!私信博主可以拿课程配套的PPT

以上是关于计算机网络入门基础篇——网络层的主要内容,如果未能解决你的问题,请参考以下文章

计网网络层首部

计网网络层首部

计算机网络入门基础篇——数据链路层(上)

计算机网络入门基础篇——运输层

计算机网络入门基础篇——运输层

TCP和UDP