计算机网络:TCP/IP协议(网络层漫游:IP 寻址与路由控制全攻略)

前言

本期进行IP协议的学习,IP作为整个TCP/IP中至关重要的协议,主要负则将数据包发送给最终的目标计算机,它能够让世界上任何两台计算机之间进行通信。

IP即网络协议

TCP/IP的心脏是网络层,这一层主要由IP和ICMP两个协议组成。本期主要对IP协议进行详细的介绍。我们知道数据链路层主要是互连同一种数据链路的节点之间进行包传递,如果想要跨越多种数据链路层(注意这里也包括跨越不同的VLAN),就需要借助网络层。

网络层和数据链路层的关系

数据链路层提供直连设备之间的通信功能,那为何需要网络层呢,这里我们以一个生活的例子举例。有个人要去一个很远的地方旅行,并且计划先后乘坐飞机、火车、公交车到达目的地。我们可以知道火车票或者机票只能在某一个限定的区间进行移动,这里就类比网络中的数据链路层,不同乘坐方式不同公式,代表不同种的数据链路,而整个全程的行程表的作用就相当于网络层,它规划了我们什么时候乘坐飞机或者火车。
至此,我们可以更好的理解MAC 地址是本地链路的标识,IP 地址是端到端的逻辑地址。
在这里插入图片描述
如果我们只有行程表而没有车票,就无法搭乘交通工具到达目的地。反之,如果除了车票其他什么都没有,恐怕也很难到达目的地。因为你不知道该坐什么车,也不知道该在哪里换乘。因此,只有两者兼备,既有某个区间的车票又有整个旅行的行程表,才能保证到达目的地。与之类似,计算机网络中也需要数据链路层和网络层这个分层才能实现向最终目标地址的通信。

IP基础知识

IP大致分为三大作用模块,它们是IP寻址、路由以及IP分包与组包。

IP寻址

IP寻址指的是为网络中的每台设备分配唯一标识符(IP 地址),实现设备在逻辑网络中的定位与区分。通过 IP 地址的分层结构,标识设备属于哪个网络及该网络中的具体设备,类似 “国家 - 城市 - 街道 - 门牌号” 的层级。

IP地址的定义

IP地址(IPv4地址)是由32位正整数来表示。我们以每8位为一组,分成4组,每组以“.”隔开,再将每组数转换为十进制数。
在这里插入图片描述
IP地址由网络主机两部分标识组成,**网络标识在数据链路的每个段配置不同的值。**网络标识必须保证相互连接的每个段的地址不相重复。而相同段内相连的主机必须有相同的网络地址。而“主机标识”则不允许在同一个网段内重复出现,也就是标识同一网段的主机
我们将IP地址分为四个级别,分别为A类、B类、C类、D类。它根据IP地址中从第1位到第4位的比特列对其网络标识和主机标识进行区分。

  • A类地址:A类IP地址是首位以“0”开头的地址。从第1位到第8位是它的网络标识,后24位相当于主机标识。因此,一个网段内可容纳的主机地址上限为16,777,214个。
  • B类地址:B类IP地址是前两位为“10”的地址。从第1位到第16位是它的网络标识,后16位相当于主机标识,因此,一个网段内可容纳的主机地址上限为65,534个。
  • C类地址:C类IP地址是前三位为“110”的地址。从第1位到第24位是它的网络标识,后8位相当于主机标识。因此,一个网段内可容纳的主机地址上限为254个。
  • D类地址:D类IP地址是前四位为“1110”的地址。从第1位到第32位是它的网络标识。D类地址没有主机标识,常被用于多播。

注意:A、B、C、D类的子网掩码仅仅是默认,也可以灵活配置。

IP地址通过子网掩码(网络前缀)来区分网络标识和主机标识两部分。
用“1”表示IP网络地址的比特范围,用“0”表示IP主机地址范围。将它们以十进制表示,其中“1”的部分是网络地址部分,“0”的部分是主机地址部分。具体如下:

