Advertisement

网络层IP协议

阅读量:

网络层

【1

1、基本概念

在这里插入图片描述

1)为何必须将数据传递到下一个相邻的路由器上?换句话说,在传输距离很长的情况下(例如从一个偏远地区传输到另一个城市),为何不能直接连接而非经过多个中继节点?这是因为我们需要一种机制来确定最佳传输路径(即路径选择问题)。

2)在这种情况下如何确定最佳路径?我们需要引入IP地址的概念:每个网络都有唯一的公网IP地址。通过这种方式(即通过IP地址标识),目标宿主C就可以被唯一识别出来;因此,在这种情况下(即当所有相关参数已知时),某台特定的算法将能够确定最佳传输路径(即路径选择算法)。

我们需要明确主机B与路由器F之间的组网关系,并认识到路由器F与G之间也存在相同的组网架构。网络通信的本质则是通过逐个子网传输信息。

问题1直接关联于网络层(IP)的挑战, 而问题2则涉及局域网通信的难题. 由于我们已经在之前的章节中详细讲解了局域网通信的知识, 因此今天的重点将集中在这一层面.

按类型划分,IP地址可分为IPv4和IPv6两种类型。 IPv4采用32位地址格式,在点分十进制系统中表示(如42.194.197.13)。这里每位取值范围为0到255。因此 IPv4的范围可表示为[0, 2^8-1].[0, 2^8-1].[0, 2^8-1].[0, 2^8-1] 。而 IPv6则采用128位十六进制编码方式(例如: 2001:db8::8a2e:370:7334),其结构特点使其能有效扩展网络资源并提升安全性与容错能力等特性。 IP地址的作用在于确保网络设备能够唯一识别各主机

我们以取经之路为例,在前往西天的过程中, 唐僧会向路人表述他的行程. 例如, 在女儿国会, 唐僧会对外宣告我要前往西天, 那么我该如何继续前行呢?而当唐僧抵达西天之后, 他会同样对外说道我要前往大雷音寺, 请问该如何走通向那里呢?在现实生活中也是如此, 如果你要从云南出发前往北京的天安门广场, 那么你向路人咨询时就会被告知: 我要去北京请问该如何走通向那里呢?一直到你抵达北京之后, 你才会对人说: 我要去天安门广场请问该如何走通向那里呢?在这个过程中, 在路上我们选择了到达北京作为路由节点; 当抵达目的地时, 我们则采用故宫作为最终的路由节点. 实际上 IP 地址是被分成两部分组成的: IP 地址 = 目标网络 + 目标主机

具备IP地址并负责路由管理的设备被定义为主机
既是具有IP地址又具备路由控制功能的设备被称为路由器
将主机与路由器共同称为'节点'
在上述从主机B到C这条路径上的所有主机与路由器我们可以都视为节点


重谈TCP和IP:

在这里插入图片描述

经过传输层数据处理,在完成TCP报头封装后需继续向下一层传递信息。随后,在完成网络层面的报头封装后再向上一层发送请求或其他类型的信息。同样地,在数据链路层面也需要遵循类似的流程安排。各层次认为彼此间的通信是直接进行的,并非通过中间层级间接传递信息。
我们将传输层数值称之为数据段、将网络层数值称之为数据包、将数据链路层数值称之为帧或分组。

IP核心作用:通过跨网络传输将数据发送至目标主机!
如果出现丢包情况呢?IP本身并不负责处理这种情况,默认情况下会触发超时重传机制由传输层TCP来完成数据重传。IP赋予了一种功能:将数据从一个网络节点传输到另一个网络节点的能力。然而仅仅拥有这种能力并不意味着能够完全实现目标;这种能力只是意味着成功概率非常高。
假设某位学生张三在数学考试中拥有满分的能力:他在每次考试中都有极大概率获得满分的成绩;但实际情况中他可能由于各种原因未能每次都考得满分(如148分、147分等)。为了确保张三能够获得满分成绩的教学主管会采用如下策略:如果张三未能在某次考试中获得满分,则对该次考试成绩进行作废并重新安排重考;只要持续执行这一策略就可以保证张三最终能够达到满分水平(因为只有当存在满分成绩时才会继续考试)。**这里的教学主管相当于TCP协议;而张三则代表IP协议;通过TCP/IP组合实现了可靠的数据传输功能:即从一个主机将数据传输至另一个主机的目标功能。而对未达标的重考机制则对应于TCP协议中的超时重传机制;此外TCP还承担着可靠性的策略设计(如超时重传、确认应答、滑动窗口、拥塞控制等)任务;而IP则专注于具体的传输过程(如路由选择)。两者协同合作便实现了可靠的数据发送能力。


