一、OSI 七层模型(open system interconnect)

OSI 模型是开放系统互联模型(理想模型,尚未实现),共七层,从上层到下层依次为:

  • 应用层:为用户提供具体网络服务,如文件传输(TFTP/FTP)、电子邮件、网页访问等,是直接面向用户的层级。
  • 表示层:负责数据的格式转换、加密解密、压缩解压缩(如 gzip),让不同主机的应用层能识别彼此的数据。
  • 会话层:管理进程间的会话连接,处理连接的建立、断开、保活(keep-alive/keep-close),维护连接状态。
  • 传输层:核心是提供端到端的数据传输服务,有 TCP(可靠)和 UDP(不可靠)两种核心协议,分别适用于文件传输、视频音频传输等不同场景。
  • 网络层:负责跨网络的路由选择和网际互连,核心是 IP 地址,同时处理 NAT 地址转换,是实现不同网络互通的关键。
  • 数据链路层:负责物理相邻主机间的数据传输,基于 MAC 地址寻址,将数据封装为帧,做帧校验和差错控制,核心设备为交换机,可分为 LLC 逻辑链路控制和 MAC 介质访问控制子层。
  • 物理层:最底层,负责将数据转换为电信号通过物理介质(双绞线、光纤、无线信道)传输,定义了传输速率(100Mb、10Gb)、介质类型等物理特性

二、TCP/IP 四层网际互联模型(工业标准)

TCP/IP 模型是实际工业中使用的实用模型,是对 OSI 模型的简化,也是我们实际开发中遵循的标准,对应协议栈层层递进:

  • 应用层:整合 OSI 的应用层、表示层、会话层,对应具体的应用程序和应用层协议(HTTP、TFTP、DNS、FTP 等)。
  • 传输层:与 OSI 传输层一致,核心为 TCP/UDP 协议,通过端口号区分主机上的不同应用程序,端口范围 1-65535。
  • 网络层:与 OSI 网络层一致,核心为 IP 地址,负责路由和寻址,同时包含 ICMP(ping 基于此)、RIP 等协议。
  • 接口层:整合 OSI 的数据链路层和物理层,对应网卡、驱动,负责将网络层的 IP 地址转换为物理层的 MAC 地址,包含 ARP(IP→MAC)、RARP 等协议。

核心协议族:TCP/IP 协议栈的组成

TCP/IP 模型的每一层都对应着核心协议,共同构成了网络通信的 “语言”,核心梳理:

  • 应用层:HTTP(网页)、DNS(域名解析)、DHCP(动态 IP 分配)、TFTP/FTP(文件传输)、SNMP(网络管理);
  • 传输层:TCP(可靠传输)、UDP(无连接传输);
  • 网络层:IP(IPv4/IPv6)、ICMP(网络连通性测试)、IGMP(组播)、RIP/OSPF(路由协议);
  • 接口层:ARP(地址解析)、RARP(反向地址解析)。

三、IP 地址组成

1. IPv4 地址基本结构

  • 本质:IPv4 地址是一个 32 位的二进制数,为了方便人类阅读,采用 点分十进制 表示(如 192.168.1.1)。
  • 组成公式IP地址 = 网络位 + 主机位
    • 网络位:标识主机所在的网段 / 子网,同一网段内的主机可以直接通信。
    • 主机位:标识该网段内的具体一台主机,不能全为 0(代表网络本身)或全为 1(代表广播地址)。

IP地址 == 网络位 + 主机位
IP地址的分类: 点分十进制

2. IPv4 地址分类(A/B/C/D/E 类)

常用 A/B/C 三类地址,这是网络划分的基础:

地址类别 范围 默认子网掩码 私有地址段(局域网专用) 适用场景
A 类 1.0.0.0-126.255.255.255 255.0.0.0 10.0.0.0-10.255.255.255 超大规模网络
B 类 128.0.0.0-191.255.255.255 255.255.0.0 172.16.0.0-172.31.255.255 大中规模网络
C 类 192.0.0.0-223.255.255.255 255.255.255.0 192.168.0.0-192.168.255.255 中小规模 / 局域网
D 类 224.0.0.0-239.255.255.255 - - 组播 / 广播
E 类 240.0.0.0-255.255.255.255 - - 实验使用

