目录
一. IP协议头格式
学习任何协议前的两个关键问题
IP 报头与有效载荷分离
分离方法
为什么需要16位总长度
如何交付
二. 网络通信
1.IP地址的划分理念
2. 子网管理
3.网络划分
CIDR(无类别域间路由)
目的IP & 当前路由器的子网掩码 = 该报文要去的目的网络
特殊IP地址
4.IP 地址的数量限制
5.私有IP地址和公网IP地址
三.全球网络
运营商的角色
网络基础设施的来源
网络访问的控制
路由器的功能
⭕ 主要功能
组建局域网
运营商网络架构
数据包的转发流程
路由器的IP地址结构
全球网络
网络拓扑结构
一. IP协议头格式
学习任何协议前的两个关键问题
在学习任何网络协议之前,需要先理解以下两个基本问题:
- 如何将报头和有效载荷分离?
- 如何交付?
IP 报头与有效载荷分离
- IP报头选项:IP报头可以包含选项字段,但本文不讨论这些选项。
- 标准长度:IP报头的标准长度是20字节。
- 数据组成:数据部分(即有效载荷)由上层TCP提供,它包括TCP报头和来自应用层的有效载荷。
分离方法
(第一层:
- 4位版本号:对于IPv4来说总是4。IPv4和IPv6之间没有直接兼容性。
- 4位首部长度:表示IP报头总长度,单位为4字节。取值范围是【5, 15】(对应于20到60字节),其中5是最常见的值,代表20字节。
- 16位总长度:指整个IP报文的长度,包括报头和有效载荷。
- 8位服务类型:
-
- 包括已废弃的3位优先级字段、4位ToS字段以及1位保留位(必须设为0)。
- ToS字段定义了服务质量参数如最小延迟、最大吞吐量、最高可靠性和最低成本。
- 这些参数互斥,选择其中之一影响数据传输路径的选择标准。
- 计算公式:有效载荷长度 = 16位总长度 - (4位首部长度 * 4)
为什么需要16位总长度
- 确保接收方完整地接收到整个IP报文。
- 因为IP报文是以独立报文形式存在,并非像TCP那样的连续字节流,因此需要明确标示出报头和有效载荷的具体长度。
如何交付
(第三层:
- 8位生存时间(TTL):定义了数据报到达目的地前允许经过的最大跳数。通常初始化为64,每经过一个路由器TTL减1,直至归零仍未达目的地则被丢弃。此字段防止路由环路。
- 8位协议字段:标识了上层协议类型。当发送时,上层会告知IP所使用的协议,然后IP设置相应的编号。接收方根据这个字段将数据传递给正确的上层协议处理。
- 16位头部校验和:使用循环冗余校验(CRC)来检测头部错误。如果发现损坏,则丢弃该包,TCP随后会触发重传机制。
- 32位源/目的IP地址:指定数据报的起点和终点。特别是目的IP地址,用于路由器确定下一跳路径。
16位标识,3位标志,13位片偏移(第二层)我们暂且不谈,等到我们把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)
子网的概念:
- 子网是由一组网络号相同的主机组成的集合。
- 新增主机到某一子网时,其网络号需与该子网一致,但主机号必须保证在整个子网范围内唯一。
- 通过这样的方式,可以确保即便是在相互连接的不同网络中,也能够保持每台主机IP地址的独特性,从而避免冲突。
2. 子网管理
问题背景:
手动管理子网内的IP是一个相当麻烦的事情。例如,当子网内有主机离开或新加入时,就需要对子网内的IP地址进行相应的增删改操作。这项管理工作通常由谁来完成呢?
- 管理设备:在一个子网中,负责管理子网内IP的通常是路由器。
自动管理解决方案:
- DHCP技术:为了解决手动管理IP带来的不便,有一种叫做DHCP(Dynamic Host Configuration Protocol)的技术被开发出来,它能够自动地给子网内的新增主机节点分配IP地址。
- 路由器与DHCP:大多数现代路由器都内置了DHCP功能,因此路由器也可以被视为一个DHCP服务器。
- DHCP服务描述:DHCP是一种自动化服务,负责网络中的IP地址申请、分配和回收等管理工作。
- 上网前获取IP:这也是为什么我们的电脑在上网之前需要先连接到路由器的原因之一——为了通过路由器获得一个可用的IP地址,从而接入互联网。
3.网络划分
(IP地址分类与CIDR
过去,所有IP地址被划分为五类:
- A类:0.0.0.0到127.255.255.255
- B类:128.0.0.0到191.255.255.255
- C类:192.0.0.0到223.255.255.255
- D类:224.0.0.0到239.255.255.255(多播地址)
- E类:240.0.0.0到247.255.255.255(保留作实验用途)
传统分类方案的问题
随着Internet的发展,这种固定划分暴露出不足之处:
- B类地址由于需求大而迅速耗尽。
- A类和B类地址造成大量IP资源浪费。
例如,一个B类地址理论上允许单个子网内存在超过65,000台主机;而A类则更多。但实际上很少有网络需要如此多的地址空间,导致许多分配出去的地址并未得到充分利用。
CIDR(无类别域间路由)
为解决上述问题,提出了CIDR机制,其特点如下:
- 引入“子网掩码”概念,以更灵活地定义网络边界。
- 子网掩码是一个32位数字,通常尾部由一系列 0 组成。
- 通过将IP地址与子网掩码执行 按位与& 操作来确定网络号。
- 网络号与主机号的界限不再依赖于IP地址类型(A/B/C)。
目的IP & 当前路由器的子网掩码 = 该报文要去的目的网络
- 每个路由器需为其连接的每个网络设定相应的子网掩码。
- 不同路由器至少要链接两个不同网络。
- 利用目标IP地址与当前路由器子网掩码做与运算可识别报文的目标网络。
下面看划分子网的例子
例如140.252.20.68/24
- 表示IP地址为140.252.20.68
- 子网掩码的高24位是1,也就是255.255.255.0
- 网络号占据24个比特位
可见,IP地址与子网掩码做与运算可以得到网络号,主机号从全0到全1就是子网的地址范围
除:子网中全0不被使用它代表网络号,全1也不被使用代表广播地址。
例子 2:
225.225.255.240 前面28位是网络号,后面4位是主机号~计算思路如下
- 子网掩码规定前面多少位是网络号 ,所以剩下我们能动得是主机号。
- 子网掩码,可以对 IP 32 位,进行任意划分
- 结合以前,先五种分类,再子网掩码
特殊IP地址
- 当IP地址中的主机部分全为0时,表示网络本身。
- 主机部分全设为1构成广播地址,用于向同一链路上的所有设备发送信息。
127.*
系列地址专用于本地回环测试,最常用的是127.0.0.1
。
4.IP 地址的数量限制
IPv4地址概述:
- iPv4地址是一个4字节(32位)的正整数。
- 总共有 (2^{32}) 个可能的IPv4地址,大约是43亿个。
主机与IP地址的关系:
- TCP/IP协议规定,每个网络上的主机都需要有一个IP地址。
- 理论上,这意味着最多只有43亿台主机能够接入互联网。
实际可用IP地址数量:
- 实际上,由于存在一些保留和特殊用途的IP地址,可分配给普通设备使用的IPv4地址数量远低于43亿。
- 此外,IP地址是基于网卡而非主机来配置的,意味着单个主机可能需要多个IP地址。
⭕ 缓解IP地址短缺的措施:
- CIDR(无类别域间路由) 提高了IP地址的利用率并减少了浪费,但并未增加IP地址总数。
- 动态分配IP地址:通过仅在设备连接到网络时为其分配IP地址,使得同一MAC地址的设备每次连接都可能获得不同的IP地址。(用的时候给你,不用的时候就回收
- NAT(网络地址转换) 技术允许内部网络中的多台计算机共享一个或几个公共IP地址访问外部网络。(后面会详细解释~
IPv6:
- IPv6使用16字节(128位)表示一个IP地址,极大地扩展了地址空间。
- IPv6与IPv4不兼容,属于完全不同的协议体系。
- 尽管IPv6提供了足够的地址空间解决IPv4地址耗尽的问题,但截至当前,IPv6尚未广泛普及。
未来:
- 08 奥运会用的内网就是 ipv6~
- 智能驾驶等技术成熟了,科学技术进步,生产力提高,中国网络的体量越来越大,未来有可能就会切为 ipv6
- 产业升级,智能制造升级,科技发展,前景广阔~
NAT是现在内网到公网上数据转发的主流技术。目前我们用IPv6也能访问公网也是用的类似技术。
现在我们知道IP地址可以被分成内网IP和公网IP,那些是内网IP?那些是公网IP?
那网络既有内网又有公网我们该如何理解呢?
5.私有IP地址和公网IP地址
如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址
- 10.*,前8位是网络号,共16,777,216个地址
- 172.16.到172.31.,前12位是网络号,共1,048,576个地址
- 192.168.*,前16位是网络号,共65,536个地址
只能用这三类来组建局域网,包含在这个范围中的,都称为私有IP。 其余的则称为全局IP(或公网IP),
所以我们经常说IP地址具有唯一性,通常谈的是全局IP或公网IP。
- 在大家前 18 年的使用生涯中,都在直接使用的其实都是私有 IP
- 云服务器就接触到了--公网 IP
验证:
ipconfig 查看
ifconfig 查看
三.全球网络
运营商的角色
- 当我们想在家中上网时,如果我们已经使用了某个运营商的手机卡,只需要打电话给运营商,联系其安装网络的师傅来安装。
- 他们通常会带来一个调制解调器(俗称“猫”)和一个路由器,安装人员会将网络账号与密码设置好,接着配置无线网络名称和密码。
- 这样,家里的设备就可以通过WiFi上网了。
网络基础设施的来源
- 上网的网线是运营商提供的。这意味着运营商已经在你家附近建设了网络基础设施。
- 当你通过路由器发起网络请求时,信息会携带你的网络账号和密码,这个请求首先会到达运营商的服务器,由他们认证你是否欠费。
- 如果没有欠费,运营商就会将请求继续传递到你所请求的服务,比如腾讯、阿里、百度等。
- 因此,运营商实际上位于用户和互联网服务提供商之间,扮演着基础设施建设者的角色。
网络访问的控制
- 运营商有权限制你的网络访问,尤其是当你欠费时,他们可以阻止你的数据报文的转发。
- 除此之外,运营商也可以审核你的上网内容。例如,发现你尝试访问谷歌、推特等被限制的网站时,运营商可以选择不转发你的请求。
- 这种机制通常被称为“墙”,而“翻墙”实际上是绕过运营商的转发限制。
- 物理上,用户不可能绕过运营商直接访问互联网服务提供商(如字节跳动),因为没有直接连接的通路。
- 在网络架构上,用户必须经过运营商的网络才能访问外部互联网服务。
路由器的功能
⭕ 主要功能
- 转发数据:路由器的核心任务是转发网络数据包。
- 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密码,任何人都可以连接到你的无线网络上。
- 流量费的问题,国家扶持使其费用下降了,大力发展互联网,孵化出了大量互联网公司,收获了发展的红利
- 结合国家对于滴滴和支付宝等私企的放权和支持,可以看出我们国家发展互联网的决心非常大!
运营商网络架构
每个家庭都有自己的路由器,负责创建家庭局域网,使用192.168.*
开头的内网IP。当家庭网络连接到互联网时,需要通过运营商的网络。所以家庭路由器实际上跨越了两个子网:
- 家庭局域网子网(
192.168.*
)。 - 运营商的子网。
这意味着当数据从家用路由器发出时,先到达运营商的子网,再经过多级路由器,最终转发到公网。
家庭路由器会配备两个IP地址:
- LAN口IP:用于家庭内部局域网,通常为
192.168.*
。 - WAN口IP:用于连接运营商的网络,是由运营商分配的IP地址。
同理,运营商的路由器也具有LAN口IP和WAN口IP:
- LAN口IP:用于运营商内部网络(可能是私有网络)。
- WAN口IP:这是一个公网IP,用于连接到互联网。
数据包的转发流程
- 在不同局域网中,私有IP是可以重复的,因为只需要在局部环境中保证唯一性。
- 然而,这带来了一个问题:当不同局域网中的设备使用相同的IP地址(例如,
192.168.1.201
)时,外部服务提供商(如抖音)如何知道数据包应该返回到哪个局域网? - 为了解决这个问题,NAT(网络地址转换)技术应运而生。当数据经过路由器时,路由器会将数据包的源IP地址替换为自己的WAN口IP。当请求返回时,路由器则会根据这个WAN口IP知道将数据包转发到哪个局域网的设备上。
路由器的IP地址结构
个人主机上的 IP 是私有 IP
每个路由器都有两个IP地址:
- LAN口(子网 IP:用于在局域网内部通信,通常为私有IP(如
192.168.1.1
)。来实现对上一个的连接 - WAN口IP:用于与外部网络(如运营商网络)通信。这个IP可能是一个公网IP。路由器自己的标识
- 路由器内的主机(如手机、电脑等)使用局域网的IP地址,而这些IP地址在不同的局域网中是可以重复的。
- 然而,当这些主机需要访问外网时,路由器会使用NAT技术将内部的私有IP地址替换为WAN口IP。这种逐级替换的过程使得最终的数据包在公网中能够使用一个唯一的IP地址进行通信。
- 如果想要让外界能够访问我们自建的服务器(如网页服务器),那么这台自建服务器必须部署在具有公网IP的设备上。例如,云服务提供商(如阿里云、腾讯云)可以提供这样的服务器。
全球网络
我们可以在 IPSHU 上查看全球 IP 的使用情况
由于IP地址的有限性(尤其是IPv4),全球范围内的IP地址已经不足。
网络拓扑结构
公网和子网的划分通常可以通过IP地址和子网行。
比如,如果从美国发出一个请求,目标IP地址是湖北武汉的服务器
- 路由器首先会判断这个IP不属于本地网络,于是将请求发送给国际路由器。
- 国际路由器再判断目标IP属于中国,就会将数据包转发到中国的路由器。
- 接下来,中国的路由器会继续判断目标IP,发现属于湖北,
- 再由湖北的路由器转发给武汉的服务器。
整个互联网的拓扑结构虽然复杂,但这种逐级转发的逻辑是其核心。运营商在地方上建立了本地网络,并将不同子网进行划分,然后通过公网入口路由器与全球互联网连接。
网络模式如下,可以看到,在接入武汉之后,由公网入私网
注意:
- 私有 ip 存在大量重复,不能进公网
- 路由器会进行报文的替换,WAN 口 IP 的替换
- 解决:将源 IP 替换成每一个路由器的WAN 口 IP
私有 IP 不断被替换的过程:NAT 技术
为了解决 IP 不足问题,采取了 互联网=公网+私网 的模式
下一篇文章将继续讲解 NAT 技术怎么回来,路由等知识~
🎢 补: CRUD是一个缩写,代表创建(Create)、读取(Read)、更新(Update)和删除(Delete)这四种基本的数据库操作。