2、IP协议报头

在这里插入图片描述

在IP协议(IP)报头和TCP协议(TCP)报头之间存在显著的相似性,在结构上两者都规定了固定的前20字节作为首部字段。这些首部字段为数据传输提供基本的信息参数,并能够承载选项字段以实现特定的数据传输需求。其中首部长度字段与TCP协议遵循相同的规范(即由4位二进制数表示),其取值范围为0至15(十进制),即[0, 15]区间内整数值。由于每个IP报头包含4个这样的首部长度字段(总计16位),因此整个IP报头的有效载荷区域范围是从20字节到60字节([20, 60]区间)。通过分析接收端接收到的实际首部长度值与预期值之间的差异关系即可判断数据中是否携带额外的选项信息:若接收到的实际总数据量大于20字节,则表示存在选项字段;反之则说明仅包含基本数据而不携带任何附加信息。此外,在实际应用中还需注意计算接收端接收到的总有效载荷大小时应减去所有不必要的首部开销部分以获得准确的数据量评估结果

2、如何实现分用?
在IP报头的8位protocol字段中,在操作系统内部都有对应的protocol编号。其中TCP protocol(传输层中的TCP)其protocol number设定为6(protocol number),而UDP protocol(传输层中的UDP)则被指定为17(protocol number)。因此需要填入这8位特定的编号,在进行分用操作时,则可以通过查看这8位特定的编号来确定要分配给哪个上层protocol。

4位版本号(version):指定 IP 协议的版本,对于IPv4来说就是4。

该系统采用八种服务类型(Service Type),其中包括已弃用的三bit优先权字段(3-bit priority field)、四bit TOS字段(4-bit TOS field)以及一个保留字段(1-bit reserved field),其中后者必须设置为零值(0)。四bit TOS字段分别代表最低延迟(lowest delay)、最高数据传输率(highest data rate)、最佳可靠性保障(best reliability)以及最低运行成本(lowest operational cost)。这些指标之间存在矛盾关系,在实际应用中需综合考虑。例如,在SSH和Telnet这类连接需求对最低延迟有较高要求的应用场景下应优先考虑最低延迟选项;而在FTP类应用中则更关注数据传输速率

**生存周期(Time To Live, TTL)是指从发送方到接收方的数据包最多需要穿越多少个网络设备。**其默认值通常设置为64;每当经过一个网络设备时(即路由器),会将生存周期计数值减一;当计数值降为零但尚未到达目的时,则认为该数据包无法成功传输而被丢弃;这一字段的主要作用是检测并防止网络中的路由环路;它的功能是在每个路由器节点进行管理时执行一次‘减一’操作

16位标识、3位标志、13位片偏移到后面IP组装和分片再谈。


3、网段划分

有了目的地址是不够的!
比如今天我要从云南到北京,你想去就能去吗?这是因为从云南到北京修了路,从云南到北京的各种路段都是被设设计过的,所以你可以到北京。因此路是被设计过的。

而IP报文光有目的IP是不够的,网络也是被设计过的——子网划分。
那么网络被谁设计的呢?——网络服务提供商ISP,在我国就是三大运营商:移动、电信、联通。

在这里插入图片描述

在图中存在两个子网,在其上面子网的主机IP地址均以192.168.128开头;因此其网络号为:192.168.128.0。而在下面子网中的主机IP地址则均以

子网内的IP地址是由谁给予的?首台入网设备——路由器!它具备构建子网的能力!因此,在我们需要上网时会连接到该路由器,并依此申请获取IP地址。通常情况下路由器会赋予固定网络标识值,并将主机标识设为"1"(因为它是首台入网设备)。因此,在包含该路由器的两个子网上都会被赋予相应的网络标识值;而在每个子网上所有使用的设备其主机标识均为"1"。
这里的内网IP实际上指的是内部私有地址。那么当获得一个IP地址时如何确定其网络号呢?
例如:192.168.128.18这一特定的IP表示方式中"24"代表的是前24位是该设备所在的网络号部分而剩余的部分则是用来标识具体的主机。
有一种名为DHCP的技术能够自动为接入该内网并处于活跃状态下的新加入主机分配独特的IP地址从而避免了繁琐的手动配置过程。