在这里插入图片描述
接下来介绍一下IPv4首部,通过IP进行通信时,需要在数据的前面加入IP首部信息。IP首部中包含着用于IP协议进行发包控制时所有的必要信息。了解IP首部的结构,也就能够对IP所提供的功能有一个详细的把握。
在这里插入图片描述

  • 版本:由4比特构成,表示标识IP首部的版本号。IPv4的版本号即为4,因此在这个字段上的值也是“4”。此外也有一些其他版本。
    在这里插入图片描述
  • 首部长度:由4比特构成,表明IP首部的大小,单位为4字节(32比特)。对于没有可选项的IP包,首部长度则设置为“5”。也就是说,当没有可选项时,IP首部的长度为20字节(4×5=20)。
  • 区分服务:由8比特构成,用来表明服务质量。每一位具体含义如下:
    在这里插入图片描述
  • DSCP段与ECN段:DSCP(Differential Services Codepoint,差分服务代码点)是TOS(Type Of Service)的一部分。现在统称DiffServ,用来进行质量控制。ECN(Explicit Congestion Notification,显式拥塞通告)用来报告网络拥堵情况,由两个比特构成。
  • 总长度:表示IP首部与数据部分合起来的总字节数。该字段长16比特。因此IP包的最大长度为65535字节。
  • 标识:由16比特构成,用于分片重组。同一个分片的标识值相同,不同分片的标识值不同。通常,每发送一个IP包,它的值也逐渐递增。此外,即使ID相同,如果目标地址、源地址或协议不同的话,也会被认为是不同的分片。
  • 标志:由3比特构成,表示包被分片的相关信息。每位含义如下:
    在这里插入图片描述
  • 片偏移:由13比特构成,用来标识被分片的每一个分段相对于原始数据的位置。第一个分片对应的值为0。由于FO域占13位,因此最多可以表示8192个相对位置。
  • 生存时间:由8比特构成,它最初的意思是以秒为单位记录当前包在网络上应该生存的期限。然而,在实际中它是指可以中转多少个路由器的意思。每经过一个路由器,TTL会减少1,直到变成0则丢弃该包。
  • 协议:由8比特构成,表示IP首部的下一个首部隶属于哪个协议。
  • 首部校验和:由16比特(2个字节)构成,也叫IP首部校验和。该字段只校验数据报的首部,不校验数据部分。它主要用来确保IP数据报不被破坏。校验和的计算过程,首先要将该校验和的所有位置设置为0,然后以16比特为单位划分IP首部,并用1补数计算所有16位字的和。最后将所得到这个和的1补数赋给首部校验和字段。
  • 源地址:由32比特构成,表示发送端IP地址。
  • 目标地址:由32比特构成,表示接收端IP地址。
  • 填充:在有可选项的情况下,首部长度可能不是32比特的整数倍。为此,通过向字段填充0,调整为32比特的整数倍。
  • 数据:存入数据。将IP上层协议的首部也作为数据进行处理。

IPv6

IPv6(IP version 6)是为了根本解决IPv4地址耗尽的问题而被标准化的网际协议。IPv4的地址长度为4个8位字节,即32比特。而IPv6的地址长度则是原来的4倍,即128比特,一般写成8个16位字节。我们看一下IPv6的特点:

  • IP地址的扩大与路由控制表的聚合:IP地址依然适应互联网分层构造。分配与其地址结构相适应的IP地址,尽可能避免路由表膨大。
  • 性能提升:包首部长度采用固定的值(40字节),不再采用首部检验码。简化首部结构,减轻路由器负荷。路由器不再做分片处理。
  • 支持即插即用功能:即使没有DHCP服务器也可以实现自动分配IP地址。
  • 采用认证与加密功能:应对伪造IP地址的网络安全功能以及防止线路窃听的功能(IPsec)。
  • 多播、Mobile IP成为扩展功能:多播和Mobile IP被定义为IPv6的扩展功能。

