前置先记核心四层逻辑

数据传送全程遵循 TCP/IP 四层模型

  1. 应用层(浏览器、微信、HTTP/HTTPS)
  2. 传输层(TCP/UDP、端口)
  3. 网络层(IP 地址、路由器)
  4. 网络接口层(MAC 地址、交换机、网线 / WiFi)

数据发送:从上往下层层打包数据接收:从下往上层层拆包


第一步:你输入网址回车(应用层)

比如输入:https://mp.csdn.net/xxx

  1. 浏览器先识别:这是 URL
  2. 提取域名 mp.csdn.net
  3. 浏览器不知道域名对应的 IP,先发起 DNS 解析
    • 向本地 DNS 服务器发问:mp.csdn.net 对应的IP是多少?
    • DNS 服务器查到后,把服务器公网 IP发回给你的电脑

现在你电脑拿到了:目标 IP + 默认 443 端口


第二步:传输层 建立 TCP 连接(端口登场)

浏览器要用 TCP 协议 跟服务器 443 端口 握手

  • TCP 三次握手:建立可靠连接,保证数据不丢、不乱序
  • 本机随机开一个临时高端口,对接服务器 443 端口👉 这里就是:IP + 端口 确定两端程序通信

同时 HTTPS 会在这里做加密握手,后续数据全是加密传输。


第三步:网络层 打包 IP 数据包(IP 地址登场)

电脑把要发的请求数据:

  • 加上 源 IP(你手机 / 电脑的内网 IP)
  • 加上 目标 IP(CSDN 服务器公网 IP)打包成 IP 数据包

电脑判断:目标不在同一个局域网,要发给默认网关(就是你家路由器)


第四步:网络接口层 打包帧(MAC 地址、交换机登场)

内网通信不靠 IP,靠 MAC 物理地址

  1. 电脑查网关(路由器 LAN 口)的 MAC 地址

  2. 给 IP 数据包再包一层:源 MAC(你电脑)+ 目标 MAC(路由器)变成 数据帧

  3. 数据发到交换机(家用路由器内置交换机)交换机看目标 MAC,直接把数据转发给路由器,不瞎广播。


第五步:路由器转发(跨网络核心)

路由器拿到数据帧:

  1. 拆掉 MAC 帧头,露出里面的 IP 包
  2. 目标公网 IP,查路由表
  3. 重新换 MAC 头
    • 源 MAC 换成路由器 WAN 口 MAC
    • 目标 MAC 换成下一跳运营商设备 MAC
  4. 转发到运营商网络(宽带骨干网)

👉 关键:IP 全程不变,每过一台设备 MAC 都重新换

就像写信:

  • IP 是收件人地址(永远不变)
  • MAC 是每一段跑腿的驿站地址(每一站都换)

第六步:骨干网传输 到达目标服务器

数据经过运营商无数路由器一跳一跳转发,最终到达:CSDN 机房的 公网 IP 服务器(Nginx / 反向代理)


第七步:服务器逐层拆包,处理请求

服务器从下往上拆:

  1. 拆 MAC 帧 → 到 IP 层
  2. 拆 IP 包 → 到 TCP 传输层
  3. 根据 443 端口 交给 Nginx / 网页服务
  4. Nginx 看请求里的 Host 域名mp.csdn.net)区分是哪个网站,再转发给后端程序(Java/PHP/Tomcat)
  5. 后端程序生成网页数据、JSON 数据

第八步:数据原路返回,回到你的浏览器

响应数据走一模一样的反向流程:服务器 → 机房交换机 → 运营商路由器 → 你家路由器 → 内网交换机 → 你的电脑浏览器收到数据,解析 HTML/CSS/JS,渲染出页面给你看。


超核心 3 个总结(必背)

  1. IP:负责跨全网寻址,全程不变

  2. MAC:负责局域网相邻设备转发,每一跳都变

  3. 端口:负责同一台电脑区分不同程序(80/443/8080/3306)

  4. 设备分工

  • 交换机:只看 MAC,管内网转发
  • 路由器:只看 IP,管跨网转发
  • 端口:操作系统用来区分软件服务
  1. 数据永远是:层层打包上路,层层拆包解读
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