遵循 TCP/IP 四层模型,详细描述一台终端访问 www.taobao.com 的完整过程

遵循 TCP/IP 四层模型,详细描述一台终端访问 www.taobao.com 的完整过程。这是一个典型的 HTTP over TCP over IP over Ethernet 场景。


场景概述

终端:一台已接入局域网的电脑,IP为 192.168.1.100,MAC为 AA:BB:CC:11:22:33。

网关/路由器:IP为 192.168.1.1,MAC为 AA:BB:CC:44:55:66。

目标:访问 www.taobao.com,其服务器IP(假设)为 140.205.94.189。

链路:终端 → 家用路由器 → 运营商网络 → 互联网 → 淘宝CDN/服务器。


第一阶段:应用层 - 发起请求与域名解析

用户行为:用户在浏览器地址栏输入 http://www.taobao.com 并按下回车。

应用层协议(HTTP/DNS):

本地解析:浏览器首先检查本地缓存(如hosts文件、浏览器DNS缓存)是否有 www.taobao.com 的IP记录。若无,则调用操作系统API发起DNS查询。

DNS协议(应用层):

操作系统生成一个 DNS查询报文(内容:"请问 www.taobao.com 的A记录是什么?")。

该报文被封装成一个 DNS over UDP 的请求(默认使用UDP端口53)。

此时,数据单元是一个DNS查询/响应消息。


第二阶段:传输层 - 建立端到端通信

传输层协议(UDP for DNS):

操作系统为这个DNS查询分配一个随机的源端口(如 54321),目标端口为 53。

UDP头部被添加到DNS消息前,包含源/目标端口号和长度校验和。

此时,数据单元变成一个UDP数据报。


第三阶段:网络层 - 路由与逻辑寻址

网络层协议(IP):

操作系统查询本地路由表,决定这个目标(DNS服务器IP,如 8.8.8.8)的数据包应该发送给谁。对于非本地网络地址,下一跳都是默认网关 192.168.1.1。

生成 IP头部:

源IP: 192.168.1.100

目标IP: 8.8.8.8(DNS服务器)

协议字段: 17(表示载荷是UDP)

IP头部被添加到UDP数据报前。

此时,数据单元变成一个IP数据包。

ARP查询(若需要):

为了将IP数据包发送给网关 192.168.1.1,终端需要知道网关的MAC地址。

终端检查本地ARP缓存。若无记录,则在局域网内广播一个 ARP请求帧:"谁的IP是 192.168.1.1?请告诉 192.168.1.100"。

网关 192.168.1.1 收到后,回复一个 ARP应答帧,包含自己的MAC地址 AA:BB:CC:44:55:66。终端将其存入缓存。


第四阶段:网络接口层 - 物理帧封装与传输

网络接口层协议(以太网):

根据ARP结果,操作系统构造一个以太网帧:

目标MAC: AA:BB:CC:44:55:66(网关)

源MAC: AA:BB:CC:11:22:33(终端)

类型字段: 0x0800(表示载荷是IPv4)

将IP数据包封装为此帧的数据载荷,并附加帧尾校验序列(FCS)。

此时,数据单元变成一个以太网帧。

物理传输:

网卡将帧转换为电信号/光信号/无线电波,通过网线/空中发送到交换机,交换机根据MAC地址表将其转发到连接网关路由器的端口。


第五阶段:网络路径上的逐跳转发

网关及后续路由器处理:

网关(家用路由器)收到以太网帧,检查目标MAC是自己,于是解封装,取出IP数据包。

路由器检查IP包的目标IP 8.8.8.8,非本机,需要进行路由转发。

它根据自身的路由表,决定下一跳地址(运营商边缘路由器),并查询其MAC地址(通过ARP或在广域网链路上使用PPP/HDLC等协议)。

重新封装:丢弃旧的以太网头部,为IP数据包封装一个新的链路层头部(目标MAC变为下一跳路由器的MAC,源MAC变为自己的出接口MAC)。

