计算机网络结构 OSI网络参考模型 TCP/IP网络模型
参考
蛋老师视频
OSI 模型就是为了解决网络中不同端的通信问题
要抹平厂商设备地域环境等的差异,就需要同一的沟通协议
分层提供的服务的思想,可以使问题简化
从最底层开始思考,信息是如何被传输过去的
物理层
信息的实际载体
如何发送接收信息载体
一般的载体 电压(电信号)、无线电(载波)、光(光信号)
各种载体也会有对应的设备发送接收
比特 bit
但网络是拓扑的,不是一对一直连的,中间有转发的设备
数据链路层
解决在拓扑网络中找到正确的接收设备
以及信息起止问题的解决
集线器 中继器
帧
需要有用于识别设备的Mac物理地址(学过I2C协议的应该很自然的理解)
同时物理层传输信息是存在被干扰的情况导致数据出错,常见的就是某一位的跳变
然而物理层只负责传输,无法发现信息在中间出错了。
作为上一层也就担负起检查错误的义务,常见方案奇偶校验码
甚至会有一些纠错机制
接收发送能力不对等阻塞问题解决
这两层基本保证了信息正确有序送达,
- 不同设备厂商的物理地址可能会重复,如果没有甄别措施,就势必会错发
- 即便是同一厂商的物理地址不同,但 MAC 与在网络中位置并没有关联性,这并不利于寻址,且网络不断扩大这将变得不可实现
于是这个问题交给更上一层去处理
网络层
协议:IP
路由器
包
IP地址就已经完成了屏蔽Mac硬件地址 确定目标设备
但是设备中往往运行着很多程序,信息应该交给目标程序
传输层
协议:TCP、UDP、QUIC
tcp允许将字节拆分段
诞生了 端口号用于区分程序
段
此外还进行了流量控制、错误控制
会话层
状态保持 同步 恢复
表示层
不同机器数据表达方式不同 编码解码
数据压缩
应用层
协议:HTTP、HTTPS、FTP、DNS 等
567层 合并为应用层
报文
一般通信流程
应用层程序 将报文 交给传输层
传输层 为其添加上 端口号信息 封装成段 交给 网络层
网络层 为其添加IP地址信息 封装成包 交给 数据链路层
数据链路层 通过ARP协议广播找到ip对应的Mac地址 将数据封装成帧 交给物理层
物理层 根据传输物理通道传输数据 以比特的形式
经过二层交换机,则会拆帧 获得下一跳Mac地址 再封帧 交由对应的物理层传输数据
经过网关(三层) 也会进行类似处理 从而进入互联网 最终到达目标设备的目标运行程序
(1) 浏览器获取输入的域名www.baidu.com
(2) 浏览器向DNS请求解析www.baidu.com的IP地址
(3) 域名系统DNS解析出百度服务器的IP地址
(4) 浏览器与该服务器建立TCP连接(默认端口号80)
(5) 浏览器发出HTTP请求,请求百度首页
(6) 服务器通过HTTP响应把首页文件发送给浏览器
(7) TCP连接释放
(8) 浏览器将首页文件进行解析,并将Web页显示给用户。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)