一、常见网络协议先建立整体印象¶
原始笔记把这一部分的重点放在三个高频协议上:
DNS:把域名解析成 IP 地址。ARP:把 IP 地址解析成 MAC 地址。ICMP:网络控制与连通性检查,ping背后就是它。
可以先看一个总表:
| 协议 | 中文名称 | 核心作用 |
|---|---|---|
| DNS | 域名解析服务 | 域名 -> IP |
| ARP | 地址解析协议 | IP -> MAC |
| ICMP | 因特网控制报文协议 | 连通性检查、错误反馈 |
| DHCP | 动态主机配置协议 | 自动分配 IP |
| HTTP/HTTPS | 超文本传输协议 | 网站访问 |
二、DNS:为什么输入域名就能访问网站¶
2.1 DNS 的核心作用¶
DNS 本质上就是一套“翻译系统”,把人更容易记住的域名转换成机器更容易识别的 IP 地址。
例如:
baidu.comjd.comtaobao.com
这些域名最终都要先被解析成 IP,浏览器才知道该连接哪台服务器。
2.2 DNS 解析的大致流程¶
一次域名访问通常会经过下面几个环节:
1、先查本地缓存。 2、本地没有命中时,向配置的 DNS 服务器发起查询。 3、DNS 服务器继续递归或迭代查询。 4、返回最终 IP 地址。 5、客户端拿到 IP 后,继续后续 TCP 连接。
2.3 常见 DNS 命令¶
2.3.1 Windows¶
ipconfig /displaydns
ipconfig /flushdns
nslookup example.com
nslookup -type=MX example.com
2.3.2 Linux¶
dig example.com
dig +trace example.com
dig example.com MX
dig -x 8.8.8.8
2.4 遇到 DNS 故障时怎么判断¶
一个非常典型的现象是:
- 通过域名访问失败
- 直接
ping公网 IP 却是通的
这时往往不是“网络彻底断了”,而是 DNS 配置有问题。可以优先检查:
- 网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0 - DNS 配置文件
/etc/resolv.conf
例如可以临时添加:
nameserver 223.5.5.5
修改网卡配置后,一般还需要重启网络:
systemctl restart network
三、ARP:局域网里怎么把 IP 变成 MAC¶
DNS 解决的是“域名到 IP”的问题,而 ARP 解决的是“IP 到 MAC”的问题。
3.1 ARP 的基本过程¶
假设 10.0.0.200 想访问 10.0.0.2:
1、主机先广播询问:谁知道 10.0.0.2 的 MAC 地址?
2、目标主机收到后单播回复自己的 MAC。
3、发起方把结果缓存起来,后续就能直接通信。
这也是为什么 ARP 在局域网通信中非常重要。
3.2 常用 ARP 命令¶
arp -n
arp -d 10.0.0.201
ping 10.0.0.201
一套常见练习方式是:
1、先查看 ARP 缓存。
2、删除目标主机缓存。
3、再 ping 一次。
4、用 Wireshark 过滤 arp 观察广播和回复过程。
四、ICMP:为什么 ping 能检查网络¶
ping 使用的就是 ICMP 协议。它最常见的作用有两个:
- 测试连通性
- 观察时延和丢包
抓包时可以直接过滤:
icmp
如果 ping 不通,不一定等于目标服务故障,还可能是:
- 中间链路不通
- 防火墙禁用了 ICMP
- 对端主机未启动
五、Linux 网卡配置怎么改¶
5.1 常见网卡命名¶
原始笔记里提到常见命名有:
ens33eth0
很多运维场景里仍然喜欢使用 eth0 这种更直观的命名。
5.2 把网卡名改成 eth0 的思路¶
5.2.1 安装系统时指定¶
在安装 CentOS 7 时,可以在启动参数后追加:
net.ifnames=0 biosdevname=0
5.2.2 安装完成后修改¶
也可以修改 /boot/grub2/grub.cfg 中 linux16 相关行,追加同样的参数,再重启系统。
5.3 网卡配置文件示例¶
网卡配置文件通常位于:
/etc/sysconfig/network-scripts/ifcfg-eth0
一个常见示例如下:
TYPE="Ethernet"
BOOTPROTO="none"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
IPADDR="192.168.1.20"
PREFIX="24"
GATEWAY="192.168.1.1"
DNS1="223.5.5.5"
DNS2="223.6.6.6"
5.3.1 重点字段说明¶
BOOTPROTO="none":使用静态 IP,而不是 DHCP。ONBOOT="yes":开机自动启用网卡。IPADDR:主机地址。PREFIX:前缀长度,例如24。GATEWAY:默认网关。DNS1、DNS2:首选和备用 DNS。
5.4 常见公共 DNS¶
223.5.5.5
223.6.6.6
114.114.114.114
114.114.115.115
8.8.8.8
8.8.4.4
选择 DNS 时,一般优先使用运营商或当前网络环境推荐的地址,实在没有再使用公共 DNS。
六、用户访问网站的全过程¶
原始笔记把“访问 www.baidu.com 整个过程”总结得很清晰,核心就是四步:
1、DNS:把域名解析成 IP。
2、TCP 三次握手:和目标 IP + 端口建立连接。
3、请求与响应:浏览器发请求,服务器回响应。
4、TCP 四次挥手:访问完成后关闭连接。
如果把它再展开一点,可以理解成下面这条链路:
输入域名 -> 本地 DNS 查询 -> 获取目标 IP -> 发起 TCP 连接 -> 浏览器发送 HTTP 请求 -> 服务器返回页面内容 -> 浏览器渲染页面 -> 连接关闭
这也是为什么 DNS、TCP、HTTP 看似分散,实际上在一次真实访问中是连起来工作的。
七、局域网上网原理与虚拟机上网原理¶
7.1 局域网上网的基本思路¶
一台内网主机要访问外网,大致会经过:
- 主机先判断目标是否在本地网段。
- 如果不在本地网段,就把流量交给默认网关。
- 网关或路由器再负责把流量转发到公网。
这也是为什么默认网关配置错误时,经常会出现“同网段可通,外网不通”的问题。
原始流程图参考:
https://www.processon.com/view/link/624666e207912907096e7c0f
7.2 虚拟机上网怎么理解¶
虚拟机上网本质上也是借助虚拟交换机、虚拟网卡和宿主机网络来完成通信。常见理解方式有:
- 桥接:虚拟机像局域网里的独立主机一样直接上网。
- NAT:虚拟机通过宿主机做地址转换后上网。
原始流程图参考:
https://www.processon.com/view/link/6041a56af346fb55c9b1b1fd
八、小结¶
想真正看懂一次网络访问,建议按下面顺序理解:
1、先用 DNS 找到 IP。 2、再用 ARP 在局域网里找到 MAC。 3、然后通过 TCP 建立连接。 4、最后在应用层完成 HTTP 请求和响应。
当这条链路串起来之后,很多“能 ping 不能打开网页”“域名不通但 IP 可通”“改完网卡配置无法上网”之类的问题,就能更快定位了。