
【Linux】:网络层
📃个人主页:island1314🔥个人专栏:Linux—登神长阶最后的最后,这里送大家一句话,希望大家于2025年一起奋斗,诸君共勉 💫。
📃个人主页:island1314
🔥个人专栏:Linux—登神长阶
⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞
最后的最后,这里送大家一句话,希望大家于2025年一起奋斗,诸君共勉 💫
- 生活总是不会一帆风顺,前进的道路也不会永远一马平川,如何面对挫折影响人生走向 – 《人民日报》
🔥 目录
一、前言🔥
🕸️ 之前,我们在这篇 【Linux】: 传输层协议 TCP 已经讲了关于 传输层上,TCP 究竟做了什么,那么实际在网络层中,tcp究竟做了什么,ip 又扮演了什么角色?
现在,我们来看下面一个小故事,方便我们对后面的理解,如下:
张三老爹是教务处主任他要求张三每次数学考试都考100分,张三也很争气,10次数学考试8次都是100分,但是架不住意义可能考了95分。而张三老爹每次必须让张三数学考100分,那张三老爹怎么办呢?他决定之前考试作废,重新考试,如果张三还没有考到,那考试继续作废,直到张三考到100分。
刚才我们两个人,一个教务处主任(张三老爹),张三(儿子)。考试的是张三,他也有能力考到100分,但并不一定每次都考到100。张三没考到没事他还有他老爹,他可以让他儿子继续考。
- 张三老爹:tcp 协议,提供可靠性
- 张三:IP ,真正办事的
- IP 协议的本质:1. 定位主机 2.提供一种能力,将数据跨网络从 A 主机送到 B 主机
- 用户需要的是:可靠的送到能力
- 老爹(tcp 可靠策略)+ 张三(ip 传输能力)
- 只有 策略+能力 才能一定能做到将数据从主机A可靠的跨网络送到主机B。
因此现在我们可以知道,前面 tcp
学的超时重传、确认应答、流量控制等等全都是策略!而具体怎么做全部都是由 ip
来执行!
二、IP 协议
1. 基本概念:
主机: 配有 IP 地址, 但是不进行路由控制的设备;
路由器: 即配有 IP 地址, 又能进行路由控制;
节点: 主机和路由器的统称;
2. 关于 IP
- 目的:要对所有的主机进行的唯一标识,全球内具有唯一性的 IP(公网 IP),每个主机都要有自己的 IP
- 源 IP:源主机 (localhost)
- 目的 IP:目的主机 (destination)
比如上面图中,主机B 要到达 主机C,它两并不是直接连接的,下面补充两个问题
- 凭什么要交给下一跳 route(为什么):网络层 IP 决定的
- 怎么把数据交给路由器(怎么办):进行局域网通信
- 因此我们可以知道相当于无数个局域网通信构成了主机 B 到主机 C 的广域网通信
因此我们可以得到一个小结论: IP = 目标网络+目标主机
举个例子,就比如我们要去旅游,如果要去目标城市 --> 就需要经过一些目标地点(高铁站、酒店 …),最后到达我们最后目的地
- 路径选择中,目标IP决定了我们的路径该如何走。
- 相当于是拿着目的 IP,主机——>进行路径选择路由器——>目标主机
因此我们可以得到一个结论:这是一套精心设计过的网络体系!
3. IP协议头格式
在学习任何网络协议之前,需要先理解以下两个基本问题:
- 如何将报头和有效载荷分离?
- 如何交付?
IP 报头与有效载荷分离
- IP报头选项:IP报头可以包含选项字段,但本文不讨论这些选项。
- 标准长度:IP报头的标准长度是20字节。
- 数据组成:数据部分(即有效载荷)由上层TCP提供,它包括TCP报头和来自应用层的有效载荷。
分离方法
(第一层:
- 4位版本号(
version
):指定 IP 协议版本,对于IPv4来说总是4。注意:IPv4和IPv6之间没有直接兼容性。 - 4位首部长度(
header length
):表示IP报头总长度,单位为4字节。取值范围是【5, 15】(对应于20到60字节),其中5是最常见的值,代表20字节。 - 16位总长度(
total length
):指整个IP报文的长度,包括报头和有效载荷。 - 8位服务类型(
Type Of Service
):- 包括已废弃的3位优先级字段、4位ToS字段以及1位保留位(必须设为0)。
- ToS字段定义了服务质量参数如最小延迟、最大吞吐量、最高可靠性和最低成本。
- 这些参数互斥,选择其中之一影响数据传输路径的选择标准。
- 计算公式:有效载荷长度 = 16位总长度 - (4位首部长度 * 4)
为什么需要16位总长度?
确保接收方完整地接收到整个IP报文。
因为IP报文是以独立报文形式存在,并非像TCP那样的连续字节流,因此需要明确标示出报头和有效载荷的具体长度。
(第二层:涉及到 IP 报文和分片(后面会讲)
- 16 位标识(id): 唯一的标识主机发送的报文. 如果 IP 报文在数据链路层被分片了, 那么每一个片里面的这个 id 都是相同的.
- 3 位标志字段: 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到). 第二位置为 1 表示禁止分片, 这时候如果报文长度超过 MTU, IP 模块就会丢弃报文. 第三位表示"更多分片", 如果分片了的话, 最后一个分片置为 0, 其他是 1. 类似于一个结束标记.
- 13 位分片偏移(
framegament offset
): 是分片相对于原始 IP 报文开始处的偏移, 其实就是在表示当前分片在原报文中处在哪个位置, 实际偏移的字节数是这个值 8得到的。 因此 除了最后一个报文之外, 其他报文的长度必须是 8 的整数倍(否则报文就不连续了)
如何交付
(第三层:
-
8位生存时间(
Time To Live, TTL
):定义了数据报到达目的地前允许经过的最大跳数。通常初始化为64,每经过一个路由器TTL减1,直至归零仍未达目的地则被丢弃。此字段 防止出现路由环路
-
8位协议字段:标识了上层协议类型。当发送时,上层会告知IP所使用的协议,然后IP设置相应的编号。接收方根据这个字段将数据传递给正确的上层协议处理
-
16位头部校验和:使用 循环冗余 校验(
CRC
)来检测头部错误。如果发现损坏,则丢弃该包,TCP随后会触发重传机制。 -
32位源/目的IP地址:指定数据报的起点和终点。特别是目的IP地址,用于路由器确定下一跳路径。
三、网络通信
引入:
路由器的工作只在网络层,没有 tcp 层。只有两台主机有 tcp 层,src_ip:src_port(进程)->dst_ip: dst_port(进程)
1. IP地址的划分理念
背景说明:
互联网上的所有IP地址都是经过精心设计和规划的。
强调理解IP地址网段划分及子网划分的重要性,不应仅停留在对子网掩码等技
细节的理解上,而要从更宏观的角度去认识这一过程。
宏观理解:
- 从全球到国家、地区乃至具体机构或学校,IP地址的分配体现了这种层次化的结构。每个层级都可以看作是一个更大范围内的“子网”。
- 不同区域使用不同的比特位来表示,使得整个IP地址体系具有清晰的层次性和区域性。
- 类比学号系统,每个部分代表了不同级别的信息(如年级、班级、个人编号)
复杂性与挑战:
- 实际的IP地址划分非常复杂,而且随着互联网的发展,IPv4地址资源已经变得紧张。
- 尽管面临资源限制,但基本的设计思想是一致的,即通过合理分配来最大化利用现有地址空间。
- 解决方案并非简单粗暴地进行划分,而是采用了更为精细的方法和技术。
具体网络划分:
- 网络一旦被划分为不同的网段,每台主机都将归属于特定的一个网段。
- 寻址时首先确定目标主机所在的网段,再在该网段内定位具体的主机。
- 因此,一个完整的IP地址由两部分组成:网络号+主机号
- 网络号:用于标识不同的网段,确保互连的不同网段之间具有唯一性。
- 主机号:在同一网段内,各主机共享相同的网络号,但各自拥有唯一的主机号以区分彼此。
路由器的作用:
- 路由器作为连接两个或多个子网的关键设备,在数据包转发过程中起到桥接作用。
- 它同时属于所连接的所有子网,并且在每个子网中都拥有自己的IP地址
- 通常是 == 该子网 网络号+.1的形式(例如,对于网络192.168.1.0/24,路由器可能配置为192.168.1.1)
2. 什么是子网❓
子网是由一组网络号相同的主机组成的集合
- 新增主机到某一子网时,其网络号需与该子网一致,但主机号必须保证在整个子网范围内唯一。
- 通过这样的方式,可以确保即便是在相互连接的不同网络中,也能够保持每台主机IP地址的独特性,从而避免冲突。
那么子网是怎样进行管理的呢??
问题背景:
- 手动管理子网内的IP是一个相当麻烦的事情。例如,当子网内有主机离开或新加入时,就需要对子网内的IP地址进行相应的增删改操作。这项管理工作通常由谁来完成呢?
管理设备:在一个子网中,负责管理子网内IP的通常是路由器。
自动管理解决方案:
- DHCP技术:为了解决手动管理IP带来的不便,有一种叫做DHCP(Dynamic Host Configuration Protocol)的技术被开发出来,它能够自动地给子网内的新增主机节点分配IP地址。
- 路由器与DHCP:大多数现代路由器都内置了DHCP功能,因此路由器也可以被视为一个DHCP服务器。
- DHCP服务描述:DHCP是一种自动化服务,负责网络中的IP地址申请、分配和回收等管理工作。
上网前获取IP:这也是为什么我们的电脑在上网之前需要先连接到路由器的原因之一——为了通过路由器获得一个可用的IP地址,从而接入互联网。
3. 网络划分
基本概念
🤪 我们来讲一个小故事,背景如下:
每个学校都有很多学院如计算机学院、理学院、化工学院、机械学院、电子信息工程学院等等,每个学生也都有自己的学号,这个学号其实是经过精心设置的。这里我们简化一下把 学号 分成 学院号+自己所在院系内的编号。每个学院也都有自己的编号。
每一个学院都有自己院学生会主席并且他还是院群里面的群主,而且他也有属于自己的学号。并且这个学号在全校范围内唯一。每个院学生会主席都还要在加一个校学生会主席群。
事件如下:
今天电子信息工程学院的一名普通学生李四同学把自己学生证丢了,学生证上面其他信息都模糊看不清了,只有学号(101 00101)可以看得清。
然后计算机学院张三同学(学号:000 01001)在校园内捡到这个学生证。张三同学就想把学生证归还给该同学,但这个学生证只有 学号 看的请。可是张三除了自己院学生号清楚并不清楚其他院的学号。
方法如下:
他知道 学号在全校范围内唯一,他要找这个人,因此张三就在食堂门口抓住一个人就问同学你的学号
查找本质是在做排除。如果进行线性遍历,效率太低了,所以就有了我们的方法二,如下:
- 张三把这张学习卡拍张照片放到院群里@一下院学生会主席王五,他知道王五可以对接外部。然后让王五到校学生会群中去找,确定这个同学是哪个院的
因此我们可以从上例知道:网络通信本质是把数据交给目标主机
张三:源主机
李四:目表主机
院学生会主席:路由器
院内的群:局域网
校学生会群:公网
捡到的李四钱包中的学号(ip):学院(目标网络)+学号(目标主机)
补充知识:路由器,认识主机,认识网络目标中的转接,局域网到公网中的查找
为什么第二种方法这么快?因为一次排除一群,排除的效率更高。通过校学生会可以直接锁定了电信学院,排除了其他学院,相当于进行了 网络划分
IP地址分为两个部分,网络号和主机号:
- 网络号:保证相互连接的两个网段具有不同的标识。
- 主机号:同一网段内的主机,具有不同的主机号。
根据网络号查找目标网络,进入目标网络后,再查找并对比IP中的主机号,就确定了目标主机。
分类划分法
最开始时提出一种划分网络号和主机号的方案,把所有IP地址分为五类,如下图所示: 如下图所示
(该图出 自[TCPIP])
什么是 A、B、C 类地址?
其中对于 A、B、C 类主要分为两个部分,分别是网络号和主机号。这很好理解,好比小林是 A 小区 1 栋 101 号,你是 B 小区 1 栋 101 号。
我们可以用下面这个表格, 就能很清楚的知道 A、B、C 分类对应的地址范围、最大主机个数。
那么 A、B、C 分类地址最大主机个数是如何计算的呢?
最大主机个数,就是要看主机号的位数,如 C 类地址的主机号占 8 位,那么 C 类地址的最大主机个数:2^8-2=254
为什么要减 2 呢?
- 因为在 IP 地址中,有两个 IP 是特殊的,分别是主机号全为 1 和 全为 0 地址。
- 主机号全为 1 指定某个网络下的所有主机,用于广播
- 主机号全为 0 指定某个网络
因此,在分配过程中,应该去掉这两种情况
什么是D、E类地址?
相比于上面的 A、B、C类, D 类和 E 类地址是没有主机号的,所以不可用于主机 IP,D 类常被用于多播,E 类是预留的分类,暂时未使用。
广播地址 vs 多播地址
① 广播地址用于什么?
广播地址用于在同一个链路中相互连接的主机之间发送数据包。
广播地址可以分为本地广播和直接广播两种。
- 在本网络内广播的叫做 本地广播
- 例如网络地址为 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 的主机都能收到这个包(由于直接广播有一定的安全问题,多数情况下会在路由器上设置为不转发。)
② 多播地址用于什么?
多播用于将包发送给特定组内的所有主机。
多播使用的 D 类地址,其前四位是 1110 就表示是多播地址,而剩下的 28 位是多播的组编号。
从 224.0.0.0 ~ 239.255.255.255 都是多播的可用范围,其划分为以下三类:
- 224.0.0.0 ~ 224.0.0.255 为预留的组播地址,只能在局域网中,路由器是不会进行转发的。
- 224.0.1.0 ~ 238.255.255.255 为用户可用的组播地址,可以用于 Internet 上。
- 239.0.0.0 ~ 239.255.255.255 为本地管理组播地址,可供内部网在内部使用,仅在特定的本地范围内有效。
IP分类的缺点:
缺乏地址层次性: 在同一网络中使用了B类地址,但是无法按照生产、测试、开发等环境来划分地址层次。这种情况下,缺少地址的层次性划分,使得IP地址的管理和分配缺乏灵活性和有效性。
A、B、C类地址的限制:
虽然上面分类很好,但是随着 Internet 的飞速发展,这种划分方案的局限性很快显现出来大多数组织都申请 B 类网络地址, 导致 B 类地址很快就分配完了, 而 A 类却浪费了大量地址;
- B类地址由于需求大而迅速耗尽。
- A类和B类地址造成大量IP资源浪费。
例如,一个B类地址理论上允许单个子网内存在超过65,000台主机;而A类则更多。然而实际网络架设中很少有网络需要如此多的地址空间,导致许多分配出去的地址并未得到充分利用。
- 而C类地址主机数量少: C类地址只能容纳最多254个主机,对于需要较多IP地址的场景,数量明显不足。
4. CIDR无分类地址解决方案
为解决上述问题,提出了CIDR机制
-
CIDR(Classless Inter-Domain Routing,无分类域间路由)是一种现代的IP地址分配和路由技术,它取代了传统的A类、B类、C类地址的分类方式。
-
CIDR允许网络管理员更加灵活地分配IP地址,有效地利用IP地址空间。
-
网络号与主机号的界限不再依赖于IP地址类型(A/B/C),此时网络号和主机号的划分与这个 IP 地址是 A 类、B 类还是 C 类无关
CIDR地址表示通常采用IP地址加上斜线后跟随的子网掩码位数,比如 10.100.122.2/24,这种地址表示形式就是 CIDR,/24 表示前 24 位是网络号,剩余的 8 位是主机号。
10.100.122.2/24
表示IP地址为 10.100.122.2
,属于一个使用子网掩码 /24 的网络,该网络的范围是 10.100.122.0
到 10.100.122.255
,可以支持最多254台主机连接(因为0和255分别是网络地址和广播地址,不能用于主机)
子网掩码
还有另一种划分网络号与主机号形式,那就是子网掩码,掩码的意思就是掩盖掉主机号,剩余的就是网络号。
- 子网掩码是一个32位数字,通常尾部由一系列 0 组成。
- 将子网掩码和 IP 地址按位&计算,就可得到网络号
子网掩码用于将IP地址分成网络部分和主机部分。对于IP地址 10.100.122.2/24,子网掩码 /24 表示前面24位是网络部分,后面8位是主机部分。
现在让我解释一下如何计算子网掩码和网络地址:
- 将IP地址和子网掩码进行逻辑与操作,以确定网络地址。
- 将IP地址 10.100.122.2 和子网掩码 255.255.255.0 进行与操作:
IP地址: 00001010.01100100.01111010.00000010
子网掩码: 11111111.11111111.11111111.00000000
----------------------------------------------
网络地址: 00001010.01100100.01111010.00000000
最终得到的网络地址是 10.100.122.0
小结
目的IP & 当前路由器的子网掩码 = 该报文要去的目的网络
- 每个路由器需为其连接的每个网络设定相应的子网掩码。
- 不同路由器至少要链接两个不同网络。
- 利用目标IP地址与当前路由器子网掩码做与运算可识别报文的目标网络。
在上面我们知道可以通过子网掩码划分出网络号和主机号,那实际上子网掩码还有一个作用,那就是划分子网。
子网划分实际上是将主机地址分为两个部分:子网网络地址 和 子网主机地址
- 未做子网划分的 ip 地址:网络地址+主机地址
- 做子网划分后的 ip 地址:网络地址+(子网网络地址+子网主机地址)
下面我们再来看看子网划分的例子,如下:
【案例1】:
例如上面的 IP 地址:140.252.20.68/24
- 表示IP地址为140.252.20.68
- 子网掩码的高24位是1,也就是255.255.255.0
- 网络号占据24个比特位
【案例2】:
225.225.255.240 前面28位是网络号,后面4位是主机号~计算思路如下
可见,IP地址与子网掩码做与 & 运算可以得到网络号,主机号从全0到全1就是子网的地址范围
特殊的 IP 地址
- 将 IP 地址中的主机地址全部设为 0, 就成为了网络号, 代表这个局域网;
- 将 IP 地址中的主机地址全部设为 1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包;
- 127.*的 IP 地址用于本机环回(
loop back
)测试,通常是 127.0.0.1
local 设备如下:
5. IP 地址的数量限制
我们知道, IP 地址(IPv4)是一个 4 字节 32 位的正整数。 那么一共只有 2 的 32 次方 个 IP地址大概是 43 亿左右,而 TCP/IP 协议规定每个主机都需要有一个 IP 地址.
那么这是不是意味着一共只有 43 亿台主机能接入网络❓
实际上由于一些特殊的 IP 地址的存在数量远不足 43 亿;另外 IP 地址并非是按照主机台数来配置的,而是每一个网卡都需要配置一个或多个 IP 地址.
此时, CIDR
在一定程度上缓解了 IP
地址不够用的问题(提高了利用率, 减少了浪费, 但是 IP
地址的绝对上限并没有增加),仍然不是很够用。这时候有三种方式来解决:
- 动态分配 IP 地址: 只给接入网络的设备分配 IP 地址. 因此同一个 MAC 地址的设备, 每次接入互联网中, 得到的 IP 地址不一定是相同的;
- NAT(网络地址转换) 技术:允许内部网络中的多台计算机共享一个或几个公共IP地址访问外部网络。(后面会重点介绍)
- IPv6: IPv6使用16字节(128位)表示一个IP地址,极大地扩展了地址空间。
- 注意:IPv6与IPv4不兼容,属于完全不同的协议体系。
- 尽管IPv6提供了足够的地址空间解决IPv4地址耗尽的问题,但截至当前,IPv6尚未广泛普及(原因:两者不能相互兼容,因此不但要我们电脑、手机之类的设备支持,还需要网络运营商对现有的设备进行升级)
IPv4 首部与 IPv6 首部的差异如下图:
Pv6 相比 IPv4 的首部改进:
- 取消了首部校验和字段。 因为在数据链路层和传输层都会校验,因此 IPv6 直接取- 消了 IP 的校验。
- 取消了分片/重新组装相关字段。 分片与重组是耗时的过程,IPv6 不允许在中间路由器进行分片与重组,这种操作只能在源与目标主机,这将大大提高了路由器转发的速度。
- 取消选项字段。 选项字段不再是标准 IP 首部的一部分了,但它并没有消失,而是可能出现在 IPv6 首部中的「下一个首部」指出的位置上。删除该选项字段使的 IPv6 的首部成为固定长度的 40 字节。
NAT是现在内网到公网上数据转发的主流技术。目前我们用IPv6也能访问公网也是用的类似技术
现在我们知道IP地址可以被分成内网IP和公网IP,那么哪些是内网IP?哪些又是公网IP?
那网络既有内网又有公网我们该如何理解呢?
5. 私有IP vs 公网IP
如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet 上,理论上 使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址,如下:
IP | 网络号 | 地址数 |
---|---|---|
10.*/ | 前8位 | 共16,777,216个地址 |
172.16./12 ~ 172.31./ | 前12位 | 共1,048,576个地址 |
192.168.*/ | 前16位 | 共65,536个地址 |
注意:只能用上面这三类来组建局域网,而包含在这个范围中的,都称为私有IP。 其余的则称为全局IP(或公网IP)
因此之前我们经常说IP地址具有唯一性,通常谈的是 全局IP 或者说是 公网IP
- 在大家前 18 年的使用生涯中,都在直接使用的其实都是私有 IP
- 云服务器就接触到了–公网 IP
验证:ipconfig 查看
公网IP在整个网络都不能重复,但私网IP在不同网段内是可以重复的。
公有 IP 地址由谁管理呢?
- 私有 IP 地址通常是内部的 IT 人员管理,公有 IP 地址是由 ICANN 组织管理,中文叫「互联网名称与数字地址分配机构」。
- IANA 是 ICANN 的其中一个机构,它负责分配互联网 IP 地址,是按州的方式层层分配。
6. IP 报文分片 和 重组
链路层限制有效载荷的大小,一般为1500字节。每种数据链路的最大传输单元 MTU 都是不相同的,如 FDDI 数据链路 MTU 4352、以太网的 MTU 是 1500 字节等。如果IP报文过大,就必须分成多个数据包交给链路层。
分片和组装都是IP协议的任务。
分片会提高报文丢失的风险,所以一般不分片。传输层控制会报文的大小,这样IP层就不需要分片。
一旦数据包丢失,所有数据包都会丢弃,反映到传输层就是触发重传。
字段 | 解释 |
---|---|
16位标识 | 报文的标识各不相同,分片报文的标识是一致的,可以根据标识查找分片的报文 |
13位片偏移 | 片偏移表示分片报文的有效载荷距原始有效载荷起始位置的偏移量 |
3位标志 | 1位保留,1位禁止分片,1位更多分片:为1表示中间报文,为0表示为结尾报文 |
如果报文丢失了,如何检验呢?
- 如果没有查找到片偏移为0的报文,就说明首位报文丢失。
- 如果当前报文片偏移加上报文长度不等于下一个报文的片偏移,则说明中间报文丢失。
- 如果3位标志中最后一位为0,表示当前报文就是结尾报文。
比如:一个3420字节的IP报文,可以分成3个分别是1480、1480、440,再给加上报头即可
接收端如何判断收到的报文是普通报文还是分片报文?
- 如果片偏移不为零,一定是分片报文,
- 如果片偏移为0,但3位标志最后一位为1,则一定是分片报文;
- 除此以外,都是普通报文。
四、全球网络
我们可以在 IPSHU 上查看全球 IP 的使用情况
1. 了解运营商
背景:当我们想在家中上网时,如果我们已经使用了某个运营商的手机卡,只需要打电话给运营商,联系其安装网络的师傅来安装。
他们通常会带来一个调制解调器(俗称“猫”)和一个路由器,安装人员会将网络账号与密码设置好,接着配置无线网络名称和密码,这样,家里的设备就可以通过WiFi上网了。
网络基础设施的来源
- 上网的网线是运营商提供的。这意味着运营商已经在你家附近建设了网络基础设施。
- 当你通过路由器发起网络请求时,信息会携带你的网络账号和密码,这个请求首先会到达运营商的服务器,由他们认证你是否欠费。
- 如果没有欠费,运营商就会将请求继续传递到你所请求的服务,比如腾讯、阿里、百度等。
因此,运营商实际上位于用户和互联网服务提供商之间,扮演着基础设施建设者的角色。
网络访问的控制
运营商有权限制你的网络访问,尤其是当你欠费时,他们可以阻止你的数据报文的转发。除此之外,运营商也可以审核你的上网内容。
例如,发现你尝试访问谷歌、推特等被限制的网站时,运营商可以选择不转发你的请求。
- 这种机制通常被称为“墙”,而“翻墙”实际上是绕过运营商的转发限制。
- 物理上,用户不可能绕过运营商直接访问互联网服务提供商(如字节跳动),因为没有直接连接的通路。
在网络架构上,用户必须 经过运营商的网络才能访问外部互联网服务
2. 路由器功能
主要功能:
- 转发数据:路由器的核心任务是转发网络数据包。
- DHCP:动态主机配置协议,自动为局域网中的设备分配IP地址。
- NAT:网络地址转换技术,用于将内部局域网IP转换为可在公网使用的IP地址。
组建局域网
- 路由器可以用来创建局域网,配置无线网络时,我们可以设置网络名称和密码。
- 在这种网络中,路由器使用内网IP,比如家用路由器通常使用192.168.*
- 企业级路由器可能使用10.*或172.16-172.31范围的内网IP。
在上网过程中,通常会遇到两种密码:
- 一种是用于连接互联网服务提供商(ISP)的账号密码
- 另一种是用于访问无线路由器设置或连接到家庭Wi-Fi网络的密码。这两种密码的功能和用途不同。
解释:
① 上网账号密码:这是你向互联网服务提供商申请宽带服务时获得的一组账号信息。
- 这组信息通常包括一个用户名(可能是你的手机号码或者ISP提供的特定账号名)和对应的密码。
- 当你首次设置宽带连接或需要重新配置网络连接时,就需要使用这套账号密码来验证身份,并建立与ISP之间的连接。
- 这个账号密码是用来认证你作为合法用户的凭证,确保只有付费用户能够接入互联网服务。
② 路由器账号密码:实际上这里可以分为两个部分:
- 路由器管理界面登录密码:允许你访问路由器的Web管理界面,在那里你可以更改各种设置,比如修改Wi-Fi名称、设定安全级别等。
- Wi-Fi密码:也称为“预共享密钥”(PSK),是指当设备尝试加入你的无线局域网时所需输入的密码。它保护了你的无线网络免受未经授权的访问者侵入。
因此我们可以知道:如果邻居能够蹭网,则意味着他们知道了你的Wi-Fi密码。这是因为只要知道正确的Wi-Fi密码,任何人都可以连接到你的无线网络上。
3. 运营商网络架构
每个家庭都有自己的路由器,负责创建家庭局域网,使用 192.168.*
开头的内网IP。当家庭网络连接到互联网时,需要通过运营商的网络。所以家庭路由器实际上跨越了两个子网:
- 家庭局域网子网(192.168.*)
- 运营商的子网
结论:这意味着当数据从家用路由器发出时,先到达运营商的子网,再经过多级路由器,最终转发到公网。
家庭路由器会配备两个IP地址:
- LAN口IP:用于家庭内部局域网,通常为192.168.*。
- WAN口IP:用于连接运营商的网络,是由运营商分配的IP地址。
同理,运营商的路由器也具有LAN口IP和WAN口IP:
- LAN口IP:用于运营商内部网络(可能是私有网络)。
- WAN口IP:这是一个公网IP,用于连接到互联网。
4. 数据包的转发流程
- 在不同局域网中,私有IP是可以重复的,因为只需要在局部环境中保证唯一性。
然而,这带来了一个问题:当不同局域网中的设备使用相同的IP地址(例如,192.168.1.201)时,外部服务提供商(如抖音)如何知道数据包应该返回到哪个局域网?
- 为了解决这个问题,NAT(网络地址转换)技术应运而生。
- 当数据经过路由器时,路由器会将数据包的源IP地址替换为自己的WAN口IP。
- 当请求返回时,路由器则会根据这个WAN口IP知道将数据包转发到哪个局域网的设备上。
路由器能横跨两个网络,所以要配两个IP,LAN口连接内网,WAN口连接外网。
IP数据包的传输时,路由器将目的IP与路由表进行对比:
- 如果对应得上就说明目标主机就在自身子网内,就直接发送到目标主机
- 如果访问的不是子网内的主机,就将源IP替换成路由器的WAN口IP,也就是将报文转发到外网。
5. 路由器的 IP 结构 & 路由
个人主机上的 IP 是私有 IP,而且每个路由器都有两个IP地址:
- LAN口(子网 IP:用于在局域网内部通信,通常为私有IP(如192.168.1.1)。来实现对上一个的连接
- WAN口IP:用于与外部网络(如运营商网络)通信。这个IP可能是一个公网IP。路由器自己的标识
路由器内的主机(如手机、电脑等)使用局域网的IP地址,而这些IP地址在不同的局域网中是可以重复的。
- 然而,当这些主机需要访问外网时,路由器会使用NAT技术将内部的私有IP地址替换为WAN口IP。这种逐级替换的过程使得最终的数据包在公网中能够使用一个唯一的IP地址进行通信。
- 如果想要让外界能够访问我们自建的服务器(如网页服务器),那么这台自建服务器必须部署在具有公网IP的设备上。例如,云服务提供商(如阿里云、腾讯云)可以提供这样的服务器。
路由
在复杂的网络结构中, 找出一条通往终点的路线;
- 路由的过程, 就是这样一跳一跳(Hop by Hop) “问路” 的过程. 所谓 “一跳” 就是数据链路层中的一个区间. 具体在以太网中指从源 MAC 地址到目的
- MAC 地址之间的帧传输区间
IP 数据包的传输过程也和问路一样.
- 当 IP 数据包, 到达路由器时, 路由器会先查看目的 IP;
- 路由器决定这个数据包是能直接发送给目标主机, 还是需要发送给下一个路由器;
- 依次反复, 一直到达目标 IP 地址;
那么如何判定当前这个数据包该发送到哪里呢? 这个就依靠每个节点内部维护一个路由表;
- 路由表可以使用
route
命令查看- 如果目的 IP 命中了路由表,就直接转发即可;
- 路由表中的最后一行,主要由下一跳地址和发送接口两部分组成,当目的地址与路
- 表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址。
假设某主机上的网络接口配置和路由表如下:
这台主机有两个网络接口,一个网络接口连到 192.168.10.0/24 网络,另一个网络接口连到 192.168.56.0/24 网络;
- 路由表的
Destination
是目的网络地址,Genmask
是子网掩码,Gateway
是下-跳地址,lface
是发送接口, Flags
中的 U标志表示此条目有效(可以禁用某些 条目),G标志表示此条目的下一跳地址是某个路由器的地址,没有 G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发;
转发过程例 1:如果要发送的数据包的目的地址是 192.168.56.3
- 跟第一行的子网掩码做与运算得 到 192.168.56.0,与第一行的目的网络地址不符
- 再跟第二行的子网掩码做与运算得 到 192.168.56.0,正是第二行的目的网络地址,因此从 eth1 接口发送出去;
- 由于 192.168.56.0/24 正 是与 eth1 接口直接相连的网络,因此可以直接发到目的主机,不需要经路由器转发;
转发过程例 2:如果要发送的数据包的目的地址是 202.10.1.2
- 依次和路由表前几项进行对比,发现都不匹配:
- 按缺省路由条目,从 eth0 接口发出去,发往 192.168.10.1 路由器:
- 由 192.168.10.1路由器根据它的路由表决定下一跳地址;
6. 网络拓扑结构
公网和子网的划分通常可以通过IP地址和子网行。
比如,如果从美国发出一个请求,目标IP地址是湖南长沙的服务器
- 路由器首先会判断这个IP不属于本地网络,于是将请求发送给国际路由器。
- 国际路由器再判断目标IP属于中国,就会将数据包转发到中国的路由器。
- 接下来,中国的路由器会继续判断目标IP,发现属于湖南,再由湖南的路由器转发给长沙的服务器。
整个互联网的拓扑结构虽然复杂,但这种逐级转发的逻辑是其核心。运营商在地方上建立了本地网络,并将不同子网进行划分,然后通过公网入口路由器与全球互联网连接。
网络模式如下,可以看到,在接入长沙之后,由公网入私网
注意:
- 私有 ip 存在大量重复,不能进公网
- 路由器会进行报文的替换,WAN 口 IP 的替换
- 解决:将源 IP 替换成每一个路由器的WAN 口 IP
私有 IP 不断被替换的过程:NAT 技术(后面会讲)
为了解决 IP 不足问题,采取了 互联网 = 公网+私网 的模式
【★,°:.☆( ̄▽ ̄)/$:.°★ 】那么本篇到此就结束啦,如果有不懂 和 发现问题的小伙伴可以在评论区说出来哦,同时我还会继续更新关于【Linux】的内容,请持续关注我 !!
更多推荐
所有评论(0)