网络原理:数据链路层、NAT与网页加载

一、数据链路层:网络通信的"本地邮差"

1.1 数据链路层的基本职责

想象一下,数据链路层就像小区里的本地邮递员,负责在**直接相连的设备之间**传递数据包。它的工作范围很有限,但极其重要。

主要职责包括:

  • 帧封装:将网络层传下来的IP数据包加上"信封"(帧头帧尾)

  • 物理寻址:使用MAC地址识别同一局域网内的设备

  • 差错检测:确保数据在传输过程中没有损坏

  • 流量控制:调节数据传输速度,避免接收方被淹没

1.2 以太网帧结构:数据的"标准信封"

| 目标MAC地址 (6字节) | 源MAC地址 (6字节) | 类型 (2字节) | 数据 (46-1500字节) | 帧校验序列 (4字节) |

举个例子:

当你的电脑( MAC: 11:22:33:44:55:66 )想给同一局域网中的打印机( MAC: AA:BB:CC:DD:EE:FF )发送打印任务时,数据链路层会创建一个帧,目标地址填打印机的MAC,源地址填自己的MAC,然后把数据装进去。

1.3 交换机的工作原理:智能的"邮件分拣员"

交换机是数据链路层的核心设备,它有一个MAC地址表,记录着每个端口连接的设备MAC地址。

工作流程:

  1. 学习:收到设备A的帧时,记录"A的MAC地址 → 端口1"

  2. 转发:当要给A发送数据时,直接发送到端口1

  3. 广播:如果不知道目标在哪里,向所有端口广播(除了来源端口)


二、NAT机制:家庭的"共享电话号码"

2.1 为什么需要NAT?

IPv4地址只有约43亿个,根本不够全球设备分配。NAT(网络地址转换)让多个设备可以共享一个公网IP,就像一家人共享一个电话号码对外联系。

典型场景:

  • 家庭路由器:给所有家庭设备分配私有IP(如192.168.1.x)

  • 对外通信时,全部使用同一个公网IP

#2.2 NAT工作流程详解

假设家庭网络环境:

  • 路由器公网IP:`203.0.113.1`

  • 你的电脑私有IP:`192.168.1.100`

  • 目标网站IP:`93.184.216.34`

当你访问网站时的NAT过程:

  1. 出发:你的电脑发送请求包

```

源IP: 192.168.1.100:54321

目标IP: 93.184.216.34:80

```

  1. NAT转换:路由器修改源地址

```

源IP: 203.0.113.1:12345 (路由器记住这个映射)

目标IP: 93.184.216.34:80

```

  1. 网站响应:网站发回响应

```

源IP: 93.184.216.34:80

目标IP: 203.0.113.1:12345

```

  1. 反向转换:路由器查表还原地址

```

源IP: 93.184.216.34:80

目标IP: 192.168.1.100:54321

```

2.3 NAT转换表:关键的"通讯录"

路由器维护的NAT表示例:

| 内部IP:端口 | 外部端口 | 目标服务器 |

|-------------|----------|------------|

| 192.168.1.100:54321 | 12345 | 93.184.216.34:80 |

| 192.168.1.101:6112 | 12346 | 203.0.113.5:27015 |

这样,即使多台设备同时上网,路由器也能准确地把响应数据"送回家"。


三、从输入URL到页面展示:互联网的"奇幻之旅"

3.1 第一阶段:URL解析和DNS查询

步骤分解:

  1. 输入URL:你在浏览器输入 `https://www.example.com`

  2. 解析URL:浏览器分析出

  1. DNS查询 - 四步曲:

```

浏览器缓存 → 系统缓存 → 路由器缓存 → DNS服务器

```

详细查询过程:

  • 浏览器检查自己的DNS缓存

  • 查询操作系统缓存(如hosts文件)

  • 向配置的DNS服务器(如8.8.8.8)发送查询请求

  • 获得IP地址:`93.184.216.34`

3.2 第二阶段:建立连接和发送请求

  1. TCP三次握手:建立可靠连接

```

你: SYN (我想连接)

服务器: SYN-ACK (我准备好了)

你: ACK (好的,开始通信)

```

  1. TLS握手(HTTPS):建立安全通道
  • 协商加密算法

  • 验证证书真实性

  • 生成会话密钥

  1. 发送HTTP请求:

```http

GET / HTTP/1.1

Host: www.example.com

User-Agent: Mozilla/5.0...

Accept: text/html,application/xhtml+xml

```

3.3 第三阶段:处理请求和获取响应

  1. 服务器处理:
  • Web服务器(如Nginx)接收请求

  • 可能转发给应用服务器(如Tomcat)

  • 执行后端代码,查询数据库

  • 生成HTML响应

  1. 服务器响应:

```http

HTTP/1.1 200 OK

Content-Type: text/html; charset=utf-8

Content-Length: 1256

<!DOCTYPE html>

<html>

<head><title>Example Page</title></head>

<body>...</body>

</html>

相关推荐
The 旺3 小时前
【Rust实战】打造内存安全的网络代理:深入异步IO与并发编程
网络·安全·rust
jieyu11193 小时前
渗透测试中常见的网络端口
网络·渗透测试·端口
我叫汪枫4 小时前
《HTTP 的进化史:从 1.0 到 3.0 的飞跃》
网络·网络协议·http
我叫汪枫4 小时前
《拆解一封网络信:HTTP 报文详解》
网络·网络协议·http
甄心爱学习4 小时前
计算机网络6
网络·计算机网络
你好,赵志伟5 小时前
NAT、代理服务、内网穿透
网络·智能路由器
一个处女座的程序猿O(∩_∩)O5 小时前
实现 AI 流式响应:从等待到实时交互的技术解析
网络·人工智能·交互
kevien_G15 小时前
TCP与UDP深度理解
网络协议·tcp/ip·udp
周杰伦_Jay5 小时前
【计算机网络核心】TCP/IP模型与网页解析全流程详解
网络·网络协议·tcp/ip·计算机网络·算法·架构·1024程序员节