一、网络层的服务和功能
网络层主要为应用层提供端对端的数据传输服务
- 网络层接受运输层的报文段,添加自己的首部,形成网络层分组。分组是网络层的传输单元。
- 网络层分组在各个站点的网络层之间传输,最终到达接收方的网络层。
- 接收方网络层将运输层报文段上传给本地运输层。
二、IP(Internet Protocol)协议
2.1、定义
IP协议是TCP/IP体系网络层的主要协议,为上层的TCP、UDP协议提供服务,在TCP/IP体系的网络层中,除了IP协议,还有ICMP、IGMP协议。它负责将数据包从源主机传输到目标主机,是整个互联网通信的基础。
IP协议是TCP/IP协议体系的核心协议,通过IP协议可以连接各种不同的网络,使整个Internet统一为一个巨大的IP网络。
2.2、特点
- 无连接性:IP协议是一种无连接的协议,即在发送数据之前不需要建立连接。每个数据包都是独立发送的,没有建立持久的连接。
- 不可靠性:IP协议不提供数据包的可靠传输。当数据包在传输过程中丢失、损坏或重复时,IP协议没有机制来修复或重新传输这些数据包。
- 分组交换:IP协议使用分组交换的方式传输数据。数据被分成较小的数据包,每个数据包都带有源地址和目标地址。
- 网络独立性:IP协议可以在不同类型的网络上运行,包括以太网、无线网络等。它允许不同类型的设备可以互相通信。
- 简单性:IP协议被设计为简单的协议,只提供了数据包的路由功能,不提供数据的校验、确认等功能。
- 封装性:IP协议使用分层的封装方式来传输数据。它将应用层的数据进行封装,然后添加IP头部信息,形成一个IP数据包。
- 弹性和可扩展性:IP协议是一种弹性和可扩展的协议,可以适应不同的网络环境和需求。
2.3、IP地址
2.3.1、概念
IP地址是一个32比特(4字节)的二进制数字,采用点分十进制。如下图:
2.3.2、特点
- IP地址是一个逻辑地址,与具体的网络技术和硬件无关,可以人为设定或通过DHCP服务器动态获取。
- IP地址需要分配给网络接口,与网络接口相关联,一个接口一个IP地址。
- 每个IP地址分为两部分:网络号和主机号。网络号代表主机或路由器所处的物理网络,主机号代表所处物理网络中的编号。
- 同一个物理网络中的IP地址,它们的网络号相同,主机号不同。
2.3.2、分类
2.3.2.1、五类IP地址
- A类网络:网络位占8个比特,第一位固定为0,所以最小的网络号为0(0000 0000),最大的网络号为127(0111 1111)。
- B类网络:网络位占16个比特,前两位固定为10。
- C类网络:网络位占24个比特,前三位固定为110。
- D类网络:以224~239之间的数字开头,作为组播地址预留。因特网上A、B、C类网络都是单播地址,D类网络为组播地址,常用于电话会议或视频会议等。
- E类网络:以240~254之间的数字开头,作为保留地址。
注:D、E类网络都不会用来分配给主机或路由器。
2.3.2.2、特殊IP地址
全0和全1地址
全0和全1地址有特殊含义,不分配给主机和路由器。如下图:
环回地址
网络号为127的地址作为环回地址,保留作为本地软件测试,不分配。最常用的环回地址为127.0.0.1,代表本机,即无论网络接口分配的IP地址是多少,127.0.0.1总是代表主机或路由器本身。
私有IP地址
私有IP地址(Private IP Addresses)是专门为内部网络使用的IP地址范围。这些地址在公共互联网上不可路由,意味着它们不会与全球范围内的其他网络上的IP地址冲突。私有IP地址主要用于企业、组织或家庭网络中的设备,如计算机、打印机、路由器等。
以下是三个主要的私有IP地址范围:
- 10.0.0.0/8:此范围包括从10.0.0.0到10.255.255.255的所有IP地址。
- 172.16.0.0/12:此范围包括从172.16.0.0到172.31.255.255的所有IP地址。不过,有时这个范围会被细分为更小的子网(例如,172.16.0.0/16, 172.17.0.0/16等)。
- 192.168.0.0/16:此范围包括从192.168.0.0到192.168.255.255的所有IP地址。这个范围是家庭和小型办公室网络中最常见的。
当内部网络中的设备需要访问公共互联网时,通常会使用网络地址转换(NAT)技术。NAT允许私有IP地址与公共IP地址之间进行映射,这样内部网络中的设备就可以通过公共IP地址与外部网络进行通信,同时保持其私有IP地址的隐私性。
2.4、IP子网
2.4.1、定义
- 子网(Subnet)或子网络是指在一个更大的网络中划分出来的较小的、相对独立的网络单元。
- 子网允许将一个给定的网络分为若干个更小的部分,这些更小的部分被称为子网。
2.4.2、作用
2.4.2.1、充分利用IP地址
- IP地址由网络号和主机号组成,但并非所有的网络号和主机号都会被使用,尤其在大型网络中。
- 子网划分可以把一个大的网络地址分配给更多较小的网络,更有效地使用IP地址空间。
2.4.2.2、限定广播的传播
- 子网划分将原有的同处于同一个网段上的主机分成了不同的网段或子网,同时也将原来的一个广播域划分成了若干个较小的广播域。
- 广播数据包只能在它特定的广播域中传播,减少广播风暴对网络的影响。
2.4.2.3、更安全的管理网络
- 网络中处于同一个子网内的主机才能直接互通,不同子网之间不能直接通信(但可通过路由器或网关进行)。
- 这种划分方式增加了网络的安全性,尤其对于人事、财务等敏感性部门。
2.4.3、子网掩码
- 不能单独存在,必须结合IP地址一起使用。
- 作用:区分IP地址中的 网络地址 和 主机地址 。
- 32位的子网掩码由前面连续的若干个1和后面连续的0组成,1的个数就是对应IP地址网络前缀的长度。
IP地址和子网掩码 按位与 操作,得到地址对应的网络地址。 1 & ? = ? , 0 & ? = 0
2.4.4、子网划分
2.4.4.1、固定长度子网划分
每个子网包含相同数量的主机地址,适用于小型网络或对IP地址规划要求不太复杂的场景。
特点:子网大小固定,简化管理。
示例:
有一个C类IP地址(如192.168.1.0/24),并且你希望将其划分为4个子网,每个子网包含62台主机(减去网络地址和广播地址),可以使用/26的子网掩码(255.255.255.192)。使用/26的子网掩码,你可以将192.168.1.0/24网络划分为以下四个子网:
- 子网1:192.168.1.0/26(地址范围:192.168.1.1-192.168.1.62)
- 子网2:192.168.1.64/26(地址范围:192.168.1.65-192.168.1.126)
- 子网3:192.168.1.128/26(地址范围:192.168.1.129-192.168.1.190)
- 子网4:192.168.1.192/26(地址范围:192.168.1.193-192.168.1.254)
2.4.4.2、可变长度子网划分(VLSM)
允许每个子网包含不同数量的主机地址,更适用于大型网络。
特点:子网大小不固定,更高效的地址利用。
示例:
假设一个组织拥有一个C类IP地址段192.168.1.0/24,并希望将其划分为以下子网:
- 子网1:需要50台主机
- 子网2:需要100台主机
- 子网3:需要20台主机
可以使用VLSM进行如下划分:
- 子网1:使用/25的子网掩码(255.255.255.128),子网地址为192.168.1.0/25,可分配主机地址为192.168.1.1-192.168.1.126。
- 子网2:同样使用/25的子网掩码,子网地址为192.168.1.128/25,可分配主机地址为192.168.1.129-192.168.1.254。
- 子网3:由于只需要20台主机,可以使用更长的子网掩码来节省IP地址。这里可以使用/27的子网掩码(255.255.255.224),子网地址为192.168.1.192/27,可分配主机地址为192.168.1.193-192.168.1.222。
2.5、无分类编址CIDR
2.5.1、定义
无分类编址(CIDR):这是一种IP地址分配方案,它消除了传统的IP地址分类(A类、B类、C类)的概念,并通过使用可变长度的子网掩码(VLSM)来定义网络地址和主机地址的边界。
2.5.2、特点:
- 灵活性:CIDR允许根据实际需求分配不同大小的IP地址块,从而提高了IP地址的利用率。
- 可扩展性:由于CIDR不再受限于固定的IP地址分类,因此它可以更好地适应网络规模的扩展。
- 简化路由:CIDR使用路由聚合技术,将多个小的IP地址块合并为一个大的IP地址块,从而减少了路由器中的路由表项,提高了路由效率。
2.5.3、工作原理
- 子网掩码:CIDR使用可变长度的子网掩码(VLSM)来定义网络地址和主机地址的边界。子网掩码的长度决定了网络地址部分和主机地址部分的位数。
- 前缀表示法:CIDR使用前缀表示法来表示IP地址和子网掩码。例如,/24表示子网掩码为255.255.255.0,/16表示子网掩码为255.255.0.0。
- 地址块计算:通过指定前缀长度,可以计算出子网内的可用IP地址数量。例如,/24表示的子网有256个IP地址(包括网络地址和广播地址),其中254个可用于主机。
2.5.4、应用
- 网络设计:CIDR在网络设计中被广泛应用,用于规划和分配IP地址空间。通过CIDR,可以更容易地实现网络的层次化设计和路由聚合。
- IP地址分配:服务提供商(ISP)使用CIDR来分配IP地址给其客户。由于CIDR的灵活性,ISP可以根据客户的需求分配适当大小的IP地址块。
2.5.5、示例
假设一个ISP拥有一个C类IP地址段192.168.1.0/24,并希望将其划分为两个子网,每个子网包含128个主机地址。使用CIDR,ISP可以将该地址段划分为两个/25的子网:
- 子网1:192.168.1.0/25(地址范围:192.168.1.1-192.168.1.126)
- 子网2:192.168.1.128/25(地址范围:192.168.1.129-192.168.1.254)
2.6、IP数据报
2.6.1、组成
- IP数据报由首部和数据两部分组成。
- 首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。
- 在首部的固定部分的后面是一些可选字段,其长度是可变的。
2.6.2、首部字段
- 版本号(Version):占4比特,表示IP协议的版本。接收方会首先检查这个字段,如果不支持其中声明的版本,就会拒绝该数据报。广泛使用的版本号为4(即IPv4)该字段值为0100。
- 首部长度(Header Length):占4比特,表示IP数据报首部的长度,最大十进制数值是15,单位为32位字长(即4字节)。因此,当首部长度为15时,首部长度就达到60字节。
- 区分服务(Type of Service, TOS):占8比特,用于获取更好的服务,但在实际中较少使用,多数为全0。
- 总长度(Total Length):指首部和数据之和的长度,单位为字节。总长度字段为16比特,因此数据报的最大长度为2^16-1=65535字节。但实际上,很少有超过1500字节的IP数据报。
- 标识(Identification):占16比特,用于标识一个数据报。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。
- 标志(Flags):占3比特,包含以下标志位:最低位是MF(More Fragments):用于指示是否还有后续的分片。中间位是DF(Don't Fragment):用于指示路由器是否可以对数据报进行分片。最高位保留,必须为0。
- 片偏移(Fragment Offset):占13比特,当数据报被分片时,此字段表示该片在原始数据报中的相对位置(以8字节为单位)。
- 生存时间(Time to Live, TTL):占8比特,用于限制数据报在因特网上的生存时间,防止数据报在网络中无限循环。每经过一个路由器,TTL值减1,当TTL值为0时,数据报将被丢弃。
- 协议(Protocol):占8比特,用于指示数据报所携带的数据所使用的协议,如TCP、UDP、ICMP等。
- 首部校验和(Header Checksum):占16比特,用于校验IP数据报首部的完整性。
- 源地址(Source Address):占32比特(4字节),表示发送数据报的设备的IP地址。
- 目的地址(Destination Address):占32比特(4字节),表示接收数据报的设备的IP地址。
- 选项(Options):可变长度,用于携带额外的控制信息。在标准IPv4中,选项字段很少使用,但在某些特殊情况下(如源路由)可能会被用到。
- 数据(Data):包含IP数据报的有效载荷,即上层协议(如TCP、UDP)的数据。
2.6.3、特点
- 无连接:IP协议不维护网络单元(即路由器)中数据报相关的任何链接状态信息。
- 不可靠:IP协议不保证数据能准确地到达接收端,只是尽自己最大努力传送。
- 无状态:通信双方不同步传输数据的状态信息,发送、传输、接收都是相互独立的、没有上下文关系的。
2.6.4、作用
IP数据报可以携带各种类型的信息,如文本、音频和视频等,实现互联网上的连接功能。
它对数据包传输进行监测和确认,有助于保证数据传输的完整性和可靠性。
IP数据报还可以用于管理和监测网络性能,以及网络安全方面的追踪和防御。
2.6.5、IPv4与IPv6的区别
IPv4数据报头部大小为20字节(固定部分),除非存在选项(少见)。
IPv6数据报头部长度固定为40字节,不存在选项,但可以有扩展头部。
2.6.6、应用
所有TCP、UDP、ICMP和IGMP数据都通过IP数据报传输。
IP数据报提供了一种尽力而为、无连接的数据报交付服务。
三、路由协议
3.1、定义
路由协议(Routing Protocol)是一种在路由器之间共享路由信息,以支持可路由协议的机制。它通过创建路由表来描述网络拓扑结构,并与路由器协同工作,执行路由选择和数据包转发功能。
3.2、作用
路由协议的主要作用包括:
- 寻找最佳路径:路由协议通过建立和更新路由表,寻找到达目标节点的最佳路径。它考虑了各种因素,如距离、带宽、拥塞状况等,以确保数据包能够快速、可靠地传输。
- 转发数据包:根据路由表信息,路由协议将数据包从源节点转发到目标节点。它负责选择适当的路径,并在网络中的各个节点上进行转发操作,以确保数据包按照正确的路径到达目标。
3.3、分类
路由协议可以根据不同的标准进行分类,包括:
- 根据作用范围:
- 内部网关协议(IGP):在一个自治系统(AS)内部运行,常见的IGP协议包括RIP、OSPF和IS-IS。
- 外部网关协议(EGP):运行于不同自治系统之间,BGP是目前最常用的EGP。
- 根据使用算法:
- 距离矢量(Distance-Vector)协议:包括RIP和BGP(BGP也被称为路径矢量协议)。
- 链路状态(Link-State)协议:包括OSPF和IS-IS。
- 根据目的地址类型:
- 单播路由协议:包括RIP、OSPF、BGP和IS-IS等。
- 组播路由协议:包括PIM-SM、PIM-DM等。
- 根据IP协议版本:
- IPv4路由协议:包括RIP、OSPF、BGP和IS-IS等。
- IPv6路由协议:包括RIPng、OSPFv3、IPv6BGP和IPv6IS-IS等。
3.4、路由表
路由表是计算机网络中的一个关键组件,特别是在互联网协议(IP)网络中。它用于决定数据包从源地址到目的地址的最佳路径。简单来说,路由表就是路由器用来选择数据包传输路径的决策表。通过路由表才能精确定位网络,传输信息。
路由表的基本信息和重点:
- 目的网络/子网:这是路由表中最关键的一列,它表示了数据包的目标IP地址或子网。路由器会检查数据包的目的IP地址,并在路由表中查找匹配项。
- 子网掩码:子网掩码用于确定目的IP地址的网络部分。路由器将目的IP地址与子网掩码进行逻辑与操作,然后与路由表中的网络部分进行比较。
- 下一跳地址:这是数据包应该发送到的下一个路由器的IP地址。在某些情况下,下一跳可能是直接连接的设备(如主机),但在大多数情况下,它是另一个路由器。
- 输出接口:这是数据包应该离开路由器的物理或逻辑接口。它可以是特定的以太网端口、Wi-Fi接入点或其他任何网络接口。
- 度量值(或称为“成本”或“距离”):这是一个可选字段,用于表示到达目的网络的成本或距离。路由器可以使用这个字段来选择最佳路径(例如,使用最短路径优先算法)。
- 管理距离:这也是一个可选字段,用于确定路由来源的可信度。不同的路由协议(如RIP、OSPF、BGP等)有不同的管理距离值。当路由器有多个可用的路由时,它将选择具有最低管理距离的路由。
- 路由类型:这表示路由是如何被学习或发现的。路由可以是静态的(手动配置的)或动态的(通过路由协议自动学习的)。
3.5、路由类型
3.5.1、静态路由
3.5.1.1、定义
路由表可以手动配置。
当网络管理员配置了路由器接口的IP地址、子网掩码,启动接口后,路由表中就会出现直连网络的路由。
网络管理员还可以手动配置到达其他网络的路由,创建路由表项。这样的网络就是静态路由。配置静态路由要求管理员对网络拓扑结构和网络状态有清晰的了解,并且当网络变化时,要手动配置。
3.5.1.2、特点
- 手动配置:静态路由需要网络管理员根据实际网络拓扑结构和需求进行手动配置。管理员需要指定目标网络的IP地址、子网掩码、下一跳地址(如果有的话)以及数据包离开路由器的接口。
- 路由路径相对固定:由于静态路由是手动配置的,因此每个配置的静态路由在本地路由器上的路径基本上是不变的,除非管理员自己修改。
- 永久存在:一旦静态路由被配置,它会永久地存在于路由表中,除非管理员手动删除或相关接口关闭、下一跳IP地址不可达。
- 不可通告性:静态路由信息在默认情况下是私有的,不会向其他路由器通告。但管理员可以通过其他手段(如重发布静态路由)来使其他路由器获知这些信息。
- 单向性:静态路由只提供单向的路由信息,即只指定了数据包从当前路由器到达目标网络的路径。为了实现双向通信,需要在相关路由器上配置回程静态路由。
- 接力性:如果某条静态路由需要经过多个路由器(跳数大于1),则必须在每个中间路由器上配置到达相同目标网络或节点的静态路由。
3.5.1.3、适用范围
静态路由适用于中小型网络,尤其是网络拓扑结构相对固定、不需要频繁变动的场景。它的优点包括配置简单、网络安全保密性高(因为不需要路由器之间频繁交换路由信息)、不占用网络带宽(因为不会产生更新流量)。然而,在大型和复杂的网络环境中,静态路由可能难以适应网络拓扑结构和链路状态的变化,需要大范围地调整路由信息,因此不太适用。
3.5.2、动态路由
3.5.2.1、定义
路由器之间可以通过路由协议,自主学习来获得的路由信息,这样的路由被称为动态路由。使用路由协议动态构建路由表不需要人工参与,并能自动适应网络状态的变化更新路由表,大型网络或状态变化频繁的网络通常会采用动态路由协议。
3.5.2.2、特点
- 自动计算与调整:动态路由允许路由器之间通过交换路由信息来自动计算路由,并根据网络状态的变化实时调整路由表。这种机制使得路由器能够自动适应网络拓扑结构的变化,无需人工干预。
- 基于路由协议:动态路由的实现依赖于特定的路由协议,如RIP、OSPF、IS-IS、BGP等。这些协议定义了路由器之间如何交换路由信息以及如何计算路由。
- 占用网络带宽:由于动态路由需要路由器之间频繁地交换路由信息,因此会占用一定的网络带宽。但是,这种占用通常是可接受的,因为动态路由能够带来更高的网络灵活性和可用性。
- 灵活性高:动态路由能够自动适应网络状态的变化,因此具有很高的灵活性。当网络拓扑结构发生变化时,动态路由能够迅速调整路由表,确保数据包的正常传输。
3.5.2.3、原理
- 路由信息交换:路由器之间通过特定的路由协议交换路由信息,包括目标网络的IP地址、子网掩码、下一跳地址等。这些信息被用于计算路由表。
- 路由表计算:路由器根据收集到的路由信息,使用特定的路由算法(如距离向量算法、链路状态算法等)计算路由表。这些算法会考虑多个因素,如路径长度、带宽、延迟等,以确定最佳路径。
- 路由表更新:当网络状态发生变化时(如链路故障、路由器宕机等),路由器会重新计算路由表并更新相应的路由信息。这种更新过程是自动的,无需人工干预。
3.5.2.4、优缺点
优点:
- 自动适应网络状态变化,无需人工干预。
- 能够迅速响应网络拓扑结构的变化,确保数据包的正常传输。
- 提高了网络的灵活性和可用性。
缺点:
- 需要占用一定的网络带宽来交换路由信息。
- 在某些情况下,可能会产生路由环路等问题,需要采取相应的措施来解决。
3.5.2.5、常见的动态路由协议
- RIP(路由信息协议):基于距离向量的路由协议,实现简单,开销较小。但是,它只支持小型网络,并且存在路由环路的风险。(RIP配置博客链接)
- OSPF(开放式最短路径优先):基于链路状态的路由协议,适用于大型网络。它使用Dijkstra算法来计算最短路径,并且具有较高的收敛速度。
- BGP(边界网关协议):用于在自治系统之间交换路由信息的协议。它是唯一一个用来处理像因特网大小的网络的协议。