我们常常使用十六进制对其进行表示:
在这里插入图片描述

路由控制

路由控制是指将分组数据发送到最终目标地址的功能。即使网络十分复杂,也可以通过路由控制确定到达目标地址的通路。所有主机都维护着一张路由控制表,该表记录着IP数据在下一步应该发给哪一个路由器。IP包将根据这个路由表在各个数据链路上传输。但是如何从源地址到目的地址,这其中要经过多个节点,如何让速度最快,花销最小呢,这就需要路由控制来生成一张合理的路由控制表。
在这里插入图片描述
路由控制具体的实现方法,我们分为两种,静态路由控制,动态路由控制。

静态路由控制

静态路由控制是指手动配置路由条目,无需动态学习,管理员直接在路由器中指定 “目标网络→下一跳地址→出接口”。

动态路由控制

而动态路由控制是通过路由协议自动学习网络拓扑并更新路由表,适用于复杂、大规模网络。

首先我们需要先介绍一下自治系统AS。AS 是一个由单一管理实体(如企业、运营商、机构)控制的网络集合,内部遵循统一的路由策略,对外表现为一个独立的路由单元。每个 AS 由唯一的 AS 号(AS Number) 标识(16 位或 32 位,如 AS100、AS65001),由 IANA 统一分配。AS能够将网络划分为逻辑上的 “自治单元”,每个 AS 由单一管理实体控制,内部网络结构和路由策略统一,对外只需通过边界设备(如 BGP 路由器)与其他 AS 交互,大幅降低全局路由的管理难度。

我们将路由策略根据应用范围我们将其分为两类:
1 内部网关协议:IGP 是运行在同一个自治系统内部的路由协议,用于实现 AS 内各路由器之间的路由信息交换,生成和维护本 AS 内的路由表。其核心目标是高效、快速地计算到达本 AS 内各网络的最优路径,并支持网络拓扑变化时的动态更新。一些常见的IGP协议包括:RIP、OSPF、IS-IS以及EIGRP。
这里以OSPF举例进行介绍,OSPF 是一种基于链路状态路由算法的内部网关协议,通过 Dijkstra 算法计算路由器到网络中所有目标的最短路径(以 “代价” 为度量),最终构建以本地路由器为根的 “最短路径树”,并生成最优路由表。

2 外部网关协议:EGP 是运行在不同自治系统之间的路由协议,用于实现 AS 之间的路由信息交换,控制跨 AS 的路由传播,并支持策略性路由(如选择特定路径、过滤流量等),主要包括BGP等。
1 邻居建立:BGP边界路由器与相邻AS的BGP路由器建立TCP连接,交换OPEN消息协商参数。
2 路由交换:发送UPDATE消息传递可达路由,或撤销不可达路由。维护BGP路由表,存储所有收到的路由,并根据策略筛选最优路径注入 IP 路由表。
3 路由决策:按优先级顺序比较路径属性,选择最优路径。

IP分包与重组

IP是实现多个数据链路之间的协议,数据链路根据种类的不同而各有特点,而最大的区别就是它们各种的最大传输单位(MTU)不同。MTU的值在以太网中是1500字节,在FDDI中是4352字节,而ATM则为9180字节。为了解决这一个问题,IP进行分片处理,将较大的IP包拆分成多个较小的包,在我们之前介绍的IPv4的首部中就包含多个部分来标识这点。标识、标志以及片偏移。

标识(Identifier):同一数据包的所有分片共享相同标识,用于重组。
标志(Flags):DF若置1,禁止分片,若 MTU 不足则丢弃数据包并返回 ICMP 错误。MF若置1,表明后续还有分片;置 0 为最后一个分片。
分片偏移量(Fragment Offset):标识分片在原始数据包中的相对位置(以 8 字节为单位)。

