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://www.pswp.cn/web/96516.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/96516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【办公自动化】如何使用Python脚本自动化处理音频?

在日常办公和内容创作中,音频处理是一项常见需求。无论是处理会议录音、制作播客、编辑音乐背景,还是进行语音识别,Python都能帮助我们高效地完成这些任务。本文将介绍如何使用Python实现音频处理自动化,包括格式转换、音频拼接、…

OpenHarmony AVSession深度解析(二):从本地会话到分布式跨设备协同的完整生命周期管理

1. 系统概述 AVSession是OpenHarmony多媒体框架中的核心组件,负责管理音视频会话的生命周期、状态同步和跨设备协同。它提供了统一的接口供应用创建会话、设置元数据、控制播放状态,并支持分布式场景下的会话迁移。 2. 架构设计 2.1 核心类结构 #mermaid-svg-QwwujBwB3Wo6…

架构思维:在复杂系统中寻找秩序的底层逻辑

在商业世界中,架构师常被视为神秘的存在。懂架构不一定是大师,但,大师一定善于架构,善于拨开迷雾,看透全局。他们穿梭于代码与流程之间,用看不见的线条编织着数字世界的经纬。 架构天然的使命就是面对复杂…

国产凝思debian系Linux离线安装rabbitmq教程步骤

系统环境 由于国内访问debian的apt源太慢了,花了很多很多时间后,反而超时报错。所以采用离线安装方式。 uname -a Linux bogon 4.19.0-11-linx-security-amd64 #1 SMP Linx 4.19.146-1linx10 (2023-05-30) x86_64 GNU/Linux下载安装包 在有网络的电脑…

开发避坑指南(48):Java Stream 判断List元素的属性是否包含指定的值

需求 Java Stream 判断List元素的属性是否包含指定的值该怎么实现? 代码实现 直接上代码 public class OrderInfo {private BigDecimal fee;private String orderStatus; }public class ListTest2 {public static void main(String[] args) {OrderInfo orderInfo n…

Arbess V2.0.7版本发布,支持Docker/主机蓝绿部署任务,支持Gradle构建、Agent运行策略

Arbess 是一款国产开源免费的 CI/CD 工具,产品开源免费,简洁易用。本周Arbess V2.0.7版本发布,新增Docker/主机蓝绿部署策略,Gradle构建任务,新增Agent执行策略。 1、版本更新日志 新增 ➢ 支持Docker蓝绿部署、主机…

万物皆可PID:深入理解控制算法在OpenBMC风扇调速中的应用

引言:智能散热,不仅仅是“开”和“关” 想象一下服务器中的风扇管理。最简单的策略是“bang-bang”控制(双位控制):温度超过阈值,风扇全速运转;温度低于阈值,风扇低速或停止。这种策…

CH347应用 USB转I2C功能之:开源项目i2c-tools工具的使用(2)

目录前言开源地址使用说明i2cdetecti2cdumpi2cset前言 上一篇博客中介绍了CH347配合i2c-tools在Linux下的使用,但我们能不能在Windows中也是用i2c-tools进行I2C设备的调试呢。这里我将i2cdetect、i2cdump、i2cset三个常用的工具移植至Windows平台,并进行…

代码随想录算法训练营第50天 | 图论理论基础、深搜理论基础、98. 所有可达路径、广搜理论基础

图论理论基础 题目链接/文章讲解:https://www.programmercarl.com/kamacoder/%E5%9B%BE%E8%AE%BA%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 了解图的基本概念,连通性,图的构造,图的遍历方式 深搜理论基础 题目链接/文章讲解&…

华为HCIE-云计算培训课程有哪些?

华为HCIE云计算认证是华为公司推出的高级别认证,对于想要在云计算领域发展,提高专业技能和竞争力的人来说具备极高的价值。接下里就来聊聊华为HCIE云计算的培训课程都有哪些?如何高效备考呢?一,HCIE云计算培训课程1、理…

DCS控制回路优化:基于WebSocket的实时参数远程调校方法论

说起来,我前段时间刚啃完一个化工厂DCS控制回路优化的硬骨头,用WebSocket搞成了实时参数远程调校,现在回想起来,满是能跟大家唠的实操经验,说不定你们以后碰到类似情况,能少走些冤枉路。先跟大家交代下背景…

《JVM如何排查OOM》

目录 一、什么是OOM? 二、OOM排查的整体思路 三、OOM排查工具大全 四、实战:不同OOM场景的排查方法 场景1:Java heap space 场景2:Metaspace 场景3:GC overhead limit exceeded 五、高级排查技巧 1. 使用Arth…

ubuntu22.04 安装Docker

一、更新系统包索引sudo apt update && sudo apt upgrade -y二、安装必要依赖安装 curl、gnupg等工具,用于添加 Docker 官方 GPG 密钥和仓库:sudo apt install -y ca-certificates curl gnupg三、添加 Docker 官方 GPG 密钥sudo install -m 0755…

高低压隔离器的技术演进与行业赋能

电力电子系统的安全架构与效率升级,始终依赖高低压电路间的可靠隔离。高低压隔离器作为能量传输与信号控制的核心媒介,通过持续迭代的绝缘技术与结构创新,为新能源装备、工业驱动系统提供底层安全屏障。其阻断电位差传导、抑制电磁干扰的能力…

嵌入式 - ARM5

一、led点灯代码优化1. 配置寄存器volatile1.​​禁止优化​​不对该变量的读写操作进行任何优化(如删除“冗余”读取或延迟写入)。2.​​强制内存访问​​每次访问该变量时,必须直接从内存(或硬件寄存器)中读取或写入…

SSH登录管理

两种配置方法-密码 -密钥(免密)ansible 默认 rhel9 禁止 root 用密码登陆,不禁止用密钥登陆 ---修改方式----vim /etc/ssh/sshd_config 修改此文件#PermitRootLogin prohibit-passwordPermitRootLogin yes 改为允许systemctl res…

远程连接--向日葵

下载安装卸载 向日葵语言设置 点击下面的图标,点击"设置": 问题解决 向日葵被连接之后自动黑屏 取消下面的勾选框: 向日葵连接之后黑屏 检查系统的协议: echo $XDG_SESSION_TYPE 如果是: wayland 需要切换为x11. 设置永久默认使用 X11: sudo vi /etc/gdm3/custom…

Liunx执行source /etc/profile 报错, -bash: HISTTIMEFORMAT: readonly variable

今天在配置java环境变量时,执行source /etc/profile报错,系统是统信OS,花了好长时间才解决,在这记录一下,希望能帮助到大家问题截图提示HISTTIMEFORMAT和PROMPT_COMMAND变量时只读变量,不能设置属性值解决办…

什么是达林顿管?

简单来说,达林顿管是一个“电流放大器中的大力士”。它的核心目的是用非常小的输入电流(基极电流)去控制一个非常大的输出电流(集电极电流)。达林顿管是由两个三极管串联而成,放大倍数是两个三极管的放大倍…

嵌入式Linux学习_rk3588移植无线网卡驱动

记录移植无线网卡驱动遇到的各种问题: 从官网上下载8821的驱动源码复制一份上面的CONFIG_PLATFORM_ARM_RK2818,改成3588,然后选项改成y,并把autodetect关掉。 找到CONFIG_PLATFORM_ARM_RK2818,复制一份,改成…