当前位置: 首页 > news >正文

【Linux】协议的本质

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

一、为什么需要网络协议?

1. 一个生动的比喻

二、软件分层:复杂问题的解决方案

1. 分层设计思想

三、OSI七层模型:理论上的完美标准

1. 各层功能详解

2. 数据封装过程

四、TCP/IP五层模型:实际应用的实践标准

1. 简化后的实用模型


一、为什么需要网络协议?

1. 一个生动的比喻

想象两个使用不同语言的人想要交流:

  • 中国人说:"你好"

  • 美国人说:"Hello"

  • 没有协议:双方无法理解对方的意思

现在引入一个"翻译协议":

  • 约定都说英语

  • 约定交流的格式和顺序

  • 约定错误处理方式

这就是协议的本质:通信双方事先约定好的规则和格式

二、软件分层:复杂问题的解决方案

1. 分层设计思想

网络通信是一个极其复杂的问题,分层设计通过关注点分离来解决这个复杂性:

  • 每层只关注自己的职责

  • 下层为上层提供服务

  • 层与层之间通过接口通信

寄送快递的分层模型

  1. 应用层:你要寄送什么物品(书籍、衣服)

  2. 表示层:物品如何包装(纸箱、泡沫)

  3. 会话层:寄件人和收件人信息

  4. 传输层:选择快递公司(顺丰、中通)

  5. 网络层:地址路由(北京市海淀区→上海市浦东区)

  6. 数据链路层:运输工具(卡车、飞机)

  7. 物理层:实际的道路和航线

三、OSI七层模型:理论上的完美标准

1. 各层功能详解

层次名称功能例子
7应用层为用户提供网络服务HTTP、FTP、SMTP
6表示层数据格式转换、加密SSL/TLS、MIME
5会话层建立、管理、终止会话RPC、NetBIOS
4传输层端到端通信、流量控制TCP、UDP
3网络层寻址和路由选择IP、ICMP
2数据链路层帧传输、差错检测Ethernet、PPP
1物理层比特流传输网线、光纤、无线电

2. 数据封装过程

// 数据发送时的封装过程(自上而下)
应用层数据 → 添加应用层头部 → 表示层数据
表示层数据 → 添加表示层头部 → 会话层数据
会话层数据 → 添加会话层头部 → 传输层数据
传输层数据 → 添加TCP头部 → 网络层数据
网络层数据 → 添加IP头部 → 数据链路层数据
数据链路层数据 → 添加以太网头部 → 物理层比特流

四、TCP/IP五层模型:实际应用的实践标准

1. 简化后的实用模型

层次协议示例Linux中的实现
应用层HTTP、FTP、DNS用户空间程序
传输层TCP、UDPsocket API
网络层IP、ICMP内核协议栈
数据链路层Ethernet、ARP网卡驱动
物理层网线、光纤硬件设备

http://www.dtcms.com/a/349777.html

相关文章:

  • 一键脚本:自动安装 Nginx + Certbot + HTTPS(Let‘s Encrypt)
  • QT-QSS样式表
  • 面试:计算机网络
  • 《输赢》电视剧总结学习
  • 数据结构:红黑树(Red-Black Tree)
  • 电商秒杀场景下,深挖JVM内存泄漏与多线程死锁的解决方案
  • Python3.14安装包下载与保姆级图文安装教程!!
  • PyTorch实战(1)——深度学习概述
  • 【动态规划】309. 买卖股票的最佳时机含冷冻期及动态规划模板
  • webpack文件指纹:hash、chunkhash与contenthash详解
  • 基于 OpenCV 与 Mediapipe 的二头肌弯举追踪器构建指南:从环境搭建到实时计数的完整实现
  • 【CV】图像基本操作——①图像的IO操作
  • 系统架构设计师-计算机系统存储管理-页式、段氏、段页式模拟题
  • [系统架构设计师]专业英语(二十二)
  • Python爬虫第四课:selenium自动化
  • Qwt7.0-打造更美观高效的Qt开源绘图控件库
  • macbook国内源安装rust
  • leetcode LCR 012.寻找数组的中心下标
  • 如何在 Jenkins 中安装 Master 和 Slave 节点以优化 CI/CD 流程
  • init.environ.rc详解
  • CORS解决跨域问题的多个方案 - nginx站点配置 / thinkphp框架内置中间件 / 纯前端vue、vite的server.proxy代理
  • THM Rabbit Hole
  • 安全合规:AC(上网行为安全)--中
  • 【iOS】内存管理及部分Runtime复习
  • Next.js 15.5.0:探索 Turbopack Beta、稳定的 Node.js 中间件和 TypeScript 的改进
  • 力扣每日一题保持手感——498.对角线遍历
  • Node.js特训专栏-性能优化:24.V8引擎内存管理机制
  • ADQ3系列USB 3.2接口版本数字化仪隆重登场
  • 力扣82:删除排序链表中的重复元素Ⅱ
  • 十分钟速通集群