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