这个过程在互联网的每一跳路由器上重复,直到数据包到达DNS服务器 8.8.8.8。IP头部中的源/目标IP在整个过程中保持不变(除非涉及NAT),但每跳的链路层封装都会改变。


第六阶段:返回响应与建立TCP连接

DNS响应:

DNS服务器 8.8.8.8 收到请求后,递归或迭代查询,最终获得 www.taobao.com 的IP地址 140.205.94.189。

它构建一个 DNS响应报文,按照原路(反向路径)返回给终端 192.168.1.100。这个过程同样经历网络层、链路层的封装与转发。

终端操作系统收到DNS响应后,将 www.taobao.com -> 140.205.94.189 的映射存入缓存,并将IP地址返回给浏览器。

传输层协议(TCP) - 三次握手:

浏览器获得目标IP后,要求操作系统建立一条TCP连接到 140.205.94.189:80。

第一次握手(SYN):

操作系统生成一个TCP段,设置 SYN=1,序列号 Seq=J,源端口随机(如 50000)。

该TCP段被封装进IP包(目标IP: 140.205.94.189),再封装进以太网帧,发送出去。

第二次握手(SYN+ACK):

淘宝服务器收到SYN包,同意连接,回复 SYN=1, ACK=1,确认号 Ack=J+1,并生成自己的序列号 Seq=K。

第三次握手(ACK):

终端收到SYN+ACK包,回复 ACK=1,确认号 Ack=K+1。

至此,TCP连接建立成功。这是一个可靠的、面向字节流的通道。


第七阶段:应用层HTTP通信与网页渲染

应用层协议(HTTP) - 请求网页:

通过已建立的TCP连接,浏览器构造一个 HTTP GET 请求报文:

text

GET / HTTP/1.1

Host: www.taobao.com

Connection: keep-alive

User-Agent: Mozilla/5.0...

(其他头部信息)

该HTTP报文作为TCP的载荷,被可靠地传输到服务器。

服务器响应:

淘宝的Web服务器(或负载均衡器/CDN节点)收到请求,处理并生成 HTTP响应报文:

状态行: HTTP/1.1 200 OK

头部: Content-Type: text/html; charset=utf-8, Content-Length: ...

实体主体:网页的HTML代码。

这个HTTP响应同样通过TCP连接分片(如果很大)传回终端。

浏览器渲染:

浏览器收到HTTP响应后,解析HTML,开始渲染。

在解析过程中,发现HTML中引用了大量其他资源(CSS、JS、图片等),这些资源的URL可能指向不同的CDN域名。

重复上述整个过程:为每个新域名发起DNS查询(可能并行),建立新的TCP连接(HTTP/1.1可能复用),发送HTTP请求,获取资源,最终完成整个页面的加载和渲染。


第八阶段:连接终止

传输层协议(TCP) - 四次挥手:

当页面加载完成且一段时间无活动后,TCP连接会优雅关闭。

第一次挥手:浏览器端发送 FIN 段。

第二次挥手:服务器回复 ACK 段。

第三次挥手:服务器发送自己的 FIN 段。

第四次挥手:浏览器回复最后的 ACK 段,连接完全关闭

相关推荐
谢怜822 小时前
计算机网络第二章物理层
网络·计算机网络
凛_Lin~~3 小时前
安卓网络框架——OkHttp源码解析(基于3.14.x)
android·网络·okhttp
乾元3 小时前
智能化侦察:利用 LLM 进行自动化资产暴露面识别与关联
运维·网络·人工智能·网络协议·安全·自动化
普马萨特3 小时前
手机共享位置的技术原理解析
网络
xency3 小时前
前四天整理
网络
大榕树信息科技3 小时前
如何利用动力环境监控系统提升机房管理智能化?
网络·物联网·机房运维·机房管理系统·动环监控系统
Bruce_Liuxiaowei4 小时前
基于Regsvr32.exe的渗透测试完整记录
网络·windows·安全·网络安全·内网渗透
姓蔡小朋友4 小时前
OSI分层模型
网络