当今天上面子网的一台主机(IP地址为...)需要发送数据至另一台位于不同子网上(目标IP地址为...)的主机时,在上述子网上的一台主机会首先解析出目标IP地址中的网络部分,并将其与自身的网络号进行比对。如果两者一致,则表示这两台主机属于同一个子网格范畴内;由此可知可以直接在本网格内完成通信操作;若两者不一致,则该主机无法确定对方具体的身份信息;但因为清楚地知道对方不在同一个网格范围内;因此会将待发送的数据包提交给路由器机构处理;由路由器机构负责将此数据包进一步转发至目标位置。
一个有效的数据传输过程必须遵循以下步骤:首先要依据接收端指定的目标IP地址定位待传输的数据包的目的地位置;其次要将该数据包转交给相应的路由器机构以完成进一步的路由分配。


在大学期间每位同学都会获得一个学号,在这个系统中这个号码会被用来唯一标识每个学生个体。然而这个学号并非仅仅是一个简单的数字而是由多个部分组成的复合体包括入学年份学院归属专业类别以及在班级中的具体位置等信息最后再加上你在这个班级中的座位编号。从这个角度来看我们可以将IP地址视为类似的复合编号系统它由目标网络部分加上主机号两部分组成为此我们举个例子不过为了便于说明我们将简化处理仅考虑学院编号加学生编号的情况:

首先在讨论学号组成结构时我们可以将其比作层级分明的组织架构比如按照入学年份将学生划分为不同的年级层然后再根据学院细化到系属层接着根据专业进一步细分到学科领域最后每位同学则对应于该学科中的具体个体位置这样的层次化管理方式有助于实现精准识别与追踪

在这里插入图片描述

计算机科学与技术系指定编号为01号、理学院指定编号为02号等学科门类相关机构通常会建立专门的学生信息管理系统。其中最基础的功能是实现学生之间的联系与沟通机制设计。具体而言,在这种系统中设置了一个统一的学生信息编码规范:每位学生的信息编码由两部分组成:前缀表示所属院系代码(如:计算机系对应编码前缀"CF"),后缀则表示该学生在对应院系中的唯一标识码(如:张三是计算机系某学生,则其信息编码可能形如"CF-34567")。这种编码机制既便于组织管理又便于快速定位特定信息资源,在实际应用中具有重要价值。

1、为什么要这么做?
这个过程的本质就是查找,在这个过程中会进行淘汰筛选。第一种方式中张三是以单兵作战的方式进行淘汰筛选的个体;而第二种方式则采取多管齐下的策略,在一次操作中就将理学院、经管学院等其他学院全部纳入淘汰范围的同时定位到机械学院位置。因此这种整体性处理大大提高了筛选效率,在查找过程中实现快速定位目标对象。

**2、在进入目标子网之前,请注意张三与计算机学院学生会主席对IP地址06-32-15中的32-15是否感兴趣?他们不关心该部分的具体数值——因为路由仅根据IP地址中的目标网络部分来进行判断和转发决策。

3、到达目标子网,才开始关心06321中的321,做内网转发。

4、IP由目标网络与目标主机组成,在处理路径中的路由时我们只关注目标网络其基本单位即为目标网络。


历史上曾有一种用于区分网络号与主机号的方法被提出,在此基础之上将所有的IP地址划分为五大类(如图所示)。

在这里插入图片描述

A类型从IP地址$$B类型从IP地址$$C类型从IP地址$$ $ $ $ $ $ ;**D**类型从IP地址;**E**类型从IP地址到``。

针对这种情况采用了新的分类方案并称之为CIDR(Classless Interdomain Routing):
在原有基础上引入了一个额外的子网遮盖码(subnet mask),用于区分网络地址与主机地址。其数值为32位的一个正整数,并且通常会以连续的一系列‘0’结尾。为了区分网络地址与主机地址,在此过程中我们对IP地址与其对应的遮盖码执行按位与运算操作得到结果即为网络地址位置。这一划分与其所属的A/B/C类IP地址无关

在这里插入图片描述

