学嵌入式和Linux应用编程|学习日记:计算机网络基础

|-------------------------------------------------------------------------------------------------------------------|
| 学习日记:今天学习不同主机之间进程通信 ------ 网络通信,吃透 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. 网段号、广播号、网关

  1. 网段号 :IP 网络位不变,主机位全部置 0。192.168.1.3 + 255.255.255.0 → 网段:192.168.1.0
  2. 广播号 :IP 网络位不变,主机位全部置 1。192.168.1.3 + 255.255.255.0 →广播号192.168.1.255
  3. 网关地址 :局域网出口,常见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 | 动态 / 私有端口,程序临时使用 | --- |

四、数据包封装和解封装过程

发送方从上到下逐层添加头部信息;接收方从下到上逐层剥离头部。

  1. 应用层:原始业务数据
  2. 传输层 :加上 TCP/UDP 头部(源端口、目标端口),生成报文
  3. 网络层 :加上 IP 头部(源 IP、目标 IP),生成数据包
  4. 数据链路层 :加上 MAC 头部、尾部校验,生成
  5. 物理层:转为比特流,通过网线光纤传输

接收端执行逆过程,层层剥去头部,最后把原始数据交给应用程序。

五、Linux 虚拟机网络配置(桥接模式)

桥接模式:虚拟机和 Windows 主机处于同一个局域网网段。

桥接模式配置步骤

  1. 虚拟机设置 → 网络适配器 → 选择桥接模式
  2. 编辑 → 虚拟网络编辑器 → VMnet0,桥接到 Windows 正在上网的物理网卡
  3. 修改网卡配置文件

|----------------------------------------|
| shell sudo vim /etc/network/interfaces |

配置示例:

|----------------------------------------------------------------------------|
| Plain Text auto lo iface lo inet loopback auto ens33 iface ens33 inet dhcp |

  1. 重启网络服务

|--------------------------------------------------------------------|
| shell sudo /etc/init.d/networking restart # 重启无效直接重启系统 sudo reboot |

网络调试常用命令

|------------------------------------------------------------------------------------|
| shell ifconfig # Linux查看网卡信息 ipconfig # Windows查看网卡信息 ping www.baidu.com # 测试网络连通性 |

📝今日学习小结

  1. OSI 七层是理论,实际开发用 TCP/IP 五层模型,Socket 编程工作在应用层,调用传输层 TCP/UDP。
  2. IP 找主机,端口找进程,二者组合定位网络通信程序。
  3. 子网掩码区分网络位、主机位,掌握网段号、广播号计算,嵌入式网络面试高频。
  4. 数据包发送从上往下封装,接收从下往上解封装,每一层都会增加对应协议头部。

虚拟机桥接模式,让虚拟机和电脑在同一局域网,是后续做 Socket 通信实验必备配置。

相关推荐
麦田里的粮仓34 分钟前
图形设计工具箱(免费开源)
学习
每天题库42 分钟前
交安C证报考条件有哪些?公路水运安全员C证报名时间及考试科目
学习·安全·考试·题库·考证
ang7841 小时前
日常高频使用的 Ansible 命令,按使用频率和场景整理。
linux·运维·服务器
lifallen1 小时前
长任务怎样选择遗忘:clearing、compaction 与 memory
人工智能·学习·ai·ai编程
高亦真1 小时前
今天是学习嵌入式的第35天
linux·学习·算法
️学习的小王1 小时前
FastAPI核心知识点与高频易错点总结
学习·fastapi
HugoStudio_SWAN1 小时前
洛谷 P1319 / P1320 压缩技术——同一枚硬币的正反面
c++·学习·程序人生·算法
mounter6252 小时前
eBPF 驱动的云原生网络变革:Cilium 的前世今生与全机套接字迭代技术演进
linux·ebpf·linux kernel·kernel
赵庆明老师2 小时前
用同一个用户登录宝塔面板的ftp与Linux的sftp
linux·运维·服务器