分片的包到了对端目标地址以后会再被组合起来传给上一层。
注意:
1 仅由目标主机负责重组分片,根据标识、源 IP、目标 IP 组合识别同一数据包的分片。
2 重组超时:若分片未在规定时间内收齐,目标主机会丢弃已接收的分片并释放资源。
此外IP属于面向无连接型,不需要建立与对端目标地址之间的连接,上层如果遇到需要发送给IP的数据,该数据会立即被压缩成IP包发送出去。不会等待,也不需要事先建立连接。主要有两点原因:一是为了简化,二是为了提速。面向连接比起面向无连接处理相对复杂。甚至管理每个连接本身就是一个相当繁琐的事情。此外,每次通信之前都要事先建立连接,又会降低处理速度。需要有
连接时,可以委托上一层提供此项服务。为了提高可靠性,上一层的TCP采用面向有连接型。不过,这层我们还不需要考虑。

IP数据传输方式

我们将IP数据传输方式分为单播、广播以及组播三种。

单播

单播也是最简单的,一对一传输发送方发送的每个 IP 包仅针对单个接收者,源 IP 地址为单播地址(主机的唯一标识),目标 IP 地址为特定主机的单播地址。

广播

广播地址用于在同一个链路中相互连接的主机之间发送数据包。将IP地址中的主机地址部分全部设置为1,就成为了广播地址,例如把172.20.0.0/16用二进制表示如下:
在这里插入图片描述
将这个地址的主机部分全部改为1,则形成广播地址:
在这里插入图片描述
再将这个地址用十进制表示,则为172.20.255.255。
广播分为本地广播直接广播两种。在本网络内的广播叫做本地广播。例如网络地址为192.168.0.0/24的情况下,广播地址是192.168.0.255。因为这个广播地址的IP包会被路由器屏蔽,所以不会到达192.168.0.0/24以外的其他链路上。
在不同网络之间的广播叫做直接广播。例如网络地址为192.168.0.0/24的主机向192.168.1.255/24的目标地址发送IP包。收到这个包的路由器,将数据转发给192.168.1.0/24,从而使得所有192.168.1.1~192.168.1.254的主机都能收到这个包。

组播

组播用于将包发送给特定组内的所有主机。由于其直接使用IP协议,因此也不存在可靠传输。在人们使用组播功能之前,一直采用广播的方式。那时广播将数据发给所有终端主机,再由这些主机IP之上的一层去判断是否有必要接收数据。是则接收,否则丢弃。然而这种方式会给那些毫无关系的网络或主机带来影响,造成网络上很多不必要的流量。况且由于广播无法穿透路由,若想给其他网段发送同样的包,就不得不采取另一种机制。因此,组播这种既可以穿透路由器,又可以实现只给那些必要的组发送数据包的技术就成为必选之路了。
组播使用D类地址。因此,如果从首位开始到第4位是“1110”,就可以认为是多播地址。而剩下的28位可以成为多播的组编号。从224.0.0.0到239.255.255.255都是多播地址的可用范围。其中从224.0.0.0到224.0.0.255的范围不需要路由控制,这一范围的多播地址被明确定义为 “链路本地多播地址”,其作用范围严格限制在同一物理网络或逻辑子网内(如以太网、VLAN),不会被路由器转发到其他子网。而在这个范围之外设置多播地址会给全网所有组内成员发送多播的包。利用IP多播实现通信,除了地址外还需要IGMP(Internet Group Management Protocol) 等协议的支持。

总结

本期详细介绍了网络层,下期将介绍传输层的TCP和UDP。

写在文末

 有疑问的友友,欢迎在评论区交流,笔者看到会及时回复

请大家一定一定要关注!!!
请大家一定一定要关注!!!
请大家一定一定要关注!!!
友友们,你们的支持是我持续更新的动力~

创作不易,求关注,点赞,收藏,谢谢~
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wxchyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值