IP地址与子网掩码还可以采用一种更为简洁的方式来表示相关参数值... 例如 140.252.20.68/24 ,其中该IP地址由四个八进制数组成分别为1402522068 ,而该子网掩码则由其前缀长度为... 也就是说 ... 其前缀长度为... 时每一位均为数值一(即二进制形式下的全一序列),具体对应到十进制则为每个分组中的数值分别为... 这样一来就实现了对原有IP地址与子网掩码信息的有效简化表示


特殊类型的IP地址:
1、当将IP地址的主机部分设置为全零时,则成为网络号;这种配置表示一个特定的局域网。
2、当将其主机部分设置为全1时,则成为广播地址;这种配置用于向所有与之直接连通的主机发送数据包。
3、以127.*开头的IP表示本机环回(loop back)测试;通常情况下,默认值是127.0.0.1

IP地址的数量限制:
众所周知,在IPv4体系下,IP地址是一种由32位二进制数组成的4字节正整数。因此总共有大约2^32个可用IP地址(约42.9亿)。按照TCP/IP协议的规定,每个主机都需要一个唯一的IP地址。这似乎意味着网络中最多只能支持约42.9亿台主机?
然而实际上由于某些特殊的 reserved IP 地址的存在数量远低于这一数值。另外需要注意的是IP地址并非完全按照主机数量配置而是每个网卡都需要一个或多个独立的IP地址。尽管CIDR机制在一定程度上缓解了这一问题(提高了资源利用率减少了浪费但并未增加固定上限)这一问题依然存在较大挑战性为此提供了三种解决方案:
1、动态分配 IP 地址:仅向接入网络的设备分配相应的IP地址(同一MAC地址的不同设备每次接入时可能获得不同的IP)。
2、NAT 技术(后续将详细介绍)。
3、IPv6:虽然不是IPv4的一个简单升级版本但它采用了完全不同的架构设计与协议栈与现有IPv4系统无法直接兼容目前尚未得到广泛应用。


4、私有IP地址和公网IP地址

对于内部建立局域网的企业或组织而言,在局域网内部通信时仅需使用专属该网络段落的特定IP地址配置即可实现通信需求;理论上任意分配的IP地址均可使用;然而根据RFC 2854标准规定了一组用于私有网络使用的专用IPv4地址范围;其中包含以下三个子网段:

  • 网络号位于前8位且总共有 2^{24} 种组合方式;
  • 网络号起始于0.0.0.0/90.0.255.255/9之间共计 2^{3}=8种选择;
  • 网络号起始于0.3.0.0/80.3.255.255/8之间共计 4 \times 2^{24} 种可能性;

私有IP就是从IP这一块大蛋糕中分离出来一小块作为私有IP资源,而公网IP则占据了大部分市场空间。
补充说明:私有IP仅限于构建内部网络环境,无法进入公网环境使用。

在Windows终端中输入ipconfig:

在这里插入图片描述

我的学校网络给了我这台电脑一个内网IPv4地址。因为学生较多,所以通常会采用10.*格式来构建内网子网。如果是在家,则一般使用192.168开头的 IPv4 地址,并且不同家庭可能使用相同的 内网 IPv4 地址。私有 IPv4 仅用于内部网络,因此在同一个私有子网上可以配置多个设备,而公网 IPv4 地址必须唯一!当模拟网络环境时,在 内部 和 外部 网络中应分别采用对应的 子 网掩码设置方式进行规划

在家庭环境中最普遍的做法是路由器提供支持以建立局域网络,并且能够自动规划和配置合适的网络划分。
局域网络的划分不仅是我们完成的任务也是通信服务提供商(runway)等企业致力于优化网络结构的重要内容!


1、基本网络情况:

在这里插入图片描述

首先,申请IP,无论是公网IP还是内网IP,网络建设工作都是由运营商来做的,国内最常见的就是移动、电信、联通。
如图,红色方框构建了一个家庭子网,而我们想要入网都是要打电话给运营商,然后运营商就会派个人过来,给我们装上猫、路由器,从最近的地方拉一条线过来。通过路由器构建一个子网,所以我们就可以使用手机、电脑连接路由器,就可以上网了。那么对于下面的就是同村的其他人家也构建的一个子网,对于右边就可能是其他镇的人家构建的一个家庭子网。并且我们注意到,红色方框构建的子网的内网IP和右边的内网IP是相同的,因为内网IP可以重复。路由器具有构建子网的能力,要先有路由器才能构建子网,我们才能连接路由器上网,所以路由器的子网IP地址一般都是xxx.xxx.xxx.1。

