🌐 第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(内核连接表)。