重点:私有地址 只能在局域网内部使用,无法直接访问公网,需要通过网关进行 NAT 地址转换。

3. 子网掩码(Subnet Mask)

  • 作用:用来划分网络位和主机位,告诉设备 “哪部分是网络号,哪部分是主机号”。
  • 表示方法:和 IP 地址一样是 32 位二进制数,网络位对应 1,主机位对应 0
    • 例:C 类地址默认子网掩码 255.255.255.0,即前 24 位是网络位,后 8 位是主机位。
  • 判断逻辑:将 IP 地址与子网掩码做 按位与运算,得到的结果就是网络地址,用来判断两台主机是否在同一网段。

4. 网关(Gateway)

  • :是不同网段之间的 “桥梁”,负责将本网段的数据包转发到其他网段。
  • 本质:通常是路由器的一个接口 IP 地址,也是本网段主机访问外网的默认出口。
    • 例:局域网 192.168.0.0/24 中,网关通常是 192.168.0.1
  • 通信规则
    • 同一网段:主机之间直接通信,不需要经过网关。
    • 不同网段:主机必须将数据包发给网关,由网关负责转发。

5. IPv6 补充(拓展)

  • IPv6 是 128 位地址,解决了 IPv4 地址耗尽的问题,采用冒号十六进制表示(如 2001:0db8::1)。
  • 结构上同样包含网络前缀(类似网络位)和接口标识(类似主机位),自带自动配置和安全特性。

四、网络设备寻址逻辑:MAC 地址与 IP 地址

1. 两种地址的核心定位

地址类型 全称 作用范围 核心作用
MAC 地址 物理地址 / 硬件地址 同一局域网内 标识同一网段内的物理设备
IP 地址 网际协议地址 跨网段 / 全局 标识整个网络中的主机

2. MAC 地址寻址(数据链路层)

  • 特点
    • 48 位二进制数,全球唯一,烧录在网卡硬件中,一般不可更改。
    • 表示为十六进制形式,如 00:11:22:33:44:55
  • 工作场景
    • 只在同一个局域网(广播域) 内有效,用于交换机转发数据。
    • 当主机要和同网段设备通信时,会通过 ARP 协议(地址解析协议)将目标 IP 地址解析为对应的 MAC 地址,然后封装成数据帧进行传输。

3. IP 地址寻址(网络层)

  • 特点
    • 逻辑地址,可通过 DHCP 或手动配置动态更改。
    • 跨网段有效,是实现不同网络之间通信的基础。
  • 工作场景
    • 当主机要和不同网段的设备通信时,会将数据包发给网关。
    • 网关(路由器)根据 IP 地址的网络位,查询路由表,选择下一跳路径,将数据包转发到目标网络。
    • 到达目标网络后,再通过 ARP 协议解析 MAC 地址,最终交付给目标主机。

4. 完整寻址流程(重点理解)

  1. 同网段通信
    • 主机 A → ARP 查询主机 B 的 MAC 地址 → 封装数据帧 → 交换机根据 MAC 地址转发 → 主机 B 接收。
  2. 跨网段通信
    • 主机 A → 判断目标 IP 不在本网段 → 将数据包发给网关 → 网关查询路由表转发 → 目标网络路由器 → ARP 查询目标主机 MAC → 交付给主机 B。
  • IP 地址 = 网络位 + 主机位,子网掩码是划分两者的关键。
  • 私有地址 是局域网专用,A/B/C 类各有固定范围,网关是跨网段通信的入口。
  • MAC 地址 负责局域网内寻址,IP 地址 负责全局 / 跨网段寻址,两者通过 ARP 协议关联。
  • 通信的本质是:IP 寻址找到目标网络,MAC 寻址找到目标设备

五、网络常用命令