从我家路由器出去的报文,并未直接抵达公网而是必须先进入运营商构建的一个更大的子网中。
在上图中 家里的路由器不仅是家中子网的一部分 还是另一个更大子网中的重要一员 其他家也是如此 这个运营商路由器很可能就是市内一个大型子网 包含数十万家路由器与之形成更大的网络结构 因此 路由器被划分为家用路由器和企业路由器。
由于家用路由器跨越了两个子网 所以它拥有两个IP地址 一个是家里子网的IP地址 192.168.1.1/24 又称为LAN口IP地址 另一个是与运营商路由器组成的更大子网中的WAN口IP 10.1.1.2/24。
因此 数据经过家用路由器后再传输至运营商路由器 最终才算是进入了公网 因此 数据要想进入公网 必须经过运营商路由器这一环节。

为什么选择向运营商缴纳费用?
路由器配置较为复杂,在家庭网络中通常设置有两个账号:一个是手机账号(第一个账号),另一个是家庭内部使用的子网账号(第二个账号)。当用户的网络请求(报文)经过路由器发送至运营商时,在运营商端会通过手机号码查询用户的欠费情况:如果已缴纳费用,则不会对流量进行拦截;若未缴纳,则会阻止该请求的转发至公网。家庭内部使用时,则需输入子网内的IP地址及密码即可连接网络。

所有用户的网络请求必须先通过运营商进行流量转发才能到达公网环境。
然而,在某些情况下(如因欠费或访问地址不合法),运营商可能会主动拦截这些请求以限制用户的上网行为。例如:今天试图访问谷歌这一国际型网站时,在运营商识别出目标地址位于国外后会主动拦截该请求并阻止其进入公网环境;因此你将无法正常访问如谷歌这样的国际网站。

**要成功访问国际型网站就需要采取FQCN策略(Fractional Quadrature),这是一种通过伪装合法IP地址来欺骗运营商的技术手段。

在这里插入图片描述

现在我们想向抖音服务器请求一个短视频,我们主机的IP地址为:192.168.1.201,抖音服务器IP地址为:122.77.241.3。所以首先填上源IP和目的IP地址,接着根据目的IP地址与子网掩码进行按位与操作,可以获取目标网络:122.77.241.0,而当前网络号为:192.168.1.0,我们主机当然不知道这个IP地址是哪台主机,但是可以肯定的是绝对不在当前子网中,因此就将它交给家用路由器。家用路由同样进行按位与,家用路由器同样不知道这个IP地址是谁,但是可以肯定的是绝对不在当前运营商路由器构建的大子网中,因此再交给运营商路由器。运营商路由器其实还可能继续向上叠加,构建成庞大的子网结构,不过我们当前图比较简单。运营商路由器收到报文,运营商路由器就将这个报文转到公网的抖音服务器上了。
那么现在抖音服务器就需要应答了,源IP地址就是:122.77.241.3,但是我们发现目的IP地址是192.168.1.201,这就出问题了,因为这是不可能给原来发送的主机应答的,因为内网IP是会被重复使用的,你压根不可能知道是拿一台主机。因此实际上在转发是下面这样的:

在这里插入图片描述

当你的主机将报文转发给家用路由器,家用路由器发现不在当前子网中,但是家用路由器的这个更大的子网已经和之前家里的子网不同了,所以源IP地址192.168.1.201就不能再出现在更大的子网中, 所以家用路由器将srcip替换成所经过的路由器的WAN口IP,所以此时srcip变成了:10.1.1.2。接着转发给运营商出入口路由器,而内网IP是不能出现在公网中的,所以继续进行替换,srcip变成了:122.77.241.4,然后就进入公网转发给抖音服务器了。将来抖音服务器响应的时候,srcip就是:122.77.241.3,dstip就是:122.77.241.4,所以就将响应返回给曾经发送给我的出入口路由器。至于后续过程就需要到后面再来讲解。
我们把从内网到公网,源IP地址替换的技术称为:NAT技术(Network Address Translation)。

NAT技术如何解决IP地址不足的问题?因为它独立划分一部分IP,并且仅限于内网使用,从而实现IP地址的循环使用。


2、全球网络:
**IP地址这块大蛋糕首先被私有IP分发了一部分出去,剩下的则是公网IP.而剩下公网IP是以国家.组织.公司.学校等为单位进行申请的.

在这里插入图片描述

