1845 字
8 分钟
Linux 网络编程(1):网络基础模型
网络基本模型
ISO/OSI 七层模型
| 层次 | 核心职责 | 示例 |
|---|---|---|
| 7 应用层 | 为应用程序提供网络通信功能 | HTTP、HTTPS、FTP、DNS、DHCP、Telnet、SMTP、SSH |
| 6 表示层 | 统一数据表示 | 加密/解密、压缩/解压、图片与视频编解码 |
| 5 会话层 | 建立、维护、终止会话 | Session 会话管理、登录验证、断点续传 |
| 4 传输层 | 端到端进程通信 | TCP、UDP、端口、Socket;线程作为补充知识 |
| 3 网络层 | 跨网络寻址与路由 | IP 地址、路由器、防火墙 |
| 2 数据链路层 | 同一链路内的帧传输 | MAC 地址、交换机、网卡 |
| 1 物理层 | 传输原始比特 | 网线、电缆、光纤、电信号、光信号 |
封装与解封装
发送端:应用数据 ↓ 应用/表示/会话处理 ↓ 传输层加入协议、端口等信息 ↓ 网络层加入 IP 寻址信息 ↓ 数据链路层加入 MAC 等链路信息 ↓ 物理层转换为电/光信号
接收端:按相反方向逐层解析,最终交给目标应用程序应用层
| 协议 | 端口 | 主要用途 | |
|---|---|---|---|
| HTTP | 80 | 超文本传输、访问网页 | 明文传输,安全性较低 |
| HTTPS | 443 | 安全的网页传输 | HTTP 加入 SSL/TLS 加密,更安全 |
| FTP | 21 | 文件传输 | 适合传输文件 |
| DNS | 53 | 域名解析 | 将易记域名解析为 IP 地址 |
| DHCP | 68 | 动态网络配置 | 动态分配 IP 等网络参数 |
| Telnet | 23 | 远程登录 | |
| SMTP | 25 | 邮件发送 | |
| SSH | 22 | 安全远程登录 |
标准 DHCP 通信通常使用服务器 67、客户端 68
上层协议会使用下层协议
- HTTP/HTTPS 通常使用 TCP。
- FTP 使用 TCP。
- DNS 可使用 UDP,也可在特定场景使用 TCP。
- 不能把各协议看成完全孤立;协议所属层次决定它向下使用哪些服务。
表示层
数据加密与解密
- 发送前加密,接收后解密。
- 通信双方需要匹配的算法与密钥。
- 目的:避免开放网络中的数据被直接读取或篡改。
数据压缩与解压
- 减少数据量,提高传输效率、节省流量。
- 用户即使没有手动压缩,应用程序也可能在后台自动完成压缩。
图片/视频编解码
- 对图片、音视频进行编码、压缩、传输和解码。
- 典型场景:短视频、直播、视频会议、无人机图传、车机视频等。
- 实时音视频依赖编解码能力和足够的网络带宽、低延迟。
会话层
Session 会话管理
一次会话可以理解为客户端与服务器建立联系、维持交互,直到连接或登录状态结束。
- 登录后在同一网站不同页面间跳转,不应每次重新输入账号密码。
- 浏览器/客户端维护本次会话状态,服务器验证用户身份。
- 关闭页面、退出登录或断开联系,可视为会话结束或状态变化。
断点续传
文件下载中断后,网络恢复时从已完成位置继续,而不是重新从零下载。
已下载部分 + 记录进度 → 中断 → 恢复网络 → 从断点继续传输层
数据从应用程序进入操作系统后,由传输层负责进程之间的端到端通信。
- TCP、UDP;
- 端口;
- Socket;
- 线程(操作系统并发)
IP 与端口的分工
- IP 地址:标识网络中的设备/网络接口。
- 端口:在目标主机中定位具体进程或网络服务。
数据到达目标设备后,操作系统根据目的端口将其交给浏览器、微信、游戏等对应进程。
端口的重要规则
- 一个进程可以使用多个端口。
- 简化:同一主机、同一传输协议下,一个端口同一时刻只能由一个进程占用。
- 端口只要求在本机范围内不冲突,不同设备可以使用相同端口。
- 因此IP 是跨网络定位设备的标识;端口是设备内部定位进程的标识。
Socket(套接字)与五元组
Socket 是网络通信的基础接口。描述一次通信需要五项关键信息:
协议 + 源 IP + 源端口 + 目的 IP + 目的端口UDP 与 TCP 对比
| 对比项 | UDP | TCP |
|---|---|---|
| 全称/类型 | 用户数据报协议 | 传输控制协议 |
| 连接方式 | 无连接 | 面向连接 |
| 可靠性 | 较低;协议本身不保证重传 | 较高;通过确认、重传等机制保证最终交付 |
| 数据形式 | 数据报 | 字节流 |
| 效率与开销 | 效率高、开销小、延迟低 | 开销较大、通常速度相对慢 |
| 典型场景 | 直播、语音/视频聊天、在线游戏、广播类业务 | 文件传输、邮件、网页等重视完整性的业务 |
进程、线程与并发
- 进程:运行中的程序,是资源分配的重要单位。
- 线程:进程内的执行单元,用于在同一进程中处理多个任务。
- 单核 CPU 通过很短的时间片快速切换,使用户感觉多个任务“同时”运行,这是并发。
- 多核 CPU 可让不同任务在不同核心上真正同时执行,属于并行。
- 例子:下载多个文件时,可由多个线程分别处理不同文件或不同任务。
网络层
IP 地址用于在网络中定位设备或网络接口。
查询本机配置
Windows:
ipconfig网卡与 IP
- 网卡是连接网络的硬件基础,可分为有线网卡和无线网卡。
- 网卡存在不代表始终有 IP;连接网络后才会通过 DHCP 或静态配置获得 IP。
- 虚拟机软件可能创建虚拟网卡。
数据链路层与网络设备
MAC 地址与网卡
- MAC 地址与网卡关联,网卡出厂时获得全球唯一标识
- 数据链路层在局部链路中使用 MAC 地址识别设备。
交换机
- 工作在数据链路层。
- 按目的 MAC 地址转发数据帧。
- 维护 MAC 地址与物理端口的对应表。
- 设备接入交换机后,交换机学习其 MAC 地址所在端口;收到数据后查询表并从对应端口转发。
路由器
- 工作在网络层。
- 按目的 IP 地址和路由信息转发数据包。
- 主要负责不同网络之间的通信,可跨越多个网络/路由器进行转发。
物理层
物理层把 0/1 比特转换为可在介质上传输的物理信号:
- 网线/电缆:使用电信号,高低电平可表示 0 和 1。
- 光纤:使用光信号,适合高速和远距离传输。
- 电信号远距离传输会衰减,需要中继或信号增强。
- 光纤通常带宽更高、损耗更小,因此推动了网络速度提升。
网络硬件能力提升后,直播、视频通话、实时导航、在线游戏等软件功能才更容易获得低延迟和高质量体验。
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Linux 网络编程(1):网络基础模型
https://joyanblog.com/posts/linux-network-programming-01-network-model/ 相关文章 智能推荐
1
Linux 网络编程(4):子网划分
Linux 网络编程 Linux 网络编程系列第 4 篇,整理 IPv4 子网划分、CIDR、UDP 广播、以太网帧、MTU、MSS 和 IPv4 数据报首部等知识。
2
Linux 网络编程(2):基于 UDP 协议通信的服务端实现
Linux 网络编程 Linux 网络编程系列第 2 篇,整理 UDP 服务端的基本流程,以及 Winsock2 初始化、套接字创建、地址绑定、数据接收与发送等实现细节。
3
Linux 网络编程(3):基于 UDP 协议通信的服务端实现 2 & ARP 和 RARP
Linux 网络编程 Linux 网络编程系列第 3 篇,补全 UDP 客户端实现,并整理数据封装与解封装、单播/组播/广播、ARP、DNS 和路由转发等知识。
4
Linux 网络编程(5):阻塞、非阻塞 & UDP 总结
Linux 网络编程 Linux 网络编程系列第 5 篇,整理 Socket 缓冲区、阻塞与非阻塞模式、UDP 协议总结,并介绍 TCP 通信流程及服务端、客户端实现。
5
Linux 网络编程(7):TCP 协议相关知识 2
Linux 网络编程 Linux 网络编程系列第 7 篇,整理 TCP 粘包处理、心跳机制、Nagle 算法、拥塞控制、TCP 协议总结以及可靠 UDP 与 QUIC 等扩展知识。
随机文章 随机推荐





