网络基本概念

概览

网络通信是广义的进程间通信(IPC),带IP地址的网络IPC比单机IPC更复杂。学习网络编程需先理解网络分层思想,再掌握网络协议,核心是基于协议编写符合规范的通信代码。

网络分层

网络传输过程复杂,按功能分层可明确每层职责,便于形成行业标准和维护代码。

OSI七层模型(理论模型)

七层模型

从顶层到底层依次为:

  1. 应用层:面向用户,提供具体应用服务
  2. 表示层:处理数据加密、压缩、编码等格式转换
  3. 会话层:建立、管理和终止通信会话
  4. 传输层:负责端到端的数据传输控制
  5. 网络层:处理路由选择,实现跨网络通信
  6. 数据链路层:处理物理地址、帧传输等链路管理
  7. 物理层:定义物理传输媒介、接口标准等

TCP/IP四层模型(实际应用模型)

TCP/IP四层模型与OSI七层模型对应关系

是现行普适的网络层次模型,与OSI模型存在对应关系,从顶层到底层:

  • 应用层
    • 包含OSI模型的应用层、表示层、会话层功能
    • 涵盖加密、压缩、编码、会话管理等,应用程序复杂度可灵活调整
  • 传输层(操作系统内核层)
    • 对应OSI模型传输层,核心负责传输控制
  • 网络层(操作系统内核层)
    • 对应OSI模型网络层,核心负责路由选择
  • 网络接口与物理层(操作系统内核层)
    • 包含OSI模型数据链路层和物理层功能
    • 涵盖实际数据传输的物理媒介及对应驱动软件

网络协议

协议是通信双方约定的“暗号”,将协定内容写入数据包固定位置,双方按统一方式解读,实现意图互通。

协议与分层的关系

不同网络分层对应专属协议,互联网领域应用最广泛的是TCP/IP协议栈。

TCP/IP协议栈组成

TCP/IP协议栈并非仅含TCP和IP协议,而是包含一系列相关协议,具体分层协议如下:

层次 核心协议
应用层 DNS、FTP、HTTP、IMAP、POP3、SMTP、SSH、Telnet、SSL 等
传输层 TCP、UDP 等
网络层 IP(IPv4、IPv6)、ICMP、ARP 等
数据链路与物理层 802.3(Ethernet)、802.11(Wi-Fi)、PPP 等

数据包的封装与解封装

数据包分层封装与解封装过程
  • 发送方:逐层对数据包进行协议封装,类似给包裹贴标签
  • 接收方:执行反向解封装过程,拆封后读取协议头信息

基本术语

套接字(Socket)

套接字原意为插座、电插孔,应用层中通过操作系统的不同协议处理APP数据,类似选择不同插口接通电器。用户需根据需求选择对应协议的套接字。

套接字工作原理示意图

IP地址

IP地址是计算机的唯一标识,便于在全球范围内定位设备。

IPv4地址

  • 长度为32位,采用点分式字符串表示(如192.168.18.2)
  • 由网络号(标识网络)和主机号(标识网络内设备)组成
  • 因设备数量激增,IPv4地址曾面临枯竭,子网技术缓解了这一问题
IPv4

IPv4地址分类

地址类别 网络号与主机号划分 首字节特征 地址范围
A类地址 第1字节为网络号,后3字节为主机号 最高位固定为0 1.0.0.1 – 126.255.255.255
B类地址 前2字节为网络号,后2字节为主机号 前两位固定为10 128.0.0.1 – 191.255.255.255
C类地址 前3字节为网络号,最后1字节为主机号 前三位固定为110 192.0.0.1 – 223.255.255.255
D类地址 不分网络号和主机号 前四位固定为1110 224.0.0.1 – 239.255.255.255

补充:IPv6地址

  • 长度为128位,采用冒分十六进制表示(如fe80:6cd9:f2d7:6706:6f3d%10)
  • 彻底解决了IPv4地址枯竭问题,支持更多设备联网
  • 目前正逐步替代IPv4,成为下一代互联网核心地址协议

注意事项

  1. 日常主机使用的多为局域网地址,由局域网路由分配
  2. D类地址并非普通IP地址,而是UDP协议的多播标识

子网属性

TCP/IPv4属性配置界面

核心概念

  • 网段:IP地址与子网掩码进行“与”运算后的结果(网段 = IP & 子网掩码)
  • 同一局域网内的主机需处于同一网段,否则网关无法路由转发数据

子网掩码的表示方式

  • 点分十进制形式(如255.255.255.0)
  • 比特位缩写形式(如192.168.9.88/24,/24表示前24位为网络号,对应子网掩码255.255.255.0)

端口号

IP地址标识计算机,端口号标识计算机内的通信进程(类似网络中的进程号)。

端口号基础信息

  • 长度为16位,取值范围0-65535
  • 由IANA(Internet Assigned Numbers Authority)统一管理
  • TCP端口号与UDP端口号相互独立,互不影响

端口号分类

  1. 系统端口(1~1023):用于系统核心服务,需管理员权限使用
  2. 注册端口(1024~49150):用于第三方应用服务,需注册使用
  3. 动态或私有端口(49151~65535):日常实验、开发可自由使用

常见端口示例

  • HTTP:80端口(TCP)
  • HTTPS:443端口(TCP)
  • FTP:21端口(TCP)
  • DNS:53端口(TCP/UDP)
  • SSH:22端口(TCP)

字节序

当数据需用2个及以上字节存储时,会存在字节序差异(即字节存储顺序不同)。

字节序分类

大端序与小端序存储对比示意图
  • 小端序:最低有效位存于低地址处(多数PC机采用)
  • 大端序:最低有效位存于高地址处(网络字节序标准)

网络编程中的字节序处理

  • 单机编程中,字节序是系统内部细节,不影响程序运行
  • 网络通信中,需统一使用大端序(网络字节序)
  • 发送数据:主机字节序 → 网络字节序
  • 接收数据:网络字节序 → 主机字节序
示意图

字节序转换函数(以C语言为例)

  • htons():主机字节序转网络字节序(针对16位数据)
  • ntohs():网络字节序转主机字节序(针对16位数据)
  • htonl():主机字节序转网络字节序(针对32位数据)
  • ntohl():网络字节序转主机字节序(针对32位数据)

WSL 切换版本

WSL2的IP地址为虚拟地址,若需进行设备间(如同桌协作)实验,需切换至WSL1版本。

切换步骤(Windows PowerShell管理员模式)

  1. 查看已安装的WSL发行版及版本:wsl -l -v
  2. 执行版本切换命令:wsl --set-version <发行版名称> 1(如wsl --set-version Ubuntu-22.04 1)
  3. 等待转换完成(可能需要几分钟)

切换后验证与注意事项

  • 验证版本:切换后再次执行wsl -l -v,确认版本已变为1
  • 网络访问:WSL1使用与Windows主机相同的IP地址,设备间可通过局域网IP直接通信
  • 若切换失败:检查Windows虚拟机平台、WSL功能是否已启用,或重启电脑后重试
示意图
posted @ 2025-12-08 08:32  Jaklin  阅读(52)  评论(0)    收藏  举报