|-------------------------------------------------------------------------------------------------------------------|
| 学习日记:今天学习不同主机之间进程通信 ------ 网络通信,吃透 OSI 七层模型、TCP/IP 模型、IP 地址、子网掩码、端口、数据包封装解封装、Linux 虚拟机网络配置,是嵌入式 Socket 网络编程的前置基础。 |
一、基本概念
网络通信核心目标:实现不同主机之间的进程间通信。
1. OSI 七层模型(理论模型)
1977 年由国际标准化组织制定,目标让不同体系计算机可以全球互联。
|-------|------------------------|-------------|
| 层级 | 功能说明 | 典型协议 / 设备 |
| 应用层 | 要传输的数据信息,文件传输、电子邮件等 | HTTP、FTP |
| 表示层 | 数据加密解密、压缩解压缩 | --- |
| 会话层 | 建立起一个数据传输通道 | --- |
| 传输层 | 规定数据传输方式 | TCP、UDP、端口号 |
| 网络层 | 实现数据路由转发 | 路由器、IP、ARP |
| 数据链路层 | 封装成帧,局域网通信,差错检测 | 交换机 |
| 物理层 | 定义硬件标准,网线、光纤,传输比特流 bit | 网线、光纤 |
2. TCP/IP 模型(工业生产模型)
①四层模型
- 应用层:OSI 的应用层 + 表示层 + 会话层
- 传输层:传输层
- 网络层:网络层
- 网络接口层:数据链路层 + 物理层
②五层模型(学习最常用)
|---------------------------------------------------------------------------------------------------------------|
| * 应用层:OSI 的应用层 + 表示层 + 会话层 * 传输层:传输层 * 网络层:网络层 * 数据链路层: * 物理层: |
二、IP 协议
1. IP 版本
- IPv4 :32 位,点分十进制表示,例:192.168.1.128
- IPv6:128 位,解决 IP 地址枯竭
|-----------------------------------------------------------|
| IP 地址 = 网络位 + 主机位 示例:192.168.0.121/24,/24代表网络位占 24 位。 |
2. 子网掩码
例:255.255.255.0
二进制:11111111.11111111.11111111.00000000
- 掩码为1:对应 IP 的网络位,判断属于哪个局域网网段
- 掩码为0:对应 IP 的主机位,代表网段内第几台设备
3. 网段号、广播号、网关
- 网段号 :IP 网络位不变,主机位全部置 0。192.168.1.3 + 255.255.255.0 → 网段:192.168.1.0
- 广播号 :IP 网络位不变,主机位全部置 1。192.168.1.3 + 255.255.255.0 →广播号192.168.1.255
- 网关地址 :局域网出口,常见192.168.1.1
|---------------------------|
| 向广播地址发消息,局域网内所有主机都可以收到数据。 |
4. IP 地址五大分类
|-----|---------------------------------------------------------------|----------------------------------|---------|-------------------------------------------------------------------|
| 类别 | 地址范围 | 默认子网掩码 | 用途 | 私有 IP 段 |
| A 类 | 1.0.0.0(1.0.0.0)‑126.255.255.255(126.255.255.255) | 255.0.0.0(255.0.0.0) | 大规模网络 | 10.0.0.0(10.0.0.0)‑10.255.255.255(10.255.255.255) |
| B 类 | 128.0.0.0(128.0.0.0)‑191.255.255.255(191.255.255.255) | 255.255.0.0(255.255.0.0) | 大中规模网络 | 172.16.0.0(172.16.0.0)‑172.31.255.255(172.31.255.255) |
| C 类 | 192.0.0.0(192.0.0.0)‑223.255.255.255(223.255.255.255) | 255.255.255.0(255.255.255.0) | 中小规模局域网 | 192.168.0.0(192.168.0.0)‑192.168.255.255(192.168.255.255) |
| D 类 | 224.0.0.0(224.0.0.0)‑239.255.255.255(239.255.255.255) | --- | 组播、广播 | --- |
| E 类 | 240.0.0.0(240.0.0.0)‑255.255.255.254(255.255.255.254) | --- | 实验保留 | --- |
|-------------------------------------------------------------------------------------------------------------|
| 特殊地址:127.0.0.0 回环地址,本机内部通信。 * 公有 IP :运营商分配,可以直接访问互联网 * 私有 IP :不能直接访问外网,节约公网 IP 资源,局域网内部使用。 |
三、网络协议栈(IP+PORT)
|-----------------------------------------------------|
| IP 定位主机,PORT 定位主机上的进程,IP+PORT 可以精准找到目标主机的目标进程 。 |
端口号:unsigned short,16 位,范围0‑65535,唯一标识网络应用进程。
端口号分类
|-------------|-------------------|-----------------------------------------------|
| 端口区间 | 说明 | 常见服务 |
| 1‑1023 | 系统保留端口 | http:80、https:443、FTP:20/21、TFTP:69、MQTT:1883 |
| 1024‑49151 | 注册端口,IANA 分配给特定软件 | --- |
| 49152‑65535 | 动态 / 私有端口,程序临时使用 | --- |
四、数据包封装和解封装过程
发送方从上到下逐层添加头部信息;接收方从下到上逐层剥离头部。
- 应用层:原始业务数据
- 传输层 :加上 TCP/UDP 头部(源端口、目标端口),生成报文
- 网络层 :加上 IP 头部(源 IP、目标 IP),生成数据包
- 数据链路层 :加上 MAC 头部、尾部校验,生成帧
- 物理层:转为比特流,通过网线光纤传输
接收端执行逆过程,层层剥去头部,最后把原始数据交给应用程序。
五、Linux 虚拟机网络配置(桥接模式)
桥接模式:虚拟机和 Windows 主机处于同一个局域网网段。
桥接模式配置步骤
- 虚拟机设置 → 网络适配器 → 选择桥接模式
- 编辑 → 虚拟网络编辑器 → VMnet0,桥接到 Windows 正在上网的物理网卡
- 修改网卡配置文件
|----------------------------------------|
| shell sudo vim /etc/network/interfaces |
配置示例:
|----------------------------------------------------------------------------|
| Plain Text auto lo iface lo inet loopback auto ens33 iface ens33 inet dhcp |
- 重启网络服务
|--------------------------------------------------------------------|
| shell sudo /etc/init.d/networking restart # 重启无效直接重启系统 sudo reboot |
网络调试常用命令
|------------------------------------------------------------------------------------|
| shell ifconfig # Linux查看网卡信息 ipconfig # Windows查看网卡信息 ping www.baidu.com # 测试网络连通性 |
📝今日学习小结
- OSI 七层是理论,实际开发用 TCP/IP 五层模型,Socket 编程工作在应用层,调用传输层 TCP/UDP。
- IP 找主机,端口找进程,二者组合定位网络通信程序。
- 子网掩码区分网络位、主机位,掌握网段号、广播号计算,嵌入式网络面试高频。
- 数据包发送从上往下封装,接收从下往上解封装,每一层都会增加对应协议头部。
虚拟机桥接模式,让虚拟机和电脑在同一局域网,是后续做 Socket 通信实验必备配置。