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

PHP学习(第三天)

网站访问流程

一、静态网站访问流程(如 index.html

请添加图片描述

1. 流程是怎么样的?

静态网站的页面内容固定,不需要服务器做额外计算,直接把文件返回给浏览器。访问流程大致如下:

  1. 用户输入网址或点击链接

    用户在 个人设备(PC/手机) 的浏览器中输入 URL(Uniform Resource Locator,统一资源定位符)。
    浏览器会 向 DNS 服务器 查询对应域名的 IP 地址,找到目标服务器。

    例如访问:

    http://localhost:8080/index.html
    

    对应的 IP 是 127.0.0.1(本机地址)。

  2. 浏览器发送 HTTP 请求

    • 浏览器向该 IP + 端口发起 TCP 连接(比如 8080)。

    • 通过这个连接,浏览器发送 HTTP 请求,例如:

      GET /index.html HTTP/1.1
      Host: localhost:8080
      
  3. 服务器响应请求

    • Web 服务器(Apache、Nginx 等)接收 TCP 连接,并处理 HTTP 请求。
    • 服务器找到对应的 index.html 文件(例如通过 Apache 或 Nginx 挂载部署在指定目录下)。
    • 找到文件后,服务器 直接返回文件内容给浏览器
  4. 浏览器渲染页面

    • 浏览器解析 HTML、CSS、JS 并显示页面。
    • 页面中如果有图片、字体或其他资源,会继续发请求加载。

特点:服务器只是“送文件”,不需要额外计算。
这里的“计算”指的是:运行程序、处理逻辑或生成动态内容(比如 PHP、Node.js 等动态网站才会做这些)。

2.TCP 和 HTTP 是什么?

  • TCP(传输层)
    • 全称:Transmission Control Protocol —— 传输控制协议
    • 作用:保证数据能从浏览器传到服务器、再从服务器返回浏览器。
    • 类比:TCP 就像邮差,负责送信。
    • 浏览器先通过 TCP 建立连接(握手),确认可以安全传输数据。
  • HTTP(应用层)
    • 全称:HyperText Transfer Protocol —— 超文本传输协议
    • 作用:定义具体要做什么,比如“我要哪个网页”。
    • 类比:信里的内容,例如“GET /index.html HTTP/1.1”。
    • HTTP 的请求和响应是通过 TCP 这个“邮差”发送的。

3.DNS如何在因特网中找到对应的域名的ip?

3.1 DNS 查询流程(分层查找)
  1. 本地 DNS 缓存
    • 先在操作系统或浏览器缓存里找有没有对应的 IP。
    • 如果有,就直接返回,不用向外部查询。
  2. 向本地/ISP DNS 服务器查询
    • 如果本地没有,电脑会向配置好的 DNS 服务器(通常是 ISP 提供的)发请求。
  3. 逐级查找域名(递归/迭代)
    如果 ISP DNS 也没有缓存,会向上查询:
    1. 根 DNS 服务器(Root):负责顶级域(比如 .com.org.cn)信息
    2. 顶级域(TLD)DNS 服务器:负责二级域名解析
    3. 权威 DNS(Authoritative DNS)服务器:最终返回域名对应的 IP
  4. 返回结果给本地 DNS,再到电脑
    • ISP DNS 缓存查询结果,下次再查同样域名就直接返回
    • 浏览器拿到 IP,就可以建立 TCP 连接访问网站了

二、动态网站访问流程(如 index.php

动态网站需要服务器先执行程序(如 PHP)生成页面,再返回给浏览器。流程如下:

  1. 浏览器发起请求

    • 浏览器访问 http://example.com/index.php
    • 先通过 DNS 查到服务器 IP
    • 再通过 TCP 建立连接到服务器端口(如 80/443)

    Web 服务器接收请求

    • Apache 或 Nginx 收到请求后,检查请求的是 PHP 文件
    • 不是直接返回 HTML,而是交给 PHP 解析器(如 PHP-FPM)处理

    PHP 生成 HTML

    • PHP 脚本运行:处理业务逻辑、查询数据库、生成动态内容
    • 输出最终 HTML

    Web 服务器发送响应

    • PHP 生成的 HTML 返回给 Web 服务器
    • Web 服务器再通过 TCP 连接,按照 HTTP 协议把响应发送给浏览器

    浏览器渲染页面

    • 浏览器收到 HTML,解析、渲染,加载 CSS/JS/图片,显示页面

特点:

  • 页面内容可以动态生成(例如显示不同用户信息、数据库内容)。
  • 每次访问可能生成不同的 HTML。

核心理解:

  • Web 服务器负责监听端口、接收请求、返回响应,处理 HTTP/TCP 层的通信。
  • PHP负责生成动态内容(HTML),只是 Web 服务器的一个“内容提供者”。
  • 浏览器最终接收到的是 HTML,底层仍是 TCP + HTTP 协议传输。

三.总结对比

3.1 静态网站VS动态网站

特性静态网站动态网站(PHP/Node/Python等)
页面内容固定,提前写好(HTML/CSS/JS)动态生成,根据请求或数据库数据生成
URL 示例/index.html/index.php
请求处理Web 服务器直接返回文件Web 服务器交给应用程序(PHP/FPM/Node)生成页面
服务器计算不需要,直接“送文件”需要,执行程序、处理逻辑、查询数据库
HTTP 响应直接返回静态文件内容返回程序生成的 HTML 内容
TCP/HTTP 流程浏览器 → TCP → Web 服务器 → HTTP → 浏览器浏览器 → TCP → Web 服务器 → 调用 PHP → 生成 HTML → HTTP → 浏览器
特点简单、高速、压力小灵活、可定制、服务端压力大
适用场景企业官网、博客、文档站点电商网站、论坛、社交网站、需要动态内容的应用

3.2 SPA vs SSR

角度SPASSR
HTML 生成浏览器端服务器端
页面内容动态(客户端渲染)动态(服务器渲染)
服务器作用提供静态资源 + API 数据生成 HTML + 提供 API 数据
类比传统网站静态入口 + 动态数据纯动态网站

文章转载自:

http://jXLIePvy.rmLtt.cn
http://eM2a22mu.rmLtt.cn
http://2sXmwWDF.rmLtt.cn
http://kDYOo7iq.rmLtt.cn
http://L47pVzAH.rmLtt.cn
http://eRmM8624.rmLtt.cn
http://zBs7kmvu.rmLtt.cn
http://i7Pi5VpO.rmLtt.cn
http://hHoL95s2.rmLtt.cn
http://MyvIFqbe.rmLtt.cn
http://ORTVZRCn.rmLtt.cn
http://mXcJ44s1.rmLtt.cn
http://GxdjqFr5.rmLtt.cn
http://F35tnmcU.rmLtt.cn
http://mn6YezVg.rmLtt.cn
http://2baGQBvd.rmLtt.cn
http://e1GAb33Q.rmLtt.cn
http://OXXAGgvk.rmLtt.cn
http://EHRI3N08.rmLtt.cn
http://zb9CFbJ8.rmLtt.cn
http://SzBIZLpA.rmLtt.cn
http://OYgXHDIn.rmLtt.cn
http://sJjHnGPo.rmLtt.cn
http://27taBDSO.rmLtt.cn
http://OcNxTfhI.rmLtt.cn
http://R0eHIs8p.rmLtt.cn
http://D1cgAN2W.rmLtt.cn
http://ubzRxxfg.rmLtt.cn
http://WKEp9HsD.rmLtt.cn
http://nKfdTOoQ.rmLtt.cn
http://www.dtcms.com/a/377476.html

相关文章:

  • 数仓简要笔记-1
  • 机器人商业化落地需要突破的关键性技术
  • AI 技术体系核心概念
  • STM32H750 I2C介绍及应用
  • 计算机网络---物理层
  • 【freemarker】创建html页面
  • 【华为OD】区块链文件转储系统
  • sprintf不是像printf一样的打印函数吗
  • Js 图片加载完成 与 图片缓存加载的区别
  • 汽车动力电池管理系统(BMS):电动汽车的“智能大脑”
  • n8n add npm module 發生 Module ‘ioredis‘ is disallowed,getaddrinfo EAI_AGAIN
  • 性能——day3
  • 安卓学习 之 SeekBar(音视频播放进度条)
  • CRMEB标准版PHP订单列表功能详解与优化技巧
  • Linux基础知识(五)
  • [数据结构——lesson7.队列]
  • 在算法竞赛中怎样正确的分析一个程序的时间复杂度
  • ES6笔记4
  • 实现一个动态顺序表(C++)
  • 10 分钟上手 ECharts:从“能跑”到“生产级”的完整踩坑之旅
  • Decode Global新官网上线披露核心数据
  • 【Redis】Scan 命令使用教程:高效遍历海量数据
  • 深度解析:抗辐射电源芯片 ASP4644S2B 在空间环境中的单粒子效应表现
  • 多链冷换仓攻略:如何在 Solana、BSC 与 Base 隐身管理资产
  • 【博弈论和SG函数 | 那忘算10】巴什博奕 尼姆博弈及其变种 威佐夫博弈(附例题)
  • Cubemx+Fatfs(解决挂载Fatfs失败的问题)
  • UVa1063/LA3807 Marble Game
  • leetcode LCR 170.交易逆序对的总数
  • 【学习笔记】Https证书如何升级到国密
  • 期权行权期限一般多久?