目录
[2、特殊的 IP 地址](#2、特殊的 IP 地址)
[3、IP 地址的数量限制(NAT)](#3、IP 地址的数量限制(NAT))
一、IP协议概念
IP (Internet Protocol,网际协议)是TCP/IP协议族的核心 ,位于OSI模型网络层,负责无连接、尽力而为的数据包跨网传输,核心是寻址和路由,不保证可靠交付(可靠性由TCP等上协议进行补充)
二、IP协议头格式
- **4位版本:**固定为4,表示这是 IPv4 报文,若为6则对应 IPv6 协议
- **4位首部长度:**以4字节为单位计数,最大值为15(对应60字节头部),用于标识 IP 头 部的总长度
- 8位服务类型(TOS): 用于指定报文的传输优先级与服务质量(如低延迟、高吞吐量)
- **16位总长度:**表示整个IP报文(头部+数据)的字节数
- **16位标识:**为每个IP报文分配标识,用于分片重组时识别属于同一原始报文的分片
- **3位标志:**核心是DF(不分片)和MF(更多分片),DF=1 表示禁止分片,MF=0 表示最后 一个分片
- **13位片偏移:**标识当前分片在原始报文的位置,用于按序重组分片
- **8位生存时间:**限制报文在网络中转发次数,防止无限转发,值为0时会丢弃
- **8位协议:**标识IP报文承载的上层协议
- **16位首部校验和:**仅对头部进行校验,用于验证传输是否正确
- **32位源IP地址:**标识报文发送端IP地址
- **32位目的IP地址:**标识报文接收端IP地址
三、地址管理
1、网段划分
IP 地址由网络号和主机号构成
**网络号:**保证相互连接的两个网段具有不同的标识
**主机号:**同一网段内,主机之间具有相同的网络号,不同的主机号
- 不同的子网就是把网络号相同的主机放在一起
- 如果在同一子网中增加一台设备,那么它们的主机号不能重复
- DHCP技术能给子网内新增主机自动分配IP地址
以前提出一种划分网络号和主机号方案,将所有IP地址分为了5类:
- 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这样会导致浪费大量的 IP地址,针对这种情况有了新的划分方案 CIDR(Classes Interdomain Routing):
- 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号
- 子网掩码也是一个32位的正整数,通常用一串 " 0 " 来结尾
- 将 IP地址和子网掩码进行"按位与"操作,得到的结果就是网络号
2、特殊的 IP 地址
在 IP 地址中针对一些特定值有一些特定的含义:
- 将 IP 地址中的主机地址全部设为 0,就成为了网络号,代表这个局域网(192.168.100.55 --> 192.168.100.0), 某个具体设备不可以使用这个IP
- 将 IP 地址中的主机地址全部设为 1 ,就成为了广播地址,用于给同一链路中相互连接的主机发送数据包(192.168.100.255)
- 127.* 的 IP 地址用于本机环回(loop back)测试,通常是127.0.0.1 。localhost(域名,IP 地址的代称)
3、IP 地址的数量限制(NAT)
在进行设计 IP 地址时是为了让每个设备的 IP 地址不同,用来区分
IPv4是一个4字节32位的正整数,表示的范围是 2^32 ( 0 ~ 42亿9000万 ),TCP/IP规定每个主机都需要有一个IP地址,但由于互联网的发展,IPv4 所指的范围对于现在的设备不足以支持
应对IP地址不足策略:
- **动态分配IP地址:**当一个设备需要上网则进行分配,不需要则不分配(此方法已经在使用,但效果有限)
- NAT网络地址转换(核心): 将IP地址分为两大类 ①内网IP(私网IP): 10.* 、172.16-172.31 、192.168.* ②外网IP(公网IP): 其余全是外网IP 注意:约定不同局域网内,内网IP可以重复
- **IPv6:**不是IPv4的升级,这是两个不相关的协议,彼此不兼容,IPv6用16字节128位表示一个IP地址
4、在跨局域网进行访问时应该如何?
此处又分为5种情况:
- 同一个局域网内两个设备进行访问,此时不需要考虑NAT,只需要根据不同IP地址来区分不同设备即可
- 两个外网IP设备访问,也不需要考虑NAT,因为外网IP全局唯一
- 不同局域网中两个设备尝试访问对方,这是不被允许的,因为它们的IP地址可能相同
- 外网 IP 的设备访问内网 IP 的设备,这也是不被允许的,内网IP设备的地址可能会混淆
- 内网 IP 设备尝试访问外网 IP 设备,就会触发 " 网络地址转换 " ,NAT设备(路由器)对IP 数据报其中的 "源 IP 做出修改" ,修改为自己的IP
第五种访问的大致流程如下:
首先内网设备知道了源IP和目地IP及端口号,我们知道要访问外网设备需要外网IP ,对方在返回响应时也需要外网IP 才能做到,那么我们以联通路由器为例(有外网IP),一个联通路由器在一定时间内可能会有成千上万的内网IP进行访问,我们应该如何才能做到区分并返回正确响应,在NAT设备中维护了一个表,包含了映射关系(如果端口号相同也会进行一定的替换),然后会将替换好的IP地址与端口号发往目的IP和端口,此处就完成了发送,返回响应也根据表中数据进行修改后即可
四、路由选择
IP 协议进行数据转发的时候,路线规划的过程,由于如今网络环境的复杂化,IP 协议的路由选择不知道 "全局" ,因此IP协议的路由选择是**"渐进式"、"启发式"**的过程,它只能给出路线的 "较优解"
- 路由的过程,是一跳一跳(Hop by Hop)"问路"的过程
- " 一跳一跳 " 就是数据链路层的一个具体区间,具体在以太网中指源MAC地址到目的MAC地址之间的帧传输区间
IP 数据包的传输过程也和问路一样,数据转发的时候到达路由器,每个路由器都会知道一些周围的情况(维护一个"路由表")
- 如果路由器知道在哪,会给出具体位置
- 如果路由器不知道在哪,会给出一个方向
在路由表中如果没有任何一个记录可以匹配到,就会走默认的路径(下一跳表项,都不匹配会给默认值),下一跳表项通常是指 "上一级" 路由器






