计算机网络数据传输
前置先记核心四层逻辑
数据传送全程遵循TCP/IP 四层模型
- 应用层(浏览器、微信、HTTP/HTTPS)
- 传输层(TCP/UDP、端口)
- 网络层(IP 地址、路由器)
- 网络接口层(MAC 地址、交换机、网线 / WiFi)
数据发送:从上往下层层打包数据接收:从下往上层层拆包
第一步:你输入网址回车(应用层)
比如输入:https://mp.csdn.net/xxx
- 浏览器先识别:这是URL
- 提取域名
mp.csdn.net - 浏览器不知道域名对应的 IP,先发起DNS 解析
- 向本地 DNS 服务器发问:
mp.csdn.net 对应的IP是多少? - DNS 服务器查到后,把服务器公网 IP发回给你的电脑
- 向本地 DNS 服务器发问:
现在你电脑拿到了:目标 IP + 默认 443 端口
第二步:传输层 建立 TCP 连接(端口登场)
浏览器要用TCP 协议跟服务器 443 端口 握手
- TCP 三次握手:建立可靠连接,保证数据不丢、不乱序
- 本机随机开一个临时高端口,对接服务器443 端口👉 这里就是:IP + 端口确定两端程序通信
同时 HTTPS 会在这里做加密握手,后续数据全是加密传输。
第三步:网络层 打包 IP 数据包(IP 地址登场)
电脑把要发的请求数据:
- 加上源 IP(你手机 / 电脑的内网 IP)
- 加上目标 IP(CSDN 服务器公网 IP)打包成IP 数据包
电脑判断:目标不在同一个局域网,要发给默认网关(就是你家路由器)
第四步:网络接口层 打包帧(MAC 地址、交换机登场)
内网通信不靠 IP,靠MAC 物理地址
电脑查网关(路由器 LAN 口)的MAC 地址
给 IP 数据包再包一层:源 MAC(你电脑)+ 目标 MAC(路由器)变成数据帧
数据发到交换机(家用路由器内置交换机)交换机看目标 MAC,直接把数据转发给路由器,不瞎广播。
第五步:路由器转发(跨网络核心)
路由器拿到数据帧:
- 拆掉 MAC 帧头,露出里面的 IP 包
- 看目标公网 IP,查路由表
- 重新换 MAC 头:
- 源 MAC 换成路由器 WAN 口 MAC
- 目标 MAC 换成下一跳运营商设备 MAC
- 转发到运营商网络(宽带骨干网)
👉 关键:IP 全程不变,每过一台设备 MAC 都重新换
就像写信:
- IP 是收件人地址(永远不变)
- MAC 是每一段跑腿的驿站地址(每一站都换)
第六步:骨干网传输 到达目标服务器
数据经过运营商无数路由器一跳一跳转发,最终到达:CSDN 机房的公网 IP 服务器(Nginx / 反向代理)
第七步:服务器逐层拆包,处理请求
服务器从下往上拆:
- 拆 MAC 帧 → 到 IP 层
- 拆 IP 包 → 到 TCP 传输层
- 根据443 端口交给 Nginx / 网页服务
- Nginx 看请求里的Host 域名(mp.csdn.net)区分是哪个网站,再转发给后端程序(Java/PHP/Tomcat)
- 后端程序生成网页数据、JSON 数据
第八步:数据原路返回,回到你的浏览器
响应数据走一模一样的反向流程:服务器 → 机房交换机 → 运营商路由器 → 你家路由器 → 内网交换机 → 你的电脑浏览器收到数据,解析 HTML/CSS/JS,渲染出页面给你看。
超核心 3 个总结(必背)
IP:负责跨全网寻址,全程不变
MAC:负责局域网相邻设备转发,每一跳都变
端口:负责同一台电脑区分不同程序(80/443/8080/3306)
设备分工
- 交换机:只看 MAC,管内网转发
- 路由器:只看 IP,管跨网转发
- 端口:操作系统用来区分软件服务
- 数据永远是:层层打包上路,层层拆包解读
