🌐 第01章 · 网络基础
IP/端口/协议/报文
网络基础¶
这一章讲清楚运维里绕不开的几个底子:IP 地址、端口、网络协议分层、TCP 与 UDP 的区别。学完你能看懂一台服务器"挂着哪些服务、开了哪些口、走哪种协议",这是后面所有诊断和防火墙章节的地基。
网卡、IP 与地址类型¶
每台机器至少有一块网卡,网卡上绑定 IP 地址,这就是它在网络里的"门牌号"。在这台 srv1952823 上:
hostname # 主机名
hostname -I # 本机所有 IP
ip -4 addr show eth0 # 只看 IPv4 地址细节
inet 2.25.183.241/24 brd 2.25.183.255 scope global eth0
这里 2.25.183.241 就是这台服务器的公网 IPv4,/24 是前缀表示子网掩码,brd 2.25.183.255 是广播地址。
| 概念 | 含义 | 本机例子 |
|---|---|---|
| IPv4 | 32 位地址,点分十进制 | 2.25.183.241 |
| IPv6 | 128 位地址,冒号十六进制 | 2a02:4780:75:fdeb::1 |
| 子网掩码 | 划分网络段与主机段 | /24(即 255.255.255.0) |
| 网关 | 通往外网的下一条路由 | 2.25.183.254 |
| 回环地址 | 只访问本机自己 | 127.0.0.1 |
127.0.0.1 也叫 localhost,是"我自己"的地址。凡是绑定在 127.0.0.1 上的服务,外部无论怎么连都连不进来——这点在隔离数据库、内部服务时非常关键。
IP 地址的三种区间¶
地址分公网和私网两类。私网地址在内网里随便用、可重复;公网地址全球唯一,要花钱/备案注册。
| 类别 | 地址段 | 典型用途 |
|---|---|---|
| 私网 A | 10.0.0.0/8 |
大型内网、容器网络 |
| 私网 B | 172.16.0.0/12 |
云私有网络 VPC |
| 私网 C | 192.168.0.0/16 |
家用/小型内网 |
| 回环 | 127.0.0.0/8 |
只访问本机 |
| 公网 | 其余 | 给互联网上的机器访问 |
注意 一台服务器的"公网 IP"只是它被转发到公网的那一侧。很多云主机的后端服务其实绑在私网地址上,由网关做 NAT 转发,这点在配置防火墙时特别容易踩坑。
端口:服务在网卡上的"分机号"¶
IP 找机器,端口找机器上的进程。一台机器只有一个 IP,但能挂无数个不同端口的服务。端口号范围 0–65535,其中 0–1023 是知名端口,绑定需要 root 权限。
ss -tlnp # 查看本机正在监听的所有 TCP 端口(t=TCP,l=listening,n=数字,p=进程)
常见端口速查:
| 端口 | 协议 | 服务 | 本机用途 |
|---|---|---|---|
| 22 | TCP | SSH 远程管理 | sshd 对外开放 |
| 53 | TCP/UDP | DNS 解析 | systemd-resolve 仅回环 |
| 80 | TCP | HTTP | nginx 对外开放(跳转/重定向) |
| 443 | TCP | HTTPS | nginx 对外开放(certbot 证书) |
| 3000 / 3010 | TCP | Node 应用 | MainThread 托管 |
| 3306 | TCP | MySQL | 仅 127.0.0.1,不对外 |
| 9090 / 9100 | TCP | Prometheus / exporter | 对外监控 |
| 10086 | TCP | Xray VLESS+WS | 仅回环,nginx 反代 |
| 21116–21119 | TCP/UDP | RustDesk hbbs/hbbr | 远程桌面 |
易错点
0.0.0.0表示"所有网卡的所有地址",127.0.0.1表示"只在本机可访问"。MySQL 绑127.0.0.1:3306是安全的,但如果你把它改成0.0.0.0:3306且没上防火墙,就相当于把一个未加防护的高危数据库直接捅到公网上。
协议分层:TCP/IP 四层模型¶
网络通信不是一步到位的,而是分层的。每层只管自己的事,给上一层提供服务。理解分层,排查问题时才不会"眉毛胡子一把抓"。
| 层次 | 职责 | 代表 | 判据 |
|---|---|---|---|
| 应用层 | 具体业务 | HTTP、SSH、DNS、MySQL | 业务能不能用 |
| 传输层 | 端到端可靠传输 | TCP、UDP | 端口能不能连上 |
| 网络层 | 主机到主机寻址路由 | IP 协议、ICMP | IP 通不通 |
| 链路层 | 物理设备间转发 | 以太网、MAC | 网卡/网线是否正常 |
排查通常自下而上:先看网卡(链路层),再 ping(网络层),再测端口(传输层),最后看业务(应用层)。
TCP 与 UDP¶
传输层两个主力协议,核心区别在"是否可靠":
| 特性 | TCP | UDP |
|---|---|---|
| 连接 | 面向连接,先握手 | 无连接,直接发 |
| 可靠性 | 保证有序、不丢、不重 | 不保证,丢了就丢了 |
| 速度 | 相对慢(有确认/重传) | 快 |
| 适用 | 网页、SSH、数据库、邮箱 | 视频直播、语音、DNS、游戏 |
TCP 建立连接要三次握手,断开要四次挥手:
客户端 → SYN 服务器
客户端 ← SYN+ACK 服务器
客户端 → ACK 服务器 ← 连接建立,开始传数据
提示 判断"端口通不通"本质是在测 TCP 握手能否完成。握手完成才叫"端口开放";握手超时多半是防火墙/安全组拦截,直接拒绝(request refused)才是"端口没在监听"。
子网、网关与默认路由¶
一台机器要发外网包,得知道"下一跳是谁",这就是默认网关。本机网关是 2.25.183.254:
ip route show # 完整路由表
ip route | grep default # 只看默认网关
default via 2.25.183.254 dev eth0 proto static
子网掩码决定同一网段内是"直接投递"还是"交给网关转发"。2.25.183.241/24 这个网段里能直接通信,超出 /24 的 IP 全部走网关。
易错点¶
127.0.0.1不等于0.0.0.0:前者只本机可用,后者全网卡监听。误改监听地址是数据库/内部服务泄露的头号原因。- 公网 IP 不保证可达:本机能
curl localhost,不代表公网能连进来,中间还隔着云安全组(见第 8 章)。 - 端口要和协议一起说:同一个端口号,TCP 与 UDP 是两个独立监听。检查时用
ss -tlnp(TCP) 和ss -ulnp(UDP) 分开看。 - 别名不等于首选:
hostname -I单杠会输出含回环在内的全部 IP,要看真实出口用ip -4 addr show eth0更清晰。
相关命令¶
ip、ss、hostname、ping、route、cat /proc/net/tcp(内核连接表)。