网络层
基本概念
网络互联:
将两个以上的计算机网络,通过一定的办法,用一种或多种通信处理设备(即中间设备)相互连接起来,以构成更大的网络系统。中间设备又称中间系统或中继系统
中继系统分为4种:
- 物理层中继系统:中继器,集成器
- 数据链路层中继系统:网桥和交换机
- 网络层中继系统:路由器
- 网络层以上的中继系统:网关
IPV4
IP(Internet Protocol)是互联网协议的缩写,它定义了计算机如何在互联网上寻址和传输数据。IP协议是互联网的核心技术之一,它允许全球范围内的计算机网络相互通信
IPv4分组(也称为IPv4数据报)的格式包括一个头部和一个可选的数据部分。头部包含控制信息,用于指导分组在网络中的传输,而数据部分则包含要传输的实际数据
IP数据报:首部
+ 数据部分
IP首部部分重要字段
-
版本(Version):占 4 位,指示了IPv4协议的版本号,通常为 4
-
首部长度(Header Length):占 4 位,表示IPv4首部的长度(记录了整个首部的长度),以 32 位字为单位。IPv4首部的长度是可变的,通常为 20 字节,最大为 60 字节。
假设首部长度:0101 (5) ,按照一个字32位来算,那5则是(5 * 4 = 20B(字节)); 表示该首段部分总共为20个字节
-
总长度(Total Length):占 16 位,表示整个IPv4数据报的长度,包括首部和数据部分的总长度
16位表示最大数为216 - 1 =65536,表示最大能有65536个字节
由于以太网的最大传输单元(MTU)为1500B,因此当一个IP数据报封装成帧时,数据报的总长度(首部 + 数据部分) 不能超过下面的数据链路层的MTU值
-
服务类型(Type of Service):占 8 位,用于描述数据报的服务类型和优先级,如优先权、延迟、吞吐量等。通常用于流量控制和QoS(服务质量)
-
标识(Identification):占 16 位,它是一个计数器,每产生一个数据报就加1,并赋给标识字段。但它并不是“序号”。当一个数据报的长度超过网络的MTU时,必须分片(后面介绍),(就是数据部分太大了,超过了范围,必须拆分,拆分后需要有个标识,清楚拆分后属于哪个包就需要有个标识)。此时每个数据报片都复制一次标识号,以便能正确重装成原来的数据报
-
标志(Flags):占 3 位,包括 DF(Don’t Fragment)、MF(More Fragments)和保留位
MF = 1表示后面还有分片,MF = 0表示最后一个分片
-
片偏移(Fragment Offset):占 13 位,用于标识分段数据报在原始数据报中的位置
-
生存时间(Time to Live):占 8 位,指定数据报在网络中的生存时间,每经过一个路由器就减 1,当生存时间为 0 时,数据报将被丢弃
-
协议(Protocol):占 8 位,指定了数据报中的上层协议类型,如TCP、UDP、ICMP等
-
首部校验和(Header Checksum):占 16 位,用于校验IPv4首部的完整性,保证数据报在传输过程中没有被损坏
-
源 IP 地址和目的 IP 地址(Source IP Address, Destination IP Address):每个地址占 32 位,分别指定了数据报的源地址和目的地址
-
选项(Options):可选字段,用于指定一些可选的参数和控制信息,如记录路由选项、时间戳选项等
-
填充(Padding):用于填充首部使得其长度是32位的整数倍
IP数据报分片
IP数据报分片(IP Datagram Fragmentation)是指在IPv4协议中,当一个数据报太大,无法通过某个网络接口的MTU(最大传输单元)时,网络设备(通常是路由器)会将其分割成多个较小的数据报片段(分片),以便能够通过该网络接口。每个分片都包含一个IP头和一部分原始数据
分片的格式:
- 标识(Identification):
标识字段用于标识分片的原始数据报
每个分片和原始数据报都包含相同的标识值 - 标志(Flags):
标志字段包含一个分片标志(0),表示这是分片还有一个保留标志,用于未来的扩展,目前应该设置为0 - 片偏移(Fragment Offset):
片偏移字段用于指示每个分片在原始数据报中的位置分片的偏移量以8字节为单位,所以最大值为127 x 8 = 1024字节 - 数据(Data):
分片包含原始数据报的一部分
数据的长度由总长度字段决定
网络层转发分组的流程:
-
接收数据报:
路由器的网络接口接收到一个数据报(或数据包),该数据报通常包含了目标IP地址和源IP地址等信息
-
解析目标IP地址:
路由器解析数据报中的目标IP地址,以确定数据报的目标网络
-
查询路由表:
路由器查询本地路由表,根据目标IP地址查找最佳的转发路径。
路由表中存储了网络层地址与输出接口的映射关系,以及下一跳路由器的地址(如果有) -
选择下一跳路由器:
如果目标IP地址与路由表中的网络地址不匹配,路由器将选择一个下一跳路由器来转发数据报。
下一跳路由器是能够将数据报转发到目标网络的路由器。 -
转发数据报:
路由器根据路由表的信息,将数据报转发到相应的输出接口或下一跳路由器。
路由器根据目标MAC地址将数据报封装成帧,并通过物理链路发送出去。 -
到达目标网络:
经过一系列路由器的转发,数据报最终到达目标网络。
在目标网络上,路由器将根据目标IP地址将数据报交付给目标主机或下一跳路由器。 -
目标主机处理:
如果数据报到达了目标主机,目标主机将从数据报中提取数据,并进行相应的处理,如TCP连接建立、数据包转发等
IPV4地址
IP地址,都是由网络号和主机号两个部分组成。即IP地址:{<网络号>, <主机号>} 其中网络号标主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的
IPV4地址分类:
IP地址的重要特点:
-
每个IP地址都由网络号和主机号两部分组成,一种分级等级地址结构
IP地址管理机构在分配IP地址时只分配网络号;主机号则由第一级该网络的单位自行分配,方便了IP地址的管理
路由器仅根据目的主机所连接的网络号来转发分组,从而减少了路由器表所占的存储空间
-
IP地址是标志一台主机(或路由器)和一条链路的接口
-
用转发器或桥接器(网桥)连接的若干LAN仍然是同一个网络(同一个广播域),因此该LAN中所有主机的IP地址的网络号必须相同,主机号必须不同
-
IP地址中,所有分配到网络号的网络(无论是LAN还是WAN)都是平等的
-
同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的。路由器总是具有两个以上的IP的地址,路由器的每个端口都有
一个不同网络号的IP地址
网络地址转换(NAT(Network Address Translation))
是一种在路由器或防火墙等网络设备上执行的技术,用于将私有IP地址转换为公共IP地址,以实现内部网络和外部网络(例如互联网)之间的通信
为了网络安全,划出了部分IP地址为私有IP地址。私有IP地址只用于LAN,不用于WAN连接(私有IP地址不能直接用于Internet,必须通过网关利用NAT把私有IP地址转换为Internet中合法的全球IP地址后才能用于Internet)
私有IP网段:
在IPv4中,有一部分IP地址被保留用于私有网络,这些地址不会在互联网上公开路由,因此被称为私有地址。私有地址网段是由互联网号码分配 authority (IANA) 定义的标准,它们可以在任何组织内部自由使用,而不会与互联网上的其他设备冲突
A类:10.0.0.0 到 10.255.255.255(10.0.0.0/8)
B类:172.16.0.0 到 172.31.255.255(172.16.0.0/12)
C类:192.168.0.0 到 192.168.255.255(192.168.0.0/16)
NAT的工作过程:
地址转换规则配置:管理员配置NAT设备的地址转换规则,包括内部私有地址和外部公共地址的映射关系。通常包括源地址转换(将内部私有地址转换为外部公共地址)和目标地址转换(将外部公共地址转换为内部私有地址)。
内部主机发送数据:当内部主机发送数据包到外部网络时,数据包的源IP地址是内部私有地址,目标IP地址是外部公共地址。
NAT设备进行地址转换:NAT设备接收到数据包后,根据预先配置的地址转换规则,将数据包的源IP地址替换为外部公共地址,并更新数据包的校验和等相关字段。
路由器转发数据:NAT设备根据转换后的地址信息,将数据包转发到外部网络中的目标主机或路由器。
目标主机返回数据:外部网络中的目标主机收到数据包后,将响应数据包发送回内部网络。响应数据包的目标IP地址是NAT设备的外部公共地址。
NAT设备进行逆向地址转换:NAT设备接收到响应数据包后,根据预先配置的地址转换规则,将数据包的目标IP地址替换为内部私有地址,并更新相关字段。
内部主机接收数据:最后,NAT设备将转换后的响应数据包发送到内部网络中的目标主机,完成数据通信过程
eg:
- 假设某个宿舍办理了100Mb/s电信宽带,那这个宿舍就获得了一个全球IP地址(假设138.76.30.7),而宿舍内4台主机使用私有地址(如192.168.0.0)
- 宿舍的网关路由器启动NAT功能,并应用路由器上的NAT转换表
- 当路由器从LAN端口收到源IP及源端口号为192.168.0.2:2233的数据报时,将其映射成138.76.30.7:5001,然后从WAN端口发送到因特网上
- 当路由器从WAN端口收到目的IP及目的端口为138.76.30.7:5060的数据报时,就将其映射成192.168.0.3:1234,完后从LAN端口发送给相应的本地主机。
- 这样,只需一个全球地址,就可以让多台主机同时访问因特网
子网划分
子网划分纯属一个单位内部的事情,单位对外仍然表现为没有划分子网的网络
从主机号借用若干比特号作为子网号,当然主机号也就相应减少了相同的比特。三级IP地址的结构:IP地址 = {<网络号>, <子网号>, <主机号>}
子网掩码
子网掩码(Subnet Mask)是一种32位的二进制数字,用于指示一个IP地址中网络号和主机号的边界。子网掩码中的连续的1表示网络号部分,连续的0表示主机号部分。子网掩码通常与IPv4地址一起使用,用于划分IP地址空间,将一个网络划分为若干个子网
子网掩码的常见表示方法有两种:点分十进制表示法和CIDR表示法
-
点分十进制表示法将32位的二进制子网掩码划分为4个8位的二进制数,并将每个8位的二进制数转换为对应的十进制数,用点号分隔开
例如,子网掩码255.255.255.0的二进制表示是11111111.11111111.11111111.00000000
-
CIDR(Classless Inter-Domain Routing)表示法将子网掩码表示为IP地址后面跟着一个斜杠和一个数字,表示网络号占用的位数
例如,CIDR表示法中,子网掩码255.255.255.0通常表示为“/24”,表示网络号占用了前24位,主机号占用了后8位
ARP
ARP(Address Resolution Protocol)是一种用于在IPv4网络中解析IP地址与MAC地址之间对应关系的协议。它是网络通信中的重要组成部分,用于将IP地址转换为对应的MAC地址,以实现数据包在局域网中的传输
每台主机都设有一个ARP高速缓存,用来存放局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表
工作原理:
-
当主机A要发送数据到主机B时,它首先检查自己的ARP缓存中是否有主机B的IP地址对应的MAC地址。如果有,则直接使用缓存中的MAC地址发送数据包
-
如果主机A的ARP缓存中没有主机B的IP地址对应的MAC地址,它会发送一个ARP请求广播帧到局域网中的所有主机,询问谁拥有目标IP地址对应的MAC地址
-
局域网中的其他主机收到ARP请求后,会检查请求中的IP地址是否与自己匹配。如果匹配,则向主机A发送ARP响应,包含自己的MAC地址
-
主机A收到ARP响应后,将目标IP地址与MAC地址的对应关系存储到自己的ARP缓存中,并使用这个MAC地址发送数据包
DHCP
DHCP(Dynamic Host Configuration Protocol)是一种网络协议,用于动态地为网络中的设备分配IP地址和其他网络配置参数,如子网掩码、默认网关、DNS服务器等。DHCP协议能够自动化地管理和分配网络配置,简化了网络管理人员的工作,并提高了网络的灵活性和可扩展性
过程:
-
客户端发现:当一个设备加入网络时(例如打开电脑或连接到无线网络),它会发送一个DHCP发现广播消息到局域网中的所有设备,请求获取网络配置信息。
-
DHCP服务器提供IP地址:局域网中的DHCP服务器收到客户端的发现消息后,会从可用的IP地址池中选择一个IP地址,并将其分配给客户端。
DHCP服务器向客户端发送一个DHCP提供消息,包含分配给客户端的IP地址和其他网络配置参数。 -
客户端请求网络配置:客户端收到DHCP提供消息后,会向DHCP服务器发送一个DHCP请求消息,确认接受分配的IP地址和其他网络配置参数。
-
DHCP确认:DHCP服务器收到客户端的请求消息后,会向客户端发送一个DHCP确认消息,确认客户端已经成功获取了网络配置信息。
-
网络配置应用:客户端收到DHCP确认消息后,会将分配到的IP地址和其他网络配置参数应用到自己的网络设置中,从而完成网络配置过程
IP组播
IP组播(IP Multicast)是一种用于在IP网络中向多个目的地发送数据的通信模式。它允许一个发送者将数据发送到一个IP组播地址,然后网络中的多个接收者可以通过加入该组播组来接收数据
组播地址:
IP组播地址是一个特殊的IP地址范围,用于标识一个组播组。IPv4的组播地址范围是224.0.0.0到239.255.255.255,IPv6的组播地址范围是FF00::/8
组播地址中的每个接收者都可以通过加入相应的组播组来接收发送到该组播地址的数据
加入组播组:
主机可以通过使用特定的协议(如IGMP或MLD)向本地路由器发送请求,请求加入一个或多个组播组
当路由器收到加入组播组的请求后,它会在自己的路由表中添加相应的条目,以便将组播数据转发到相应的主机
组播数据传输:
发送者将数据发送到特定的组播地址,而不是发送到单个主机的IP地址
中间路由器负责将组播数据转发到所有加入了该组播组的主机
路由器使用多播路由协议(如PIM)来维护和更新组播转发树,确保组播数据沿着最有效的路径传输到所有接收者
应用:
主机可以通过使用特定的协议(如IGMP或MLD)向本地路由器发送请求,请求加入一个或多个组播组
当路由器收到加入组播组的请求后,它会在自己的路由表中添加相应的条目,以便将组播数据转发到相应的主机
组播数据传输:
发送者将数据发送到特定的组播地址,而不是发送到单个主机的IP地址
中间路由器负责将组播数据转发到所有加入了该组播组的主机
路由器使用多播路由协议(如PIM)来维护和更新组播转发树,确保组播数据沿着最有效的路径传输到所有接收者
应用:
IP组播通常用于流媒体、在线游戏、多播文件传输等应用场景,其中需要向多个接收者同时传输相同的数据流