- 网络层的主要功能:数据路由
- IP 协议(IP地址、IP报文格式)
- IP协议妆发流程(路由表、转发流程、APR/RAPR协议)
- 控制报文ICMP协议详解(Ping、Traceroute)
- 网络地址转换NAT技术(内网地址、外网地址、端口映射)
- IP地址的子网划分
- 网络层的路由概述
IP 协议
版本:占4位,指的是IP协议的版本(IPv4、IPv6等),通信双方的版本必须一致;
首部位长度:占4位,最大数值为15,表示的是IP首部长度;单位是“32位字”(4个字节),IP首部最大长度为60(15*4)字节;
服务类型:- 占8位,表明IP数据所携带的具体数据是什么协议的,如下:
总长度:占16位,最大数值为65535,表示的是IP数据报总长度(IP首部+IP数据)
标识:-
标志:-
片偏移:-
TTL:占8位,表明IP数据报文在网络中的寿命,每经过一个设备,TTL减1,当TTL=0时,网络设备必须丢弃该报文;(TTL可以让IP数据在有限次传输之后,到达目的机器或被丢弃掉,避免数据在网络中无限的传输而消耗了带宽)
协议:占8位,表明IP数据所携带的具体数据是什么协议的(如:TCP、UDP、OSPF等);
首部校验和:占16位,校验IP首部是否有出错;
源IP地址:-
目的IP地址:-
IP协议的转发流程
路由表
转发流程
ARP协议与RARP协议
路由表
计算机或者路由器都拥有路由表。
ARP协议与RARP协议
ARP(Address Resolution Protocol)地址解析协议
RARP(Reverse Address Resolution Protocol)逆地址解析协议
注意点:
1)ARP/RARP协议为数据链路层协议
2)ARP/RARP协议是直接封装到数据链路层的数据帧里面的
ARP缓存表:
Windows系统下查看ARP缓存命令:
arp -a
Windows系统下计清除看ARP缓存命令:
arp -d
ARP缓存表是ARP协议和RARP协议运行的关键
ARP缓存表缓存了IP地址到硬件地址之间的映射关系
在网络层进行数据转发时,是需要进过数据链路层和物理层来进行传输的。因此在网络层进行数据报转发时,首先需要通过ARP协议将IP地址转化为MAC地址,然后告诉数据链路层目的MAC地址,数据链路层才能进行数据帧的传输。ARP缓存表中的记录并不是永久有效的,有一定的期限
虽然设备的MAC地址是永久不变的,但是设备的IP是可变的,因此IP地址到MAC地址的映射是不唯一的。
转发流程
逐跳(hop-by-hop):
- 数据帧每一跳的MAC地址都在变化;
- IP数据报每一跳的IP地址始终不变;
问:A如何跨设备发送数据到C?
网络层的数据转发流程
- A发出目的地为C的IP数据报,A
查询本机路由表发现下一跳为E
,并将数据报发送给E; - E
查询本机路由表发现下一跳为F
,将数据报发送给F; - F
查询本机路由表发现目的地C直接连接
,将数据报发送给C;
网络层+数据链路层的数据转发流程
A -> E
A发出目的地为C的IP数据报,
查询本机路由表发现下一跳为E
A将IP数据报
交给数据链路层,并告知目的MAC地址(E的MAC地址)
【网络层,IP数据报,ARP缓存表,路由表】
2.1 A查询ARP缓存表,如果ARP缓存表没有IP E 的 MAC地址映射关系
2.2 A将使用ARP协议广播E的IP到所有端口
2.3 A将收到端口返回的数据包,得到IP E 的 MAC地址,并将该映射关系存储到ARP缓存表数据链路层填充
源MAC地址A
和目的MAC地址E
【数据链路层,帧数据,MAC表】数据链路层通过物理层将数据发送给E 【物理层】
E -> F
- E的数据链路层接收到数据帧,
把帧数据交给网络层
- E
查询路由表,发现下一跳为F
...
IP地址的子网划分
分类的IP地址
A类
B类
C类
特殊的网络号
特殊的主机号
划分子网
子网掩码
无分类地址CIDR
ICMP协议
功能
分类
差错报告报文
询问报文
ICMP报文结构
ICMP协议
- 网际控制报文协议(Internet Control Message Protocol)
- 数据在传输中发生错误时,ICMP协议可以报告错误信息或者异常情况,辅助IP协议更好的传输数据。
ICMP报文
- ICMP报文是封装在IP数据报的数据中进行传输的,存储在IP数据报的服务类型(TOS)中,值为1(见图:IP数据格式)
- ICMP有两种类的报文:差错报告报文 和 询问报文
ICMP应用
1)Ping 应用
ping 应用只要使用的是ICMP回送(Echo)请求或应答
的询问报文。
应用:测试网络是否连通
◆ Ping回环地址127.0.0.1(本机地址)
◆ Ping网关地址(路由器默认网关,一般为192.168.0.1或192.168.1.1)
◆ Ping远端地址(如百度地址)
2)Traceroute 应用
Traceroute可以探测IP数据报在网络中走过的路径(路由每一跳的地址);
Traceroute原理:借助ICMP终点不可达
的差错报告报文,和IP数据报TTL当TTL=0时,网络设备必须丢弃该报文
,以此来记录IP数据走过的路径;
应用:
计算机中如何使用Traceroute?tracert + 域名/IP地址,如:tracert github.com
NAT技术
内网地址
外网地址
端口映射
网络地址转换NAT技术:
- 网络地址转换NAT(Network Address Translation)
- NAT技术用于多个主机通过一个公有IP访问互联网的私有网络中
(NAT技术在网络设备中通过维护一个映射表,通过映射表可以将外部地址转化为内部地址) - NAT减缓了IP地址的消耗,但是增加了网络通信的复杂度
IP地址有两类:
- 内网地址:
内部机构使用
和避免与外网地址
- 外网地址:
全球范围使用
和全球公网唯一
NAT技术产生原因:
IPv4最多只有2^23个地址,现阶段不够用。所有我们将IP地址分为 内网地址 和 外网地址,不同的机构中内部可以使用相同的IP地址,不会冲突,而在连接外部时则使用全球公网唯一的外网地址,NAT做的就是内网地址和外网地址的切换和识别。
解析:
NAT技术发生在本地路由器中,主要功能就是把内网的IP地址,转化成外网的IP地址,来进行外部的通信;并且在接收到数据之后,再把外网的IP地址映射成内网的IP地址转发到具体的某个设备里去。
因此,网络地址转换虽然增加了网络通信的复杂度,但是减缓了IP地址的消耗。
网络层的路由概述
路由表是怎么来的?
路由表更新问题
路由算法
自治系统(AS)
自治系统(AS)
- AS(Autonomous System 自治系统)
- (处于一个管理机构下的网络设备群。AS内部网络自行管理,对外提供一个或者多个出/入口);
- 内部网关协议(自治系统内部路由的协议称):RIP协议、OSPF协议;
- 外部网关协议(自治系统外部路由的协议称为):BGP;
网络层相关问答
1. 什么是 IP 地址,IP 地址有什么特征?IP 地址和 MAC 地址有什么区别和联系?
IP 地址是唯一标记互联网中计算机的标识,IP 地址共占用 4 个字节,使用点分十进制表示。
IP 地址和 MAC 地址都是一种标识,IP 地址标记网络中的计算机,MAC 地址标记网络硬件设备。
2. IP 报文由 IP 头部和 IP 数据两个部分组成,IP 头部一般占用多少个字节?
IP 头部一般占用 20 个字节。
3. 请简述 IP 头部包含哪些数据?
略
4. IP 头部的 TTL 数据有什么作用?
TTL 占用一个字节,TTL 表示 IP 数据包在网络中的寿命,当 TTL 为 0 时,网络设备将丢弃这个报文。
5. 网络层是怎么界定区分一个 IP 报文的?
IP 协议头部有个字段为报文总长度,占用 16 个比特位,网络层根据这个字段划分报文。
6. 路由表是网络层重要的数据结构,路由表有什么作用?
路由表存储着目的地址和下一跳地址的映射关系,路由表是网络层可以正常工作的重要数据结构。
7. ARP 协议有什么作用?如何清理本机的 ARP 缓存?
ARP 协议全称是地址解析协议,即 ARP(Address Resolution Protocol)。ARP 协议可以将 IP 地址翻译成物理地址。
在 Windows 系统下使用 arp -d 命令就可以清楚 arp 缓存。
8. ARP 协议的设计有一定的缺陷,请通过搜索引擎自行搜索了解利用 ARP 漏洞攻击的方法。
略。
9. IP 地址一共 4Bytes,32bits,理论上可以表示多少个 IP?
理论上可以表示 2 的 32 次方个 IP。
10. 为了科学的使用 IP 地址,早期的科学家把 IP 地址划分为 A、B、C 三类 IP 地址,这些 IP 地址有什么特点?
IP 地址可以分为网络号和主机号两个部分。
A 类地址网络号为 8 位,主机号为 24 位;
B 类地址网络号为 16 位,主机号为 16 位;
C 类地址网络号为 24 位,主机号为 8 位。
11. A 类地址理论上可以有多少个子网,每个子网理论上有多少个主机号?
A 类地址网络号为 8 位,其首位为 0,故理论上可以表示 2 的 7 次方个网络,主机号为 24 位,每个子网可以有 2 的 24 次方个主机。
12. 请列举特殊的网络号和特殊的主机号。
主机号全 0、主机号全 1 的 IP 地址为特殊的主机号,不可分配。
13. 如何计算一个 IP 的网络号是什么?
使用子网掩码和 IP 地址进行按位与运算就可得到 IP 地址对应的网络号。
14. 一个网络的掩码是 255.255.255.248,请问这个网络可以连接多少台主机????
这个网络的主机号只有 3 位,最多可以表示 8 个主机,减去全 0、全 1 两个特殊主机号,一共可以连接 6 台主机。
15. 网络地址转换技术 (NAT) 解决了什么问题?
NAT 技术解决网络 IP 地址不够用的问题。
16. NAT 技术的实现原理。
NAT 技术在网络设备中通过维护一个映射表,通过映射表可以将外部地址转换为内部地址。
17. ICMP 报文和 IP 报文一样,也是由头部和数据两个部分组成,请简述 ICMP 报文的头部字段。
ICMP 报文的头部字段由三个部分组成,分别是 8 位类型、8 位代码和 16 位校验和。
18. ICMP 报文和 IP 报文由什么关系?ICMP 报文是怎么样传输的。
ICMP 协议和 IP 协议虽然同为网络层协议,但是 ICMP 是不能单独传输的,ICMP 报文需要传输时作为 IP 报文的数据进行传输。
19. 常见的利用 ICMP 协议的计算机应用有 ping 和 traceroute,请简述这两个应用的功能,以及这两个应用是怎么利用 ICMP 协议完成工作的。
略
20. 网络层路由可以抽象成一个图算法问题,按照网络的大小可以分为内部网关协议和外部网关协议,请列举与网络路由相关的算法。
距离矢量算法、Dijkstra(迪杰斯特拉)算法。
21. 请简述 RIP 协议的过程。
略
22. RIP 协议有什么优点和缺点?
RIP 协议具备着实现简单、开销小等优点,但是 RIP 协议本身的缺陷限制了网络的规模,并且在 RIP 协议中坏消息传的慢,更新收敛时间长, 这也使得 RIP 协议整体性能较差。
23. 请简述 OSPF 协议的过程,OSPF 协议中起到重要的算法是什么算法?
略,Dijkstra(迪杰斯特拉)算法。
24. OSPF 协议有什么优点和缺点?
OSPF 协议解决了 RIP 协议的问题,对整个网络有一定的 “全局观”,但是 OSPF 协议本身较为复杂,实现开销较大。
25. 网络层有了 RIP 协议和 OSPF 协议,为什么还需要 BGP 协议?BGP 协议解决了什么问题?
BGP 协议全称为边际网关协议 (Border Gateway Protocol),BGP 协议是因为计算机网络中人为因素的复杂性而提出的,在实际网络环境中,数据的传输还受政治、安全等方面的影响。