TCP/IP 网络层

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.010.0.0.0172.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/24192.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(应用层网关)等技术解决。