Role vs Implementation 思考记录
背景
在学习 Computer Network 的 Host / End System 时,遇到一个问题:
教材描述:
All devices connected to the Internet are called hosts or end systems.
如果按照字面理解:
flowchart TD Device["Internet 连接设备"] --> Host["Host"]
会产生很多问题。
例如:
- Router 是否也是 Host?
- Switch 是否也是 Host?
- AP 是否也是 Host?
因为这些设备同样:
- 连接 Internet
- 参与数据通信
- 拥有网络接口
Q1:为什么不能按照物理设备划分网络角色?
初始疑问
如果:
Host = 某种设备
Router = 某种设备
AP = 某种设备
那么现代网络设备会很难分类。
例如:
家庭路由器:
一个物理设备
同时具有:
Router
AP
Firewall
DHCP Server
那么它到底是什么?
思考过程
问题在于:
把:
物理设备
和:
网络角色
混淆了。
计算机网络模型描述的是:
功能职责
而不是:
硬件形态
结论
Physical Device
≠
Network Role
Q2:Host 到底是什么?
疑问
如果 Host 不是设备,那么 Host 是什么?
思考
Host 的关键不是:
- 一台电脑
- 一个服务器
- 一个手机
而是:
是否承担:
Communication Endpoint
角色。
也就是:
- 作为数据源
- 作为数据目的
- 运行应用程序
结论
Host 是网络中的角色。
不是固定硬件。
例如:
PC
可以是 Host
Cloud Server
可以是 Host
Embedded Device
也可以是 Host
Q3:Router 为什么不是 Host?
疑问
Router:
- 有 IP 地址
- 连接 Internet
- 处理数据包
为什么不是 Host?
思考
区别不在于:
有没有网络能力
而在于:
承担什么职责
Host:
Source / Destination
Router:
Forwarding
结论
Router 不是因为“不是设备”。
而是:
在当前网络模型中,它承担的是:
Packet Forwarding Role
Q4:同一个设备可以有多个角色吗?
疑问
如果角色不是设备,那么一个设备是否可以同时具有多个角色?
思考
现实设备:
Linux Server
可以:
运行 Web 服务:
Host Role
开启 IP Forwarding:
Router Role
运行防火墙:
Firewall Role
结论
flowchart TD Device["One Device"] --> Roles["Multiple Roles"]
角色取决于功能,而不是设备名称。
Q5:为什么学习计算机系统不能局限于硬件?
疑问
计算机教材经常使用:
- 主机
- 路由器
- 交换机
这些硬件词汇。
但是现实系统越来越复杂:
- 软件定义网络
- 虚拟化
- 云计算
- 容器网络
是否应该脱离硬件理解?
思考
硬件可以帮助理解:
例如:
Router
≈
负责转发数据包的设备
但是不能作为严格定义。
因为:
实现方式会变化。
结论
学习抽象模型时:
优先关注:
Function
Communication Relationship
Responsibility
而不是:
Physical Object
Q6:Role vs Implementation 和 Abstraction 的关系
思考
为什么计算机科学大量使用这种区分?
因为现实系统非常复杂。
如果直接描述:
具体实现
模型会被限制。
因此需要:
flowchart TD Real["Reality"] --> Role["Abstract Role"] Role --> Model["Model"]
最终理解
计算机科学中的很多概念:
不是描述:
这个东西是什么
而是描述:
这个东西承担什么作用
例如:
Host
不是:
某种电脑
而是:
通信端点角色
Router
不是:
某种盒子
而是:
数据转发角色
核心结论
Role ≠ Implementation
或者:
What it does
≠
How it is implemented
理解 CS 中的抽象模型时:
应该先理解:
- 角色
- 职责
- 关系
再理解:
- 硬件
- 软件
- 具体实现