我们假设采用国家作为单位的申请策略,则将全球网络地址划分为多个区块。其中美国分配到的网络地址为1.0.0.0/8范围,在中国则对应6.0.0.0/8区间。每个国家都必须配置相应的国际中转路由器设备。具体而言,在美国这一区块中,默认情况下该国国际中转路由器IP地址设置为1.0.0.1;而中国的国际中转路由器IP则定位于6.0.0.1位置。需要注意的是,在全球范围内构成一个统一的公网架构时,默认情况下各国必须互换各自区域内的IP信息与路由配置数据。因此在配置中国的国际中转路由器时,请确保系统能够访问并获取包括美国在内的所有国家对应的IP地址信息:目标网络、子网掩码以及下一跳节点(实际系统中的路由条目不包含地区字段仅为操作便利起见已做补充说明)。例如对于美国来说目标子网即为1.

中国的公网IP地址分配如下:6.0.0.0至6.255.255.255为总量上限;由于我们国家共有33个省级行政区域,因此需要进一步细分这些地址资源,并将其中一部分分配给每一个省份。

在这里插入图片描述

由于前8位已经被国际路由器划分为特定区域,请我们从第9位开始继续划分网络号。以陕西地区的示例为例,在该区域分配给陕西省的网络号为6.1.0.0/16,在浙江地区则分配给浙江省的是6.5.0.0/16。此外还有很多其他省份也有类似的划分安排,请大家相互了解。这些省份之间也存在自己的专用分组路由器。陕西省与其他省份之间的专用分组路由器上设置的本地端口地址均为6.x.x.x-XX.TTL 24小时有效(X代表不同的数值),而浙江省与其他省份之间的专用分组路由器上设置的本地端口地址则有所不同(Y代表不同的数值)。为了方便管理这些专用分组路由器之间的通信关系,请将这些设备集成到同一个子网中进行管理。当陕西地区上线时,请所有 provinces' 专用分组 routers 都会收到通知:请将上述信息加入各自的状态数据库中并及时更新配置参数。

