写在前面

前两篇我们认识了计算机的"身体"(硬件)和"工作岗位"(服务器与云计算)。现在,我们要回答一个最核心的问题:两台计算机之间,到底是怎么"说话"的?

本文只讲四个核心概念:网络是什么、数据怎么找到路、数据怎么传得稳、程序员日常怎么打交道。不堆砌术语,不炫技,让你用最短的时间建立网络认知框架。


📌 第一部分:网络是什么?——计算机的"电话系统"

1.1 一句话定义

计算机网络:把多台计算机通过线路和设备连接起来,让它们可以互相传递信息的系统。

一句话理解:网络就是计算机之间的电话系统。你的电脑打电话,对方的电脑接听,中间经过交换机和路由器转接。


1.2 网络的核心作用

作用 生活类比 编程场景
传数据 打电话、发微信 浏览器请求网页、APP调用接口
共享资源 图书馆借书 云盘下载文件、访问数据库
远程控制 遥控家电 SSH登录服务器、远程桌面

关键认知:你写的每一行代码,只要涉及"联网",本质上都是在使用这个"电话系统"。


1.3 你家是怎么上网的?——网络设备一览表

设备 作用 比喻
光猫/调制解调器 把光信号转成电信号,连接运营商 家门口的电话接线盒
路由器 给家里设备分配IP,连接互联网 小区门卫,负责对外联络
交换机 让家里多台设备互相通信 楼道的分线器
你的电脑/手机 发起请求、接收数据 打电话的人

数据流向表

步骤 数据流向 作用
1 你的电脑 → 路由器 发起请求
2 路由器 → 光猫 转发到运营商
3 光猫 → 运营商 → 互联网 进入广域网
4 互联网 → 目标服务器 到达目的地
5 目标服务器 → 互联网 → 运营商 → 光猫 → 路由器 → 你的电脑 返回数据

📌 第二部分:数据怎么找到路?——IP地址和DNS

2.1 IP地址:计算机的"电话号码"

IP地址:网络中每台设备的唯一标识,就像电话号码。数据包根据IP地址找到目的地。

类型 说明 例子 特点
公网IP 全球唯一,互联网上可直接访问 114.114.114.114 稀缺、需向运营商申请
私网IP 局域网内部使用,不同网络可重复 192.168.1.1 免费、由路由器自动分配

为什么需要两种IP?

场景 问题 解决方式
家里5台设备上网 运营商只给1个公网IP 路由器给5台设备分配私网IP,共享1个公网IP
公司100台电脑 不可能每台都有公网IP 统一分配私网IP,通过公司网关上网

关键认知:你买的云服务器有两个IP——私网IP(内网通信,免费)和公网IP(对外服务,按流量计费)。


2.2 端口:区分"打给哪个部门"

端口:IP地址找到大楼,端口找到具体的办公室。一台服务器可以同时提供多种服务,靠端口区分。

常见端口 服务 用途
80 HTTP 网页浏览(明文)
443 HTTPS 网页浏览(加密)
22 SSH 远程登录服务器
3306 MySQL 数据库服务
6379 Redis 缓存服务

访问一个服务的完整地址解析表

组成部分 示例值 含义
协议 http:// 使用HTTP协议
域名 www.example.com 通过DNS翻译成IP
端口 :80 访问80端口(HTTP默认可省略)
完整地址 http://www.example.com:80 访问example.com的80端口

避坑提示:新手常把数据库端口(3306)暴露到公网,结果被黑客攻击。数据库只开内网访问,这是铁律。


2.3 DNS:域名翻译官

DNS(域名系统):把人类好记的域名(www.baidu.com)翻译成机器认识的IP地址(14.215.177.38)。

为什么需要DNS?

对比 域名 IP地址
人类记忆 www.baidu.com ✅ 14.215.177.38 ❌
机器识别 需要翻译 直接使用

DNS解析过程表

步骤 动作 耗时 比喻
1 浏览器查缓存(最近访问过?) 0ms 翻翻自己的通讯录
2 问本地DNS(路由器/运营商) 10ms 问小区物业
3 问根服务器(.com归谁管?) 逐级查询 问总机
4 问权威服务器(baidu.com的IP是?) 最终答案 问百度前台
5 返回IP,开始连接 总计10~200ms 拿到号码,开始打电话

关键认知:网站打不开,先检查DNS。修改DNS记录后,需要等待TTL过期时间(通常几分钟到几小时)才能全球生效。


📌 第三部分:数据怎么传得稳?——TCP和UDP

3.1 两种传输方式对比表

对比项 TCP UDP
连接方式 先建立连接,再传数据 直接发,不建立连接
可靠性 不丢、不错、按顺序 可能丢、可能乱序
速度 慢(有确认和重传) 快(只管发)
比喻 打电话(确认对方在才说) 发短信(直接发,不确认)

什么时候用什么?

场景 协议 原因
浏览网页、调用API TCP 数据必须完整,不能缺
下载文件 TCP 文件不能缺一块
视频直播 UDP 偶尔卡一下比等重传更能接受
网络游戏 UDP 延迟0.1秒就可能被击杀
DNS查询 UDP 简单快速,一次请求一次响应

关键认知:作为程序员,90%的场景用TCP。只有明确需要低延迟、可容忍丢包时,才考虑UDP。


3.2 TCP三次握手:建立连接的"暗号"

三次握手:TCP建立连接时的三个步骤,确保双方都能收发数据。

步骤 客户端发送 服务器回复 暗号 作用
1 “我能给你打电话吗?” SYN 客户端请求建立连接
2 “能,你也能接我电话吗?” SYN+ACK 服务器同意,并确认客户端能收
3 “能,开始说吧!” ACK 客户端确认,连接建立

为什么需要三次?

