TCP/IP 网络层
地址分类
IP地址用于唯一标识互联网上的每一台主机,它由32位二进制数构成,通常表示为点分十进制格式(如 192.168.1.1)。传统的IP地址分为A、B、C、D、E五类,主要依据地址的前几位进行划分:
- A类地址 :
0.0.0.0~127.255.255.255,首位固定为0,网络号占8位,主机号占24位。常用于大型网络。 - B类地址 :
128.0.0.0~191.255.255.255,前两位固定为10,网络号占16位,主机号占16位。适用于中等规模网络。 - C类地址 :
192.0.0.0~223.255.255.255,前三位固定为110,网络号占24位,主机号占8位。适用于小型网络。 - D类地址 :
224.0.0.0~239.255.255.255,前四位固定为1110,用于多播(组播)通信。 - E类地址 :
240.0.0.0~255.255.255.255,前四位固定为1111,保留用于实验和未来使用。
此外,还有一些特殊地址,如网络地址(主机号全0)、广播地址(主机号全1)以及回环地址(127.0.0.1)等。随着Internet的快速发展,单纯的分类方式逐渐无法满足实际需求,于是出现了CIDR(无类别域间路由)。
CIDR表示法
CIDR(Classless Inter-Domain Routing)消除了传统的A、B、C类地址划分,允许使用任意长度的子网掩码,从而提高IP地址的利用率。CIDR表示法格式为 A.B.C.D/n,其中 n 表示网络前缀的位数(即子网掩码中连续1的位数)。例如 192.168.1.0/24,表示前24位是网络前缀,剩余8位是主机号。
相关计算:可用地址数
对于 A.B.C.D/n 的CIDR地址块,可用主机地址数为:
可用地址数 = 2^(32-n) - 2
减去的两个地址分别代表网络地址和广播地址。例如 /24 网段有 2^8 - 2 = 254 个可用主机地址;/28 网段则有 2^4 - 2 = 14 个可用地址。
下面以 192.168.1.0、10.0.0.0 和 172.16.0.0 为例,展示 /24、/28 和 /30 三种常见掩码的网络地址、广播地址、可用地址范围及可用主机数:
| CIDR表示法 | 网络地址 | 广播地址 | 可用地址范围 | 可用主机数 |
|---|---|---|---|---|
192.168.1.0/24 |
192.168.1.0 |
192.168.1.255 |
192.168.1.1 ~ 192.168.1.254 |
254 |
10.0.0.0/28 |
10.0.0.0 |
10.0.0.15 |
10.0.0.1 ~ 10.0.0.14 |
14 |
172.16.0.0/30 |
172.16.0.0 |
172.16.0.3 |
172.16.0.1 ~ 172.16.0.2 |
2 |
说明 :对于
/24掩码,主机位为 8 位,可用地址数为2⁸ - 2 = 254;/28掩码主机位为 4 位,可用地址数为2⁴ - 2 = 14;/30掩码主机位仅 2 位,可用地址数为2² - 2 = 2,常用于点对点链路。网络地址和广播地址不可分配给主机使用,因此部分通信场景需扣除这两个地址。
CIDR还支持路由聚合(超网),即将多个连续的地址块合并为一个更大的地址块,从而减少路由表条目。
IP数据报结构
IP数据报是网络层传输的基本单元,它由首部 和数据两部分组成。首部包含一系列控制信息,其标准长度为20字节(不含选项字段),关键字段如下:
- 版本:4位,标明IP协议版本(IPv4为4)。
- 首部长度:4位,以4字节为单位,最小值为5(即20字节)。
- 区分服务:8位,用于QoS服务质量控制。
- 总长度:16位,表示整个IP数据报的长度(首部+数据),最大65535字节。
- 标识、标志、片偏移:用于数据报的分片与重组。
- 生存时间(TTL):8位,每经过一个路由器减1,减到0时数据报被丢弃,防止数据报在网络中无限循环。
- 协议:8位,指明上层协议(如TCP=6,UDP=17)。
- 首部校验和:16位,仅对首部进行校验,保证首部的完整性。
- 源IP地址、目的IP地址:各32位,标识数据报的发送方和接收方。
数据部分封装来自传输层的段(TCP段或UDP数据报)。IP数据报在传输过程中会逐跳路由,根据路由表进行转发。
ARP协议
ARP(Address Resolution Protocol,地址解析协议)用于将目的IP地址解析为对应的物理MAC地址,实现从网络层到数据链路层的映射。主机在发送数据前,如果只知道目标IP而不知道其MAC地址,就会在本地网络广播一个ARP请求报文,询问"谁拥有这个IP地址?"。目标主机收到后,单播回应自己的MAC地址。主机收到响应后,会将IP-MAC映射关系存入ARP缓存表,以便后续直接使用。
为了避免缓存过期,ARP条目通常设有生存时间。此外,还有反向ARP(RARP)和代理ARP等变种,用于动态获取IP地址或跨网段解析。
路由聚合
路由聚合(Route Aggregation)是将一组连续的CIDR地址块合并为一条更短前缀的路由,从而缩减路由表大小,提高路由效率。例如,将 192.168.1.0/24 和 192.168.2.0/24 聚合为 192.168.0.0/22,因为这两个网段的前22位相同。聚合后,路由器只需存储这一条路由,而不必为每个子网单独设置条目。
但聚合需要保证被聚合的网络是连续的,且对外通告时不会导致路由黑洞。CIDR对路由聚合提供了天然支持。
路由选择协议
路由选择协议负责在不同路由器之间交换路由信息,帮助路由器建立和维护路由表。根据作用范围可分为两大类:
内部网关协议
内部网关协议(IGP,Interior Gateway Protocol)用于自治系统(AS)内部的路由选择。常见的IGP有:
- RIP(Routing Information Protocol):基于距离向量算法,以跳数作为度量,最大跳数15,适用于小型网络。使用UDP 520端口交换路由表。
- OSPF(Open Shortest Path First):基于链路状态算法,具有收敛速度快、支持区域划分、无环路等优势,适用于大型网络。使用IP协议号89直接封装在IP数据报中。
- EIGRP(思科私有):混合型协议,结合了距离向量和链路状态的优点。
外部网关协议
外部网关协议(EGP,Exterior Gateway Protocol)用于不同自治系统之间的路由选择,最典型的是BGP(Border Gateway Protocol,边界网关协议)。BGP采用路径向量算法,基于AS路径、策略等进行路由决策,是全球互联网的核心路由协议。BGP使用TCP 179端口建立连接,支持CIDR和路由聚合。
BGP不仅能确保全球范围内的路由可达性,还能通过属性(如AS-Path、Local Preference)实现丰富的路由策略。
ICMP协议
ICMP(Internet Control Message Protocol,互联网控制报文协议)用于在IP网络中传递差错和控制信息,是IP协议的辅助协议。常见应用包括:
- 差错报告:如"目标不可达"(Type 3)、"超时"(Type 11,用于Traceroute追踪路由)等。
- 查询/诊断 :
ping命令使用ICMP Echo Request/Reply(Type 0/8)来测试主机可达性。 - 重定向:当路由器发现更优路径时,可发送ICMP重定向报文指示主机更改下一跳。
ICMP报文封装在IP数据报中,协议号为1。尽管ICMP一般用于诊断,但也能被利用进行攻击(如ICMP泛洪),因此其处理需谨慎。
NAT技术
NAT(Network Address Translation,网络地址转换)允许专用网络中的多台主机共用一个或几个公网IP地址访问互联网,从而节省公网IPv4地址资源,同时隐藏内部网络结构,提高安全性。
常见的NAT类型包括:
- 静态NAT:一对一的IP地址映射,固定不变。
- 动态NAT:从地址池中动态分配公网IP给内部主机。
- NAPT(网络地址端口转换):最常用模式,使用"IP+端口"映射实现多对一共享公网IP(也叫PAT,端口地址转换)。内部主机与外部通信时,NAT设备会修改数据报的源IP和源端口,并维护一个转换表,以便返回数据能正确转发回内网主机。
NAT也带来了一些兼容性问题,比如某些协议在内部地址被修改后无法正常工作,需要借助ALG(应用层网关)等技术解决。