IP协议
基本概念
- 主机 : 配有IP地址,但是不进行路由控制的设备
- 路由器 : 既配有IP地址,又能进行路由控制
- 节点: 主机和路由器的统称
协议头格式
- 4位版本(version):占四位,用于指定IP协议的版本,例如,使用IPv4,该字段就为4
- 4位首部长度: 表示IP协议首部的长度,以32位bit (4字节) 为单位,最大长度为 60 字节
- 8位服务类型: 用于指示对数据包的服务质量要求,包括优先级、延迟、吞吐量、可靠性等信息。前 3 位表示优先级(Precedence),用于指示数据包的重要性级别,取值范围从 0(普通优先级)到 7(网络控制优先级)。接下来的 4 位分别对应延迟(D)、吞吐量(T)、可靠性(R)和成本(C),四者互相冲突,只能选择一个。最后 1 位未使用。
- 16位总长度: IP数据报整体占多少字节
- 16位标识: 用于标识属于同一个数据报的各个分片,同一个数据报的所有分片具有相同的标识值。
- 3位标志: 第一位保留,DF(Don't Fragment)位表示是否允许分片,MF(More Fragments)位表示是否还有后续分片
- 13位片偏移: 指出该分片在原始数据报中的相对位置,单位为 8 字节
- 8位生存时间: 数据包在网络中可以经过的最大跳数,每经过一个路由器 TTL 值减 1,当 TTL 值为 0 时数据包被丢弃。
- 8位协议: 指出此数据包携带的数据使用的是哪种上层协议,如 TCP 对应的值为 6,UDP 对应的值为 17 等。
- 16位首部校验和: 用于校验 IP 首部的完整性,在每个路由器上都会重新计算
- 32位源 IP 地址: 表示发送方的 IP 地址
- 32位目的 IP 地址: 表示接收方的 IP 地址
- 选项: 长度可变。用于提供一些额外的功能,如源路由选择、时间戳等,但不是所有数据包都包含选项。
地址管理
网段划分
IP地址分为两个部分: 网络号和主机号
网络号: 网络号用于标识一个特定的网络。在网络通信中,当数据包在不同网络之间传输时,路由器根据 IP 地址中的网络号来决定数据包的转发路径。
主机号: 主机号用于标识网络中的特定主机。在同一个网络中,每台主机都有一个唯一的主机号
不同的子网就是把网络号相同的主机放在一起, 如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致,但是主机号不能和其他主机的主机号重复,通过合理的设置主机号和网络号,就可以保证在相互连接的网络中,每台主机的IP地址都不相同
手动配置子网IP是非常复杂的一件事情.
DHCP:
DHCP 是一个应用层协议,用于在 IP 网络中自动为网络设备分配 IP 地址、子网掩码、默认网关、DNS 服务器等网络配置参数. 一般的路由器都带有DHCP功能, 因此路由器也可以看做一个DHCP服务器.
IPv4 地址主要分为以下几种类别:
A 类地址
B 类地址
C 类地址
D 类地址
- 地址范围:224.0.0.0 - 239.255.255.255。
E 类地址
- 地址范围:240.0.0.0 - 255.255.255.255。
这种按类别划分网络地址的方式具有局限性,导致许多IP地址被浪费掉
针对这种情况,提出了新的划分方案,称为CIDR(Classless Inter-Domain Routing)
- CIDR 是一种用于给 IP 地址进行分类和分配的方法,它摒弃了传统的 A、B、C 类 IP 地址的分类方式,采用可变长子网掩码(VLSM)来灵活地划分网络,提高IP地址利用率。
- 子网掩码是一个32位的正整数,使用 IP 地址和网络前缀长度来表示一个网络,格式为 “IP 地址 / 网络前缀长度”。例如,192.168.1.0/24,表示网络前缀长度为 24 位,即前 24 位是网络号,后 8 位是主机号。
- 将IP地址与子网掩码进行 "按位与" 操作,得到的结果就是网络号
- CIDR 允许将多个连续的网络聚合为一个路由条目,大大简化了路由表,提高了路由器的处理效率。
特殊的IP地址
- 网络地址: 在一个网段中,主机号全为 0 的 IP 地址表示网络本身,称为网络地址。
- 广播地址: 主机号全为 1 的 IP 地址用于在特定网络中向所有主机发送广播消息,称为广播地址
- 回环地址: IPv4 的回环地址是 127.0.0.1,它用于本地设备上的软件测试和进程间通信。当数据发送到回环地址时,不会离开设备,而是直接由网络协议>网络协议栈内部进行处理,返回给自己
- 0.0.0.0 地址
- 在不同的场景下有不同的含义。在服务器配置中,0.0.0.0 可以表示服务器监听所有的网络接口,即接受来自任何 IP 地址的连接请求。
- 在路由表中,0.0.0.0/0 表示默认路由,当一个数据包的目的地址在路由表中没有找到匹配的具体路由条目时,就会按照默认路由进行转发。
IP地址数量限制
IPv4是一个四字节32位的正整数,一共只有2的三十二次方,大概四十三亿,由于互联网快速发展,并且TCP/IP协议规定,每个主机都有一个IP地址,四十三亿这个数字在当今来说已经是不够的了,那么如何解决这个问题呢?
1. 高效利用现有地址资源的技术
- CIDR(无类域间路由)
- 动态分配 IP 地址(DHCP)
2. 网络地址转换(NAT)
- 原理:在局域网内部使用私有 IP 地址,当内部设备需要访问外部网络时,通过 NAT 设备将私有 IP 地址转换为公有 IP 地址,多个内部设备可以共用一个或少数几个公有 IP 地址与外部通信,从而减少对公网 IP 地址的需求。
- 类型:
- 静态 NAT:将内部本地地址和外部全局地址进行一对一的固定映射,常用于需要对外提供固定服务的服务器。例如,企业内部的 Web 服务器,使用静态 NAT 将其私有 IP 地址转换为公有 IP 地址,供外部用户访问。
- 动态 NAT:建立一个公有 IP 地址池,当内部设备需要访问外部网络时,从地址池中动态选择一个公有 IP 地址进行转换。当设备通信结束后,释放该公有 IP 地址,供其他设备使用。
- 端口地址转换(PAT):是最常用的一种 NAT 方式,它不仅可以转换 IP 地址,还可以转换传输层的端口号。通过将多个内部设备的 IP 地址和端口号映射到一个公有 IP 地址的不同端口上,实现多个内部设备同时使用一个公有 IP 地址与外部通信。
3. 升级到 IPv6
- 优势:
私有IP地址和公网IP地址
私有IP地址:私有 IP 地址是在特定的私有网络内部使用的 IP 地址。这些地址不会在互联网上被直接路由,它们被保留用于在企业、家庭、学校等内部网络中分配给设备。
- A 类私有地址:10.0.0.0 - 10.255.255.255。
- B 类私有地址:172.16.0.0 - 172.31.255.255。
- C 类私有地址:192.168.0.0 - 192.168.255.255。
公网IP地址: 公网 IP 地址是由互联网服务提供商(ISP)分配给用户或组织的全球唯一的 IP 地址,这些地址可以在互联网上被直接路由和访问。
路由选择
- 静态路由
- 动态路由
路由选择算法
- 距离向量算法
- 链路状态算法