当前位置: 首页 > news >正文

【计算机网络核心】TCP/IP模型与网页解析全流程详解

文章目录

    • 引言
    • 一、TCP/IP模型:互联网的“传输规则体系”
      • 1.1 TCP/IP四层模型整体对比
      • 1.2 各层核心协议与技术解析
        • 1.2.1 应用层:“用户与网络的交互入口”
        • 1.2.2 传输层:“端到端的传输管家”
        • 1.2.3 网络层:“跨网络的路由导航”
        • 1.2.4 网络接口层:“物理介质的传输载体”
    • 二、网页解析过程:从URL到页面显示的“全链路拆解”
      • 2.1 网页解析全流程步骤拆解
        • 步骤1:URL解析(应用层预处理)
        • 步骤2:DNS域名解析(应用层+传输层)
        • 步骤3:建立TCP连接(传输层+网络层+网络接口层)
        • 步骤4:发送HTTP/HTTPS请求(应用层+传输层)
        • 步骤5:服务器处理请求并返回响应(应用层+传输层)
        • 步骤6:关闭TCP连接(可选,传输层)
        • 步骤7:网页解析与渲染(浏览器本地处理)
    • 三、TCP/IP模型与网页解析的协同关系
    • 四、总结

引言

若对您有帮助的话,请点赞收藏加关注哦,您的关注是我持续创作的动力!有问题请私信或联系邮箱:funian.gm@gmail.com

计算机网络是实现设备互联与数据传输的基础,而TCP/IP模型是当前互联网的核心架构标准,定义了数据从源设备到目标设备的传输规则;网页解析过程则是用户访问网页时,从输入URL到页面显示的完整技术链条。本文将先深入剖析TCP/IP模型的分层结构、核心协议与功能,再分步拆解网页解析的技术细节,结合表格对比关键概念,帮助开发者夯实网络底层基础,理解网页加载的本质逻辑。

在这里插入图片描述

一、TCP/IP模型:互联网的“传输规则体系”

TCP/IP模型是一个四层架构(部分教材将网络接口层拆分为数据链路层和物理层,形成五层模型,本文以通用四层模型讲解),每层各司其职,通过“封装-解封装”机制实现数据传输。其核心特点是“自上而下分层、自下而上交互”,每层仅与相邻层通信。

1.1 TCP/IP四层模型整体对比

分层(自上而下)核心功能主要协议数据单元(PDU)关键设备
应用层(Application)为应用程序提供网络服务(如网页访问、文件传输)HTTP、HTTPS、DNS、FTP、SMTP、SSH数据(Data)终端设备(PC、手机)
传输层(Transport)实现端到端(进程间)的可靠/不可靠传输,负责流量控制与拥塞控制TCP、UDP、SCTP段(Segment,TCP)/数据报(Datagram,UDP)终端设备
网络层(Internet)实现跨网络的路由选择(从源主机到目标主机),负责IP地址寻址IP(IPv4/IPv6)、ICMP、ARP、路由协议(RIP、OSPF)数据包(Packet)路由器、三层交换机
网络接口层(Link)实现物理介质上的帧传输(相邻设备间),负责MAC地址寻址Ethernet(以太网)、PPP、Wi-Fi(802.11)帧(Frame)交换机、网卡、集线器

关键概念:封装与解封装

  • 发送端:应用层数据 → 传输层(加TCP/UDP头部)→ 网络层(加IP头部)→ 网络接口层(加帧头部/尾部)→ 物理介质传输;
  • 接收端:物理信号 → 网络接口层(解帧头)→ 网络层(解IP头)→ 传输层(解TCP/UDP头)→ 应用层(获取原始数据)。

1.2 各层核心协议与技术解析

1.2.1 应用层:“用户与网络的交互入口”

应用层是用户直接感知的层级,通过协议定义应用程序的网络交互规则,核心协议对比:

协议核心作用端口号(知名端口)特点典型应用场景
HTTP(超文本传输协议)传输HTML、CSS、JS等网页资源,无加密80无状态、明文传输、基于请求-响应普通网页访问(如http://xxx.com)
HTTPS(HTTP Secure)基于TLS/SSL加密的HTTP,保障数据安全443加密传输、身份认证、防篡改敏感数据传输(如登录、支付页面)
DNS(域名系统)将域名(如www.baidu.com)解析为IP地址53(UDP/TCP)分布式架构、缓存机制所有基于域名的网络访问(先解析域名)
FTP(文件传输协议)实现文件的上传与下载20(数据连接)、21(控制连接)双连接模式、明文传输服务器文件管理(如上传网站代码)
SMTP(简单邮件传输协议)发送电子邮件25基于文本指令、依赖POP3/IMAP接收邮件客户端发送邮件(如Outlook)

DNS解析流程(核心子流程)

  1. 本地缓存查询:先查本地DNS缓存(如操作系统缓存、浏览器缓存),命中则直接返回IP;
  2. 递归查询本地DNS服务器:本地缓存未命中,向配置的本地DNS服务器(如运营商DNS)发送递归请求;
  3. 迭代查询根DNS/顶级域DNS/权威DNS:本地DNS服务器通过迭代查询(根DNS→顶级域DNS→权威DNS)获取目标域名的IP;
  4. 结果返回与缓存:权威DNS将IP返回给本地DNS服务器,本地DNS缓存结果后返回给用户设备。
1.2.2 传输层:“端到端的传输管家”

传输层负责“进程间通信”(如浏览器进程与服务器的Web进程),核心协议是TCP和UDP,二者对比是网络学习的重点:

对比维度TCP(传输控制协议)UDP(用户数据报协议)
连接性面向连接(需三次握手建立连接)无连接(直接发送数据,无需建立连接)
可靠性可靠传输(确认应答、重传机制、序号机制)不可靠(无确认、无重传,可能丢包)
有序性保证数据按发送顺序到达(序号+确认号)无序(数据报独立传输,可能乱序)
流量控制支持(滑动窗口机制,避免接收方过载)不支持(发送方无限制发送)
拥塞控制支持(慢启动、拥塞避免等,避免网络过载)不支持(可能导致网络拥塞)
数据边界无(字节流,需应用层自行划分边界)有(数据报独立,接收方按报处理)
开销高(头部20~60字节,含多种控制字段)低(头部仅8字节,结构简单)
适用场景对可靠性要求高的场景(网页、文件传输、登录)对实时性要求高的场景(视频通话、直播、DNS)

TCP核心机制补充

  • 三次握手(建立连接):

    1. 客户端→服务器:SYN(同步序号),请求建立连接;
    2. 服务器→客户端:SYN+ACK(同步序号+确认序号),确认请求并同步自身序号;
    3. 客户端→服务器:ACK(确认序号),确认连接建立;
      目的:避免“失效的连接请求”导致服务器资源浪费。
  • 四次挥手(释放连接):

    1. 客户端→服务器:FIN(结束标志),请求释放连接;
    2. 服务器→客户端:ACK,确认客户端的FIN请求;
    3. 服务器→客户端:FIN,服务器数据发送完毕,请求释放连接;
    4. 客户端→服务器:ACK,确认服务器的FIN请求,连接释放;
      目的:确保双方数据都已发送完毕,避免数据丢失。
1.2.3 网络层:“跨网络的路由导航”

网络层负责“主机间通信”(从源主机到目标主机),核心是IP协议,关键技术包括IP寻址、路由选择、地址解析:

核心技术核心原理关键协议/组件作用
IP寻址通过IP地址(如IPv4:192.168.1.1)唯一标识主机IPv4、IPv6确定数据的目标主机位置,实现跨网络定位
路由选择路由器根据路由表(静态/动态生成)选择最优路径路由协议(RIP、OSPF、BGP)解决“数据如何从源网络到达目标网络”的问题
地址解析将IP地址转换为物理地址(MAC地址)ARP(地址解析协议)网络接口层需通过MAC地址传输帧,ARP实现IP与MAC的映射
差错控制检测IP数据包的传输错误(如丢包、损坏)ICMP(互联网控制消息协议)发送差错报告(如“目标不可达”)、网络探测(如ping命令)

IPv4与IPv6对比

对比维度IPv4IPv6
地址长度32位(如192.168.1.1,点分十进制)128位(如2001:0db8:85a3::8a2e:0370:7334,冒分十六进制)
地址数量约43亿个(已耗尽)约3.4×10³⁸个(满足未来需求)
报头结构复杂(选项字段多,可变长)简化(固定40字节报头,无选项字段)
安全性无原生加密(需依赖HTTPS等上层协议)原生支持IPsec加密与身份认证
部署现状目前主流(互联网大部分设备使用)逐步推广(应对IPv4地址耗尽问题)
1.2.4 网络接口层:“物理介质的传输载体”

网络接口层是TCP/IP模型的最底层,负责将网络层的IP数据包封装为“帧”,通过物理介质(如网线、无线信号)传输给相邻设备,核心概念:

核心概念定义作用示例
MAC地址物理地址(48位,如00:1B:44:11:3A:B7),唯一标识网卡相邻设备间帧传输的“身份证”交换机通过MAC地址转发帧
帧结构包含帧头(目的MAC、源MAC、类型)、数据(IP数据包)、帧尾(校验和)规范物理层的传输格式,确保数据完整性以太网帧(Ethernet Frame)
介质访问控制解决多设备共享物理介质的冲突问题避免数据传输冲突以太网的CSMA/CD(有线)、Wi-Fi的CSMA/CA(无线)
物理层功能将帧转换为电信号/光信号/无线信号,通过物理介质传输实现数据的物理层传输网线传输电信号、光纤传输光信号

二、网页解析过程:从URL到页面显示的“全链路拆解”

当用户在浏览器中输入URL(如https://www.baidu.com)并按下回车后,需经历7个核心步骤,最终完成网页显示。整个过程涉及TCP/IP模型的全四层协作,是网络协议的典型应用场景。

2.1 网页解析全流程步骤拆解

步骤1:URL解析(应用层预处理)
  • 核心任务:将用户输入的URL转换为浏览器可识别的“协议+域名+路径+参数”结构,验证URL合法性。
  • 解析规则
    示例URL:https://www.baidu.com/s?wd=TCP/IP#top
    • 协议:https(应用层协议,指定使用HTTPS传输);
    • 域名:www.baidu.com(需解析为IP地址);
    • 路径:/s(服务器上的资源路径);
    • 参数:wd=TCP/IP(查询参数,告诉服务器需搜索“TCP/IP”);
    • 锚点:#top(页面内锚点,不发送给服务器,仅浏览器本地定位)。
  • 额外处理:若URL无协议(如www.baidu.com),浏览器默认补充http://;若为中文域名,先转换为Punycode编码(如“百度.com”→“xn–百度-9et.com”)。
步骤2:DNS域名解析(应用层+传输层)
  • 核心任务:将URL中的域名(www.baidu.com)解析为对应的IP地址(如180.101.50.188),为后续网络层路由做准备。
  • 详细流程(延续1.2.1中DNS解析逻辑,补充浏览器视角):
    1. 浏览器缓存查询:检查浏览器内置DNS缓存(如Chrome可通过chrome://net-internals/#dns查看),若缓存未过期则直接使用;
    2. 操作系统缓存查询:浏览器缓存未命中,调用操作系统API查询系统 hosts文件(如Windows的C:\Windows\System32\drivers\etc\hosts)和系统DNS缓存;
    3. 本地DNS服务器查询:系统缓存未命中,向本地DNS服务器(如运营商分配的114.114.114.114)发送递归请求;
    4. 迭代查询根/顶级域/权威DNS:本地DNS服务器通过迭代查询(根DNS→.com顶级域DNS→baidu.com权威DNS)获取IP;
    5. 结果返回与缓存:权威DNS将IP返回给本地DNS服务器,本地DNS缓存该IP(默认缓存时间由TTL决定),再返回给浏览器,浏览器也缓存该IP。
步骤3:建立TCP连接(传输层+网络层+网络接口层)
  • 核心任务:浏览器(客户端)与目标服务器(如百度Web服务器)通过TCP三次握手建立可靠连接,为HTTP请求传输做准备。
  • 前提条件:浏览器已获取服务器IP地址(如180.101.50.188)和端口号(HTTPS默认443)。
  • 三次握手详细过程(结合分层协作):
    1. 客户端(浏览器)→ 服务器:发送SYN报文(传输层),包含客户端初始序号(如seq=100),该报文经网络层封装IP头(源IP=客户端IP,目的IP=服务器IP)、网络接口层封装帧头(源MAC=客户端网卡MAC,目的MAC=网关MAC)后,通过物理介质传输;
    2. 服务器→客户端:接收SYN报文后,返回SYN+ACK报文(传输层),包含服务器初始序号(如seq=200)和对客户端SYN的确认号(ack=101),同样经分层封装后传输;
    3. 客户端→服务器:接收SYN+ACK报文后,返回ACK报文(传输层),包含对服务器SYN的确认号(ack=201),服务器接收后,TCP连接建立。
  • 特殊场景:若为HTTPS,TCP连接建立后需额外进行TLS/SSL握手(协商加密算法、交换密钥、身份认证),建立加密通道。
步骤4:发送HTTP/HTTPS请求(应用层+传输层)
  • 核心任务:浏览器通过已建立的TCP(HTTPS为加密TCP)连接,向服务器发送HTTP请求报文,请求网页资源(如HTML文件)。
  • HTTP请求报文结构(以GET请求为例):
    GET /s?wd=TCP/IP HTTP/1.1  # 请求行:方法(GET)+ 路径+参数 + 协议版本(HTTP/1.1)
    Host: www.baidu.com        # 请求头:Host(目标域名)、User-Agent(浏览器信息)、Cookie等
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/118.0.0.0# 请求体:GET请求无请求体(POST请求用于传输表单数据等)
    
  • 请求方法说明
    • GET:获取资源(如请求HTML、图片,参数在URL中,长度有限制);
    • POST:提交资源(如登录表单、文件上传,参数在请求体中,更安全);
    • HEAD:仅获取响应头(不返回响应体,用于检查资源是否存在);
    • PUT:更新资源(全量更新,如替换文件);
    • DELETE:删除资源。
步骤5:服务器处理请求并返回响应(应用层+传输层)
  • 核心任务:服务器接收HTTP请求,处理后返回HTTP响应报文,包含请求的网页资源(如HTML、CSS、JS)。
  • 服务器处理流程
    1. 服务器监听端口(如443),接收客户端的TCP连接和HTTP请求;
    2. Web服务器(如Nginx、Apache)解析请求报文,确定请求的资源路径(如/s?wd=TCP/IP);
    3. 若需动态内容(如搜索结果),Web服务器调用应用服务器(如Tomcat、Node.js),应用服务器查询数据库(如MySQL)获取数据,生成动态HTML;
    4. Web服务器将资源(静态HTML或动态生成的HTML)封装为HTTP响应报文,通过TCP连接返回给浏览器。
  • HTTP响应报文结构(以成功响应为例):
    HTTP/1.1 200 OK  # 状态行:协议版本 + 状态码(200=成功) + 状态描述
    Date: Mon, 27 Oct 2025 10:00:00 GMT  # 响应头:Date(响应时间)、Content-Type(资源类型)、Content-Length(资源长度)等
    Content-Type: text/html; charset=utf-8
    Content-Length: 10240
    Server: BWS/1.1<!DOCTYPE html>  # 响应体:请求的资源(如HTML代码)
    <html><head><title>TCP/IP搜索结果 - 百度</title></head><body>...</body>
    </html>
    
  • 常见HTTP状态码
    • 2xx(成功):200 OK(请求成功)、204 No Content(请求成功但无响应体);
    • 3xx(重定向):301 Moved Permanently(永久重定向)、302 Found(临时重定向)、304 Not Modified(资源未修改,使用缓存);
    • 4xx(客户端错误):400 Bad Request(请求参数错误)、401 Unauthorized(未授权)、403 Forbidden(禁止访问)、404 Not Found(资源不存在);
    • 5xx(服务器错误):500 Internal Server Error(服务器内部错误)、502 Bad Gateway(网关错误)、503 Service Unavailable(服务器过载)。
步骤6:关闭TCP连接(可选,传输层)
  • 核心任务:若HTTP请求为“短连接”(Connection: close),则响应传输完成后通过TCP四次挥手关闭连接;若为“长连接”(Connection: keep-alive,HTTP/1.1默认),则连接保持一段时间,供后续请求复用(减少连接建立开销)。
  • 四次挥手详细过程
    1. 客户端→服务器:发送FIN报文(seq=300),请求关闭连接;
    2. 服务器→客户端:返回ACK报文(ack=301),确认客户端的FIN请求(此时服务器仍可发送数据);
    3. 服务器→客户端:所有数据发送完毕后,发送FIN报文(seq=400),请求关闭连接;
    4. 客户端→服务器:返回ACK报文(ack=401),确认服务器的FIN请求,等待2MSL(最长报文段寿命)后关闭连接(确保服务器接收ACK)。
步骤7:网页解析与渲染(浏览器本地处理)
  • 核心任务:浏览器接收服务器返回的HTML、CSS、JS等资源,解析并渲染为用户可见的网页,是“从代码到页面”的关键环节。

  • 详细流程(分4个子阶段):

    1. HTML解析:构建DOM树

      • 浏览器按“从上到下”顺序解析HTML代码,将每个标签(如<html><div><p>)转换为DOM节点(包含标签名、属性、文本内容、父子关系);
      • 若解析过程中遇到CSS链接(<link rel="stylesheet" href="style.css">)或JS脚本(<script src="app.js"></script>),则触发额外资源请求(重复步骤2-6获取CSS/JS);
      • 最终生成DOM树(Document Object Model),描述网页的结构(如“html→body→div→p”)。
    2. CSS解析:构建CSSOM树

      • 浏览器解析CSS代码(包括内联CSS、嵌入式CSS、外部CSS),将每个CSS规则(如“div { color: red; font-size: 16px; }”)转换为CSSOM节点(包含选择器、样式属性);
      • CSSOM树描述“每个DOM节点应应用的样式”,且支持样式继承(如子节点继承父节点的字体样式);
      • 最终生成CSSOM树(CSS Object Model)。
    3. 构建渲染树(Render Tree)

      • 浏览器将DOM树与CSSOM树合并,生成渲染树;
      • 渲染树仅包含“可见节点”(如<script><style>标签、display: none的节点会被排除),每个节点包含DOM结构和对应的CSS样式;
      • 示例:DOM树中的<p class="title">节点,结合CSSOM中.title { color: blue; }规则,形成渲染树中的“蓝色标题段落节点”。
    4. 布局(Layout)与绘制(Painting)

      • 布局(重排/Reflow):根据渲染树计算每个节点的“位置和大小”(如左上角坐标、宽度、高度),确定节点在页面中的具体位置;
      • 绘制(重绘/Repaint):根据布局结果,将每个节点的样式(颜色、背景、边框)绘制到浏览器的像素缓冲区;
      • 合成(Composite):若页面包含分层元素(如position: absolutetransform),浏览器将各层合成后显示在屏幕上,优化渲染性能(避免全页重绘)。
  • 关键优化点

    • JS脚本阻塞问题:<script>标签默认阻塞HTML解析和渲染,可通过defer(延迟执行,不阻塞解析)或async(异步执行,阻塞解析但不阻塞渲染)优化;
    • CSS阻塞问题:CSS解析会阻塞渲染树构建,但不阻塞HTML解析,可通过“拆分关键CSS”(将首屏样式内联)优化首屏加载速度;
    • 重排与重绘优化:避免频繁修改DOM样式(如集中修改样式、使用transform替代width/height),减少重排重绘次数。

三、TCP/IP模型与网页解析的协同关系

网页解析过程是TCP/IP模型四层协作的“典型案例”,各步骤与TCP/IP分层的对应关系如下:

网页解析步骤依赖的TCP/IP分层核心协议/技术
URL解析应用层无(浏览器本地处理)
DNS域名解析应用层(DNS)+ 传输层(UDP/TCP)DNS、UDP(53端口)
建立TCP连接传输层(TCP)+ 网络层(IP)+ 网络接口层TCP(三次握手)、IP、ARP、Ethernet
发送HTTP/HTTPS请求应用层(HTTP/HTTPS)+ 传输层(TCP)HTTP/HTTPS、TCP(可靠传输)
服务器返回响应应用层(HTTP/HTTPS)+ 传输层(TCP)HTTP/HTTPS、TCP(可靠传输)
关闭TCP连接传输层(TCP)TCP(四次挥手)
网页解析与渲染无(浏览器本地处理)DOM、CSSOM、渲染树

四、总结

TCP/IP模型是互联网的“骨架”,通过四层架构(应用层、传输层、网络层、网络接口层)定义了数据传输的标准化流程,核心协议(如TCP、IP、HTTP、DNS)确保了传输的可靠性、可寻址性与可用性;网页解析过程则是TCP/IP模型的“实战应用”,从URL解析到页面渲染,每一步都依赖分层协议的协同工作。

http://www.dtcms.com/a/536183.html

相关文章:

  • HTML 理论系统笔记2
  • 微软Copilot被用于窃取OAuth令牌,AI Agent成为攻击者帮凶
  • 免费网站建站w海口企业自助建站
  • 全球 PyTorch 大会与 Triton 大会释放强信号:算子语言繁荣和分化背后,编译器核心地位日益凸显
  • PyCharm 快速运行 django project
  • 自己动手制作网站外呼电销系统
  • 网站建设出错1004有专门下载地图做方案的网站吗
  • OpenCV C++ 中,访问图像像素三种常用方法
  • MATLAB基于小波云模型时间序列预测,以年径流预测为例
  • 项目名称:烟酒进销存管理系统
  • web开发,在线%蛋糕销售%管理系统,基于asp.net,webform,c#,sql server
  • UE5 蓝图-25:主 mainUI界面蓝图,右侧的颜色按钮的实现,换色逻辑与材质参数集,
  • 腾讯优图开源Youtu-Embedding通用文本表示模型,用处在哪?
  • parser_error UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes
  • 慕课网站开发wordpress 当前页面登录密码
  • 从零学习 Agentic RL(四)—— 超越 ReAct 的线性束缚:深入解析 Tree-of-Thoughts (ToT)
  • 宁德城乡建设网站首页无法删除wordpress
  • Spring Boot3零基础教程,天气 API 测试,笔记73
  • 基于 STM32 的智能语音唤醒与关键词识别系统设计 —— 从硬件集成到算法实现
  • Redis数据库基础命令
  • 1.3 StorageTransient的gas计算
  • 物联网技术与基础第六节上课笔记
  • SAP SD系统开票查询报表分享
  • it网站设计培训制作网站的工具
  • 南京网站建设工作室电商卖什么产品有前景
  • iOS 开发推送功能全流程详解 从 APNs 配置到上架发布的完整实践(含跨平台上传方案)
  • 李宏毅机器学习笔记33
  • 深入理解Bitbucket Pipelines:强大的CICD开源解决方案
  • Android 14 系统启动流程深度解析:rc文件的语法、解析及常见语法详解
  • 商城网站的seo优化改怎么做软件公司 网站建设费分录