这三个命令是 Linux / 类 Unix 系统下最基础、最常用的网络诊断工具,必须熟练掌握其功能和用法。

1. ping:网络连通性检测工具

  • 核心作用:测试本机与目标主机之间的网络是否通畅,测量数据包往返时间(RTT),判断是否存在丢包。
  • 底层原理:基于 ICMP 协议(网络层协议),向目标主机发送 echo 请求包,目标主机返回 echo 应答包。
  • 典型用法

ping www.baidu.com         # 测试与百度服务器的连通性

ping 192.168.1.1               # 测试与局域网网关的连通性

  • 关键信息:输出中会显示数据包大小、TTL(生存时间)、往返时间、丢包率等,用于判断网络延迟和稳定性。

2. ifconfig:网络接口信息查看工具

  • 核心作用:查看本机所有网络适配器(网卡)的详细状态信息,包括 IP 地址、子网掩码、MAC 地址、网卡状态(UP/DOWN)、收发数据包统计等。
  • 典型用法

ifconfig                 # 查看所有活跃网卡信息

ifconfig eth0         # 查看指定网卡(如eth0)的信息

3. netstat -anp:网络连接状态监控工具

  • 核心作用:全面查看本机所有的网络连接、监听端口、路由表、接口统计等信息,是排查端口占用、网络连接问题的利器。
  • 参数解析
    • -a:显示所有连接和监听端口。
    • -n:以数字形式显示地址和端口(不进行域名解析,速度更快)。
    • -p:显示建立连接的进程 ID(PID)和程序名。
  • 典型用法

netstat -anp | grep 8080         # 查找占用8080端口的进程

netstat -tulnp                          # 仅查看所有监听中的TCP/UDP端口

六、网络接口核心:Socket 套接字

Socket(套接字)是网络通信的核心接口(BSD Socket),是应用程序与内核之间的网络通信入口,通过IP + 端口号唯一标识网络中的一个通信端点:

1. Socket 与 Socket API

  • Socket(套接字)
    • 本质是网络设备对应的文件描述符,在 Unix/Linux 系统中,“一切皆文件”,网络通信也通过读写文件描述符来完成。
    • 它是应用程序与网络协议栈之间的接口,代表一个网络通信端点。
  • Socket API
    • 全称 Application Programming Interface,是操作系统提供的一组用于网络通信的函数接口(如 socket(), bind(), listen(), connect(), send(), recv() 等)。
    • 是实现 TCP/UDP 客户端 / 服务器程序的核心工具。

2. IP + Port:网络通信的唯一标识

  • IP 地址:用来在网络中唯一识别一台主机,解决 “数据要发给哪台机器” 的问题。
  • 端口号(Port):用来在一台主机上唯一识别一个应用程序,解决 “数据要发给机器上的哪个程序” 的问题。
  • 端口分类
    • 分为 TCP 端口UDP 端口,两者相互独立,范围均为 1-65535
    • 知名端口(0-1023):系统保留,用于标准服务(如 HTTP=80, HTTPS=443, SSH=22)。
    • 注册端口(1024-49151):用于常见应用程序。
    • 动态 / 私有端口(49152-65535):客户端临时使用。
  • 核心结论IP + Port 唯一标识网络中的一个通信端点,是建立网络连接的基础。

3. 网络字节序 vs 主机字节序

  • 主机字节序
    • 指 CPU 在内存中存储多字节数据的方式,x86 架构的 CPU 默认是小端存储(Little-Endian)(低字节存低地址,高字节存高地址)。
  • 网络字节序
    • 为了保证不同架构的主机能正确解析网络数据,网络通信统一规定使用大端存储(Big-Endian)(高字节存低地址,低字节存高地址)。
  • 编程要点:在网络编程中,必须使用专门的函数进行字节序转换,核心转换函数均在<arpa/inet.h>中:
    • ntohs() / ntohl():将网络字节序转换为主机字节序(用于接收数据解析)。
    • htons() / htonl():将主机字节序转换为网络字节序(用于端口、IP 地址)。
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