1
0
mirror of https://github.com/ZSCNetSupportDept/website.git synced 2026-02-11 04:29:32 +08:00
Files
website/docs/wiki/05-基础知识/09-科普/网上冲浪全解析.md
2025-11-07 01:01:29 +08:00

88 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
description: 用OSI模型来解析网上冲浪全过程同时分析每一层可能出现的故障
---
网上冲浪的原理挺复杂的,如果一个个列出来鬼才看得懂啊
还好前人和我的想法一样于是他们搞鼓出了一个叫作开放式系统互联模型简称为OSI模型的东西。他出现的目的是为了给全球的计算机提供网络互联的基本框架。这玩意一共有7层1~4 层与网络通信技术相关,而第 5 到第 7 层则与用户应用程序有关。
接下来就以访问网维官网为例使用OSI模型来解析上网的全过程同时分析每一层可能出现的故障
:::info
假设本机 IP 为 `192.168.1.10`、网关 `192.168.1.1`,域名 `zsxyww.com` 解析到 `47.52.33.166`(示例地址),网卡 MAC `00:11:22:33:44:55`,网关 MAC `66:77:88:99:aa:bb`
:::
从表到深整个流程在7层里一共经历了以下步骤
1. 应用层7浏览器发起 HTTPS 请求
2. 表示层6使用 TLS进行加密协商与会话建立
3. 会话层5在 TCP/TLS 之上维护会话
4. 传输层4TCP 三次握手,端口号(客户端随机端口 → 服务器 443
5. 网络层3IP 分组路由到
6. 数据链路层2将 IP 分组封装成以太网帧,发送到网关的 MAC
7. 物理层1电信号或光信号在介质网线/WiFi上传输
下面逐层展开
## 物理层Layer 1
顾名思义,这层是电信号和和光信号传输的一层,属于是看得见摸得着
当用户发出请求时计算机会通过网卡将数据帧编码成以太网电信号通过路由器、交换机、ISP光纤传输到目标网络。
在这一层出现的故障和硬件有关例如网线缺芯导致上网速率低光纤断开WiFi信号干扰等可以尝试维修或者替换故障元件
## 数据链路层Layer 2
这一层确保了节点之间的可靠传输主要依靠MAC和ARP来实现
在例子中,我们的主机知道了`zsxyww.com`的ip是`47.52.33.166`但是这个ip不在本地网络。这时主机就会将这个请求发送至网关由网关进行转发。
转发是一个关键环节为了确保传输的可靠性主机和网关需要一个能识别对方身份的东西。这个东西叫做MAC地址MAC在一个网络当中应当具有唯一性。当主机知道网关的ip地址后其会广播一个ARP请求网关会回应其自身的MAC地址双方才能确定身份。
其实和你去教室上课差不多你知道了你要去上哪个老师的哪节课但是不知道科室在哪就对应了主机知道网关ip但是不知道MAC。这个时候你去班群吼一声:`xxx课在哪上啊`相当于主机发送ARP请求广播。然后好心的同学告诉了你教室位置这就相当于网关回应ARP请求广播给予主机其MAC地址。
这个时候就会有人问了,诶那我如果心眼坏的流脓,告诉他一个虚假的教室号会怎么样?显而易见的,这个人会把错误的教室号当成正确的去上课。这对应着**ARP攻击**攻击者可以伪造ARP响应劫持主机的请求相当危险
:::info
对于IPv6, 其使用NDP而不是ARP
:::
在这一层出现的错误一般是登录不上需要解绑端口或者是局域网MAC打架。可以参考wiki解决
## 网络层Layer 3
网络层负责逻辑寻址和路由主要的协议有IP(v4/v6)
在主机向`zsxyww.com`发出的请求中包含了一个IP(v4/v6)报文其包含源IP和目标IP以及寻址方法。路由器会根据路由表将数据包向上游路由最终到达目标网段
这相当于坐地铁出门(~~中山:查无此物~~)源IP和目标IP对应着出发车站和到达车站路由表对应着地铁线路图。根据路由表你可以使用最短的路径到达目的地也可以随机地换乘花费更多的时间。数据包传递也是同理。
在这一层出现的问题一般是内网ip打架检查路由器的DHCP和用户设置
## 传输层Layer 4
传输层顾名思义负责传输主要协议有TCP/UDP/QUIC...
传输层承载着数据,同时也决定了传输的可靠性
![喝水,爽](/img/wiki/trans-proto-meme.jpg)
参考上图可以发现不同的传输协议的传输可靠性是不同的。VPN在两台机器之间建立出一个点对点的隧道来确保数据传输可靠性TCP通过三次握手来确认数据包确实被接收。而UDP则只确认目标地址而不会确认数据包是否确实传达到目标机器Broadcast(广播)则干脆不指定目标机器,~~谁爱收谁收去~~
传输可靠性和握手时间是成正比的。在一些特殊场合,会牺牲部分可靠性换取更快的速度。
这一层一般不会出现可以由网维成员修复的错误
## 会话层Layer 5
会话层负责管理会话(连接的创建、维护、终止)和复用,常由 TLS/应用或传输层来承担
这一层一般不会出现可以由网维成员修复的错误
## 表示层Layer 6
表示层负责数据表示、加/解密、编码、压缩。
TLS 在这一层执行协商,客户端和服务端验证证书后双方生成对称会话密钥,来进行会话的加密
加密的过程非常有趣,如果你对数学感兴趣的话可以去自行了解。~~求你了我不想再碰密码学了~~
表示层一般会出现由于计算机时差导致的证书过期错误,校准时间即可
## 应用层Layer 7
应用层实现了最终的应用协议HTTP/HTTPS、DNS 等)。绝大部分用户可见的操作都在应用层。
当用户通过浏览器发出请求时浏览器会首先检查本地缓存并优先加载随后检查HSTS`zsxyww.com`存在于HSTS列表内则会强制使用HTTPS。同时浏览器会进行DNS查询获得目标IP地址。
获取目标IP地址后浏览器会向目标IP发起握手(TLS,TCP/QUIC),并发送HTTP请求。服务器得到请求后向主机发送响应包主要包含响应状态响应头和正文。服务器会根据响应发起进一步请求同时进行画面的渲染和加载网页就在浏览器窗口上呈现出来了。
应用层会出现的问题可太多了,需要灵活变通,用不同的思路解决问题。