当前位置: 首页 > news >正文

网络原理:数据链路层、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
```

2. NAT转换:路由器修改源地址
```
源IP: 203.0.113.1:12345  (路由器记住这个映射)
目标IP: 93.184.216.34:80
```

3. 网站响应:网站发回响应
```
源IP: 93.184.216.34:80
目标IP: 203.0.113.1:12345
```

4. 反向转换:路由器查表还原地址
```
源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:浏览器分析出
- 协议:HTTPS
- 域名:www.example.com
- 默认路径:/ (首页)

3. DNS查询 - 四步曲:
```
浏览器缓存 → 系统缓存 → 路由器缓存 → DNS服务器
```

   详细查询过程:
- 浏览器检查自己的DNS缓存
- 查询操作系统缓存(如hosts文件)
- 向配置的DNS服务器(如8.8.8.8)发送查询请求
- 获得IP地址:`93.184.216.34`

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

4. TCP三次握手:建立可靠连接
```
你: SYN (我想连接)
服务器: SYN-ACK (我准备好了)
你: ACK (好的,开始通信)
```

5. TLS握手(HTTPS):建立安全通道
- 协商加密算法
- 验证证书真实性
- 生成会话密钥

6. 发送HTTP请求:
```http
GET / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0...
Accept: text/html,application/xhtml+xml
```

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

7. 服务器处理:
- Web服务器(如Nginx)接收请求
- 可能转发给应用服务器(如Tomcat)
- 执行后端代码,查询数据库
- 生成HTML响应

8. 服务器响应:
```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>

http://www.dtcms.com/a/535747.html

相关文章:

  • 【从零开始开发远程桌面连接控制工具】01-项目概述与架构设计
  • 网站建设竞价托管什么意思在国内做推广产品用什么网站好
  • 有没有做宠物的网站网站开发中间商怎么做
  • 深度强化学习 | 详解从信赖域策略优化(TRPO)到近端策略优化(PPO)算法原理
  • 在类中定义装饰器:Python高级元编程技术详解
  • [C++][正则表达式]常用C++正则表达式用法
  • 基于大数据的短视频数据分析系统 Spark哔哩哔哩视频数据分析可视化系统 Hadoop大数据技术 情感分析 舆情分析 爬虫 推荐系统 协同过滤推荐算法 ✅
  • 参考抖音推荐算法的功能:不同用户规模的推荐技术框架
  • 深入理解C语言scanf函数:从基础到高级用法完全指南
  • 检测相邻递增子数组1 2(LeetCode 3349 3350)
  • 《算法闯关指南:优选算法--前缀和》--25.【模板】前缀和,26.【模板】二维前缀和
  • 快速搭建网站2020缅甸新闻最新消息
  • 搜索网站做推广全网推广平台推荐
  • 仓颉编程(16)泛型类型
  • 「小有可为」AI 开源公益创新挑战赛
  • 《 Linux 点滴漫谈: 四 》文件权限与用户管理
  • 评估虚拟机资源规划
  • 深入理解 SO_REUSEADDR:从“Address already in use”到服务器瞬间重启
  • 机器人中的多模态——RoboBrain
  • MySQL 8.0.x 全平台安装指南:Windows、CentOS、Ubuntu 详细步骤与问题解决
  • YOLO!!
  • 电子电气架构 --- 汽车座舱行业背景综述
  • C++(23):通过print和printIn进行输出
  • 获取网站访客qq号成都网站建设优点
  • 做一个同城便民信息网站怎么做公司给别人做的网站违法吗
  • 微算法科技(NASDAQ MLGO)探索自适应差分隐私机制(如AdaDP),根据任务复杂度动态调整噪声
  • 入选大模型一体机产业图谱,云从科技以全栈能力推动AI落地新范式
  • 十六、STM32的TIM(七)(PWM直流电机)
  • TCP与UDP深度理解
  • 万界星空科技MES系统功能介绍及实施指南