抵达陕西省后**(段落)** ,除了继续向下划分子网络段外 ,还应将每个地级市分配一定数量的公网IP地址 。目前采用的是16位地址空间 (数学公式... ,在此基础上我们额外预留4位用于进一步细分 (但具体操作尚未实施) 。不过目前阶段我们不做细分处理为止 。接下来就是当地运营商组建自己的局域网了 :

在这里插入图片描述

陕西省自行搭建了省内局域网,并非所有省份都例外;每个省份的情况可能都较为复杂,在此处我们仅绘制两层架构示意图即可满足需求。
当陕西省内一台主机 IP 地址为 192.168.1.201 尝试接入 www.google.com 网站时(假设目标 IP 地址为 1.2.3.4 且无防火墙阻挡),该主机首先会计算目标 IP 地址与自身子网掩码 255.255.255.0 的按位与结果,并对比所属网络段;由于发现目标 IP 地址不属于当前网络段范围,则判断该 IP 地址不在本子网内而需转发至家用路由器。
位于同一国家内部的家用路由器与运营商出入口路由器属于同一网络段;当后者接收目标 IP 地址时(再进行子网掩码 255.255.255.0 的按位与运算后得到 1.2.3.0),若判定当前节点不在同一网络区,则需将源 IP 地址转换为当前路由器的 WAN 接口 IP 地址并继续转发给运营商出入口路由器。
运营商级别的路由器接收到该目标 IP 后(再次计算子网掩码 255.255.0.0 得到 1.2.x.x)会检查其对应的目的地国家;若判定不属于中国境内则需转投国际路由系统;此时相关国际路由器会根据最终确定的目的地国家信息自动建立连接并完成传输。
值得注意的是,在中国境内各省市之间互连的 routers 都设有默认 routes;当某区域 router 收到未知国家请求时(如美国),系统会直接转发至外部网络以完成通信。

在这里插入图片描述
在这里插入图片描述

如果在路由表条目中查不到,就转发到缺省路由。

在这里插入图片描述

随后抵达美国后,在完成请求后


5、路由

在这里插入图片描述

当数据从主机A发送到主机B时,需要依次经过路由器A、路由器B、路由器C以及路由器D,最终到达主机B的位置。其中,主机A到路由器A属于同一子网内的通信,而从路由器A到下一个子网的中转 router B 则属于跨子网传输,这体现了网络通信的本质是子网间通信的关系。

当执行路由转发操作时,查找路由表的过程主要包括以下几种情况:

  1. 比如访问www.google.com时,数据包到达国际路由器后会根据下一跳地址指向美国的一个特定子网。
  2. 如果所有匹配的路由条目都无法找到目标网络,系统就会自动启用默认路由配置以确保通信顺畅。
  3. 当已确定位于目标网络范围内时,接下来将进行局域网层面的信息交互过程。

主机和路由器在自己的网络层都配置了自己的路由表信息。

在这里插入图片描述

如图所示:Destination标识目标网络,Gateway代表下一个接口上的主机,Genmask指定子网掩码,Iface说明采用哪个接口转发数据包.Flags字段中,U标志位表明该记录当前有效(可选择性地禁用某些字段),G标志位则指示该记录的目的下一跳地址属于某个路由器管理范围内的网络地址,若记录中无G标志,则说明目的网络地址与本地机接口直接相连,无需经过路由器进行转发处理.

转发过程示例1:假设目标主机IP地址设置为: 请参考完整内容 ,随后将其与第一行子网掩码进行按位与运算后得到 请参考完整内容 ,对比发现其对应的目标网络不同 。由于结果不符,则继续向下检查 。经过第二行子网掩码处理后再次进行计算得到 请参考完整内容 ,其结果恰好匹配当前的目标网络 ,因此选择eth1接口发送数据包
转发过程示例2:假设某台主机的IP地址配置为: 请参考完整内容 \, 经过前三次子网掩码验证运算比较发现均不符合条件 \, 最终确定采用默认缺省路由策略, 则最终数据包将通过eth0接口传输\, 完成整个转发流程, 确保通信连接正常建立\, 系统运行稳定可靠, 达到预期通信效果。


6、IP分片和组装

在这里插入图片描述

IP报文转发的核心机制是在各子网之间实现通信与转发。
核心问题在于寻找有效的路径以确保数据传输的可靠性与高效性。
其机制是通过淘汰非优路径来优化整体网络性能。
而关于IP报头中各项字段的具体功能尚未涉及,
下面将详细阐述这三个重要组成部分:
首先需要明确的是,
这些字段需要与TCP协议形成联动以确保完整的信息传递。

TCP协议中滑动窗口参数由双方确认 window 和 congestion window 共同确定;然而为什么不将滑动窗口内的信息一次性打包成一个大报文进行传输而选择分段发送呢?此外,在 IP 数据分片过程中

在这里插入图片描述

因此当面对冗长的数据量时 网络层面将不得不采取分片措施 该过程由本层级完成 而在后续组装环节则需由对方层级负责 体现了"谁污染谁治理"的原则。
同时 我们的层级与对方层级共同承担着分片与重组的任务 因此在IP报头中出现了三个关键字段。

分片好还是不好?
1、分片组装的细节,上层传输层不关心。
传输层给网络层10000字节的有效载荷,分片是由网络层进行的,将来对方的网络层要对这些分片进行组装合并成10000字节,然后交给上层传输层,网络层向上交付给传输层必须是10000字节。因此传输层在这个过程中不关心。
2、本来10000字节直接发送就是一个报文,分片后如:10*1000,那就是10个报文。将来任意一个报文丢包,就是不完整的,网络层组装失败而传输层压根就不关心,所以任意一个丢了就直接认为是丢包了。
3、分片之后,丢包的概率增加了。因此分片不能作为网络发送的主流!那么为了不分片,就需要传输层不要发送太大的报文段!

所以滑动窗口中的数据不直接打包成一个大报文是为了减少分片。


IP数据包是如何进行拆分和重组的?
传输层对数据包的拆分与重组过程完全透明。

在这里插入图片描述

16位标识符(id):特异标记用于唯一识别由发送方发出的报文。当IP报文在数据链路层被切分时,每个片段中都包含相同的该特异标记值。

暂未采用该字段(其含义暂未确定是否未来会应用)。第二位设置为1则表示禁止报文的拆分。当报文长度超过MTU时,则会导致该报文无法传输至目的地。第三位则用于标识是否需要将数据进行多段传输,在这种情况下(即进行了多段传输),最后一个分割块会被标记为0以表明其非最终块;而其他块则被标记为1以表明它们仍属于完整的一组分割数据。

13-bit frame offset:是指当前片段相对于原始IP报文起始点的位置偏移量。它表示的是当前片段在整个原始数据包中的具体位置信息。其对应的字节数即为此值除以8的结果。“因此,在此情况下(若前面所有片段均为8字节倍数),最后一份片段也必然是8字节倍数;而其余各片段长度必须维持这一标准(否则会导致整个数据包断开)。

1、接收方如何得知自己收到的报文分片了?
下面我们分别分析三种情况下的16位标识、3位标志、13位片偏移的值
收到第一个分片:16位标识,001,0
收到中间分片:16位标识,001,不为0
收到结尾分片:16位标识,000,不为0
而当我们没有分片,这是一个完整的报文:16位标识,000,0。只有这一种情况。

因此,如果3位标志 == 000 并且 片偏移 == 0 说明没有分片,否则就是分片了。
如果3位标志 != 000 或者 片偏移 != 0 说明分片了。

**2)请阐述接收方如何确认已完整接收所有分段数据?
1)基于16位标识符将各数据片段进行整合存储。
2)按照各片段的位置编码值从高到低依次排列存储顺序。
3)详细情况如下:
①当第一个数据片段的位置编码值不等于零时,则表明第一个数据片段丢失未被成功发送出去。
②若仅在所有数据片段中仅有一个末尾标记字段未被更新,则表明最终的数据片段已经完整接收完毕;反之则表示末尾部分未能正确接收完成。
③对于位于中间位置的数据片段丢失情况,则需通过计算当前片段的位置编码值与前一相邻片段的实际传输长度之和是否等于下一相邻片段的位置编码起始值来判断是否存在传输中断现象:如果两者相等,则表示中间传输过程没有发生断层;否则则表明中间某一部分的数据未能成功发送出去。”

