6.2 KiB
description
| 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层里一共经历了以下步骤:
- 应用层(7):浏览器发起 HTTPS 请求
- 表示层(6)使用 TLS进行加密协商与会话建立
- 会话层(5):在 TCP/TLS 之上维护会话
- 传输层(4):TCP 三次握手,端口号(客户端随机端口 → 服务器 443)
- 网络层(3):IP 分组路由到
- 数据链路层(2):将 IP 分组封装成以太网帧,发送到网关的 MAC
- 物理层(1):电信号或光信号在介质(网线/Wi‑Fi)上传输
下面逐层展开
物理层(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...
传输层承载着数据,同时也决定了传输的可靠性

参考上图,可以发现不同的传输协议的传输可靠性是不同的。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请求。服务器得到请求后,向主机发送响应包,主要包含响应状态,响应头和正文。服务器会根据响应发起进一步请求,同时进行画面的渲染和加载,网页就在浏览器窗口上呈现出来了。
应用层会出现的问题可太多了,需要灵活变通,用不同的思路解决问题。