13. 完整实例:浏览器访问百度全过程
场景:客户端浏览器输入 http://www.baidu.com,完整走一遍各层协议通信流程
整体流程分步解析
1)应用层:DNS域名解析 + HTTP请求生成
浏览器无法直接通过域名通信,首先发起DNS解析:
- 查询本地缓存、hosts文件,无记录则向DNS服务器请求解析
www.baidu.com; - DNS服务器返回百度服务器公网IP(示例:
220.181.27.48); - 浏览器基于该IP,构造HTTP网页请求报文,准备向下交付传输层。
2)传输层:TCP封装、端口标识
HTTP基于TCP协议传输,传输层处理逻辑:
- 客户端随机分配临时源端口(如5000),目标端口固定80(HTTP默认端口);
- 对HTTP报文分段封装TCP头部(携带序列号、确认号、SYN/ACK等标志位);
- 与目标IP的80端口通过三次握手建立可靠TCP连接,封装完成后下发网络层。
3)网络层:IP寻址、路由转发
网络层只处理IP数据包,不关心上层TCP/HTTP内容:
- 给TCP分段添加IP头部,填入源IP、目的IP(百度服务器IP);
- 查询本机路由表,匹配下一跳网关;
- 数据包转发至网关/路由器,沿途各路由器不断查询路由表,跨网段逐级转发,直至抵达服务器所在网段。
4)数据链路层+物理层:ARP解析MAC、帧传输
数据包到达本地网关前,链路层完成二层封装:
- 需要目标设备MAC地址才能封装数据帧,发起ARP广播,根据IP查询对应MAC;
- 获取网关MAC后,封装以太网帧(源MAC、目标MAC、IP数据包);
- 物理层将二进制比特流通过网线/光纤发出,经过多层路由转发,最终送达百度服务器;
- 服务器端从底层到应用层逐层解封装,处理HTTP请求并返回网页数据,原路返回给客户端浏览器。

