【Linux】协议的本质
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、为什么需要网络协议?
1. 一个生动的比喻
二、软件分层:复杂问题的解决方案
1. 分层设计思想
三、OSI七层模型:理论上的完美标准
1. 各层功能详解
2. 数据封装过程
四、TCP/IP五层模型:实际应用的实践标准
1. 简化后的实用模型
一、为什么需要网络协议?
1. 一个生动的比喻
想象两个使用不同语言的人想要交流:
-
中国人说:"你好"
-
美国人说:"Hello"
-
没有协议:双方无法理解对方的意思
现在引入一个"翻译协议":
-
约定都说英语
-
约定交流的格式和顺序
-
约定错误处理方式
这就是协议的本质:通信双方事先约定好的规则和格式。
二、软件分层:复杂问题的解决方案
1. 分层设计思想
网络通信是一个极其复杂的问题,分层设计通过关注点分离来解决这个复杂性:
-
每层只关注自己的职责
-
下层为上层提供服务
-
层与层之间通过接口通信
寄送快递的分层模型:
-
应用层:你要寄送什么物品(书籍、衣服)
-
表示层:物品如何包装(纸箱、泡沫)
-
会话层:寄件人和收件人信息
-
传输层:选择快递公司(顺丰、中通)
-
网络层:地址路由(北京市海淀区→上海市浦东区)
-
数据链路层:运输工具(卡车、飞机)
-
物理层:实际的道路和航线
三、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、UDP | socket API |
网络层 | IP、ICMP | 内核协议栈 |
数据链路层 | Ethernet、ARP | 网卡驱动 |
物理层 | 网线、光纤 | 硬件设备 |