目录
1.网络协议
2.协议分层
2.1 OSI七层模型
2.2TCP/IP五层(四层)模型
2.3 以太网通信
"协议"本质就是一种约定
计算机之间的传输媒介是光信号和电信号. 通过 "频率" 和 "强弱" 来表示 0 和 1 这样的 信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式。即对 0 1 信号组合的诠释
01
,而另一方使用信号强弱来表示 01
,这就如同一方说中文,另一方说葡萄牙语。虽然大家遵循相同的 01 通信规则,但由于“表示方式”不同,即使订立了基本协议,也无法进行正常的通信。在如此多样的环境下,如何确保来自不同厂商的计算机能够顺利通信?
一些思考:
技术被挖掘出了价值,广泛使用,第一生产力的特征才会表现出来,被看到。
所以占领市场,制定标准的重要性就可以理解了。
例如现在的鸿蒙系统(物联网),人工智能,大模型......现在都是在找应用场景来落地,进行普及和构建生态。
软件分层的场景:高内聚,低耦合
回调函数(Callback Function):将一个函数作为参数传递给另一个函数,以便在某个特定事件发生或某个条件得到满足时执行。简而言之,回调函数是一种在特定时机被调用的函数。
以下是一个简单的回调函数示例,使用C语言进行说明:复制
#include <stdio.h>
// 声明一个回调函数类型
typedef void (*callbackFunction)(int);
// 一个简单的函数,接受一个整数值和一个回调函数
void performAction(int value, callbackFunction cb) {
// ... 在这里执行一些操作 ...
// 调用回调函数
cb(value);
}
// 实现一个回调函数
void myCallback(int value) {
printf("回调函数被调用,传入的值是:%d\n", value);
}
int main() {
// 调用 performAction,并传递 myCallback 作为回调函数
performAction(42, myCallback);
return 0;
}
在上面的代码中,performAction
函数接受一个整数和一个回调函数作为参数
例如两个人打电话
本层之间有协议,层和层之间通过话筒(接口)连接
上三层压缩成一层。物理层就偏硬件了,所以我们具体软件工程实践的时候采用↓
结构理解:
结合 用户贯穿硬件 的结构进行理解:
层状是一样的,层和层之间进行匹配
网络通信的本质:就是贯穿协议栈的过程
局域网内,两个直接连接的主机之间可以直接通信。例如投屏需要手机和电视连接同一个 wifi
太阳光八分钟到地球,宇宙中是否存在让光传递的介质--以太,就像空气一样的?后来物理界证实不存在,就是真空的。计算机科学家Q到,我们光电传输就有--以太网~
网络协议栈的层状结构中,每一层都有协议(约定的解读)
信息传递要保证可靠性:要有序。所以每个协议层都要有自己的序号--即协议报头
报文==报头+有效载荷
读取:去掉该层协议报头,将给上一层。所以添加报头的时候也要考虑解包的便利性
通信的过程:本质就是不断的封装和解包的过程
所以在逻辑上,就感觉是在同层传递,例如:
知道了这些,以后面对 封装--解包--分用,才不会困惑
这是大部分协议的共性,未来我们学习具体协议的时候,我们都会问这两个扩展问题!
每台主机在局域网上,都要有自己的唯一的一个“mac 标识”
老师点名张三,全班同学都听到了,每一个同学都把张三的报文报头解析和自己做对比,发现不是叫自己,张三发现是自己,回答说“到”,老师和张三之间进行了通信,班上有很多吃瓜群众
网卡出厂时的有 Mac 地址,全球唯一
例如 H1 要和 H10 进行通信,所有主机在网卡硬件层都收到了,进行报头 Mac 地址对比,发现不是自己的就会进行丢弃,H10 发现是自己的,接收后向上交付
报文被别人抓走了怎么办?为了确保网络安全,可以在应用层进行加密(令牌环),对方就看不到
只允许一个发送,可以看作每台主机背后就是一个进程,网络的传输是共享资源,传输要互斥进行