3、接收方如何组装完整的报文?
按照前面两点自然推导出这一问题的答案。将报文按升序排列后可采取如下步骤:首先检查首片和末片是否存在;接着从首片开始依次检查每一片的偏移量与前一片的关系:如果当前一片偏移加上其长度等于下一片的起始位置,则认为无丢失;否则表明存在数据缺失。


IP如何分片?

在这里插入图片描述

细节1:分片是将IP报文的有效载荷进行分段处理。
细节2:片偏移表示数据在原始IP报文有效载荷中的起始位置。
细节3:片偏移的具体数值必须是8的整数倍。
例如某一片的片偏移值设定为1480,则在IP报头中的13位片偏移计算结果即为1480除以8等于185。
那么为什么要这样做呢?因为当使用13位来表示片偏移时其最大可表示范围仅限于[0 213]区间而实际上由于IP协议规定整个报头长度不得超过216因此仅使用13位不足以覆盖所有可能的有效长度值域。具体来说为了使能够覆盖到全部可能的有效长度范围则需要将每一份子流量的数据量乘以一个因子即2^3(即乘以8)。这样在发送方完成分片后填入对应的偏移值时需除以8;而在接收方恢复组装完整流量时则需将各部分数据相乘以恢复出正确的实际数据量。
因此在实际操作中发送端在填充子流量时应除以8接收端则需乘以相应的因子以便正确拼接成完整的流量信息。
细节4:经过分片处理后形成的每一部分都是一个完整的IP报文并包含了相应的IP报头信息。

在这里插入图片描述

如图:我们假设有一份包含3000字节的数据,在分片过程中,每一部分都需要包含IP报头字段。因此单片的有效数据容量上限为1500减去20字节的结果即为1480字节,在第一个分片段中包括前148O字节的数据以及必要的IP报头字段。其中IP报头中的16位标识字段被赋值为666O(这是一个示例值),而更多分片标志位设为I则表示后续还有更多的分片段存在;其偏移量计算结果是29GQ除以8等于37O字节

我们之前讨论了一种将数据包在发送端和接收端进行分割并重新组合的技术。值得注意的是,在网络内部也可能发生这种分片与重组的过程。具体而言,在经过中间路由器时(这些路由器可能是老旧配置),若其MTU设置为500,则会进一步分割已经存在的数据块。按照之前的介绍,在第一次分割时我们就提到了这一规则:即当再次分割时需要将包含16位标识符以及所有子数据包的内容复制到本地存储,并根据各自子数据包的偏移地址进行调整。例如,在图中所示的第二个子块上再次执行相同操作就会产生新的偏移值


全部评论 (0)

还没有任何评论哟~