握手次数 问题 结果
两次 客户端发了请求,但服务器没收到 客户端以为连上了,实际没连上
三次 双方各确认一次 确保双方都能收发,连接可靠

关键认知:三次握手是TCP可靠性的基础。面试常考,记住"我发、你回、我再回"就行。


📌 第四部分:程序员日常怎么打交道?——HTTP和HTTPS

4.1 HTTP:浏览器和服务器的"对话规则"

HTTP:浏览器请求网页、服务器返回内容的标准格式。

HTTP请求组成表

组成部分 内容 例子
请求方法 要做什么 GET(获取)、POST(提交)、PUT(更新)、DELETE(删除)
请求地址 找哪个资源 /api/users、/index.html
请求头 附加信息 User-Agent、Cookie、Content-Type
请求体 提交的数据 JSON格式的用户信息

服务器返回组成表

组成部分 内容 例子
状态码 结果如何 200成功、404找不到、500服务器错误
响应头 附加信息 Content-Type、Set-Cookie
响应体 返回的数据 HTML页面、JSON数据

常见状态码速查表

状态码 含义 遇到时怎么办
200 成功 正常,继续
301/302 重定向 网址变了,自动跳转
400 请求参数错误 检查传的参数格式
401 未登录/Token失效 重新登录
403 没权限 联系管理员开通权限
404 资源不存在 检查URL是否正确
500 服务器内部错误 看服务器日志
502 网关错误 检查Nginx/代理配置
503 服务不可用 服务器过载或维护中

关键认知:写代码时,根据状态码判断问题在哪。4xx是客户端问题(你的代码),5xx是服务端问题(服务器代码)。


4.2 HTTPS:加密的"安全通话"

HTTPS:HTTP的安全版本,防止数据在传输中被窃听或篡改。

对比项 HTTP HTTPS
端口 80 443
安全性 明文,易被窃听 加密,防止窃听
浏览器显示 “不安全” 锁标志
是否需要证书 是(SSL证书)

为什么必须HTTPS?

风险 HTTP HTTPS
密码被窃取 ❌ 明文传输,中间人可见 ✅ 加密传输,只有双方可读
网页被篡改 ❌ 中间人可注入广告/恶意代码 ✅ 加密后无法篡改
搜索引擎排名 ❌ 降权 ✅ 优先推荐

关键认知:现在所有网站必须HTTPS。云厂商提供免费SSL证书,一键申请,自动续期,不要花钱买。


📌 第五部分:一张表串联所有知识

5.1 从输入网址到网页显示的完整旅程

步骤 动作 涉及技术 耗时 比喻
1 浏览器检查缓存 本地缓存 0ms 先看看最近有没有
2 DNS解析域名 → IP地址 DNS协议 10~200ms 查通讯录找电话号码
3 建立TCP连接 TCP三次握手 ~50ms 拨号确认对方在
4 发送HTTP请求 HTTP协议 说正事:我要看首页
5 服务器处理请求 服务器程序 10~500ms 对方查资料、写回复
6 服务器返回HTTP响应 HTTP协议 回复:给你页面,成功了
7 浏览器渲染页面 HTML/CSS/JS 取决于复杂度 你看到了内容
8 断开TCP连接 TCP四次挥手 说完再见,挂电话

总耗时:200ms ~ 2秒


5.2 四层模型速记表

层级 核心问题 关键概念 程序员日常
应用层 传什么内容? HTTP、HTTPS、DNS、域名、端口 写API、调接口、配域名
传输层 怎么传得稳/快? TCP(稳)、UDP(快) 选协议、配端口
网络层 传给谁? IP地址、路由器、子网 配IP、配安全组
网络接口层 用什么物理线路? 网线、WiFi、网卡 基本不用管

记忆口诀“传什么、怎么传、传给谁、用什么线”


📌 第六部分:新手避坑指南

6.1 最常见的5个错误

错误 后果 正确做法
数据库端口暴露公网 被黑客攻击,数据被勒索 仅允许内网IP访问
SSH用默认22端口+密码 被暴力破解,服务器被入侵 改端口、用密钥登录
安全组开放0.0.0.0/0 任何人都能访问你的服务 只开放必要IP和端口
网站不用HTTPS 密码被窃取,浏览器标"不安全" 强制HTTPS,配免费证书
忽略DNS缓存 改了解析但网站仍指向旧IP 等待TTL过期或手动刷新

6.2 必会的3个命令

命令 作用 什么时候用
ping baidu.com 测试网络通不通 上不了网时
curl http://example.com 测试接口是否正常 API调不通时
netstat -an 查看端口占用 "端口被占用"报错时

📌 第七部分:总结

核心知识一张表

概念 一句话理解 编程中哪里用到
IP地址 计算机的电话号码 配置服务器、安全组
端口 区分不同服务 部署应用、连接数据库
DNS 域名翻译官 买域名、配解析
TCP 可靠传输,像打电话 网页、API、数据库连接
UDP 快速传输,像发短信 视频、游戏、实时通信
HTTP 浏览器和服务器的对话规则 写接口、调接口
HTTPS 加密的HTTP 所有线上网站必须配置
状态码 请求结果的"暗号" 根据码判断问题

全文串联表

环节 角色 作用
计算机(硬件) 执行者 运行代码、处理数据
服务器(24小时工作) 服务者 对外提供持续服务
网络(互相连接) 连接者 让计算机之间能通信
HTTP/HTTPS 规则 定义浏览器和服务器怎么对话

最终认知:网络不神秘,就是计算机之间的电话系统。你写代码时,只需要关心应用层(HTTP/HTTPS、域名、端口),下层的东西云厂商已经帮你搞定了。


祝你网络之路,连接畅通,永不超时! 🌐

Logo

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

更多推荐