Web 程序运行原理简介

4 篇文章 0 订阅
订阅专栏

Web 程序运行原理简介

1. Web 基本原理

1.1 运行原理

用户打开浏览器,输入网址后按 Enter键,浏览中就器会显示出用户想要浏览的内容。在这个看似简单的用户行为背后到底隐藏了些什么呢?

用户浏览网页的原理如图所示:

用户浏览网页原理图

简要流程如下:

  1. 用户打开客户端浏览器,输入URL地址。
  2. 客户端浏览器通过HTTP协议向服务器端发送浏览请求。
  3. 服务器端通过 CGI 程序接收请求,如果在客户端浏览器请求的资源包中不含动态语言的内容,则服务器端CG程序直接通过 HTTP 协议向客户端浏览器发送应答包;如果在客户端浏览器请求的资源包中含有动态语言的内容,则服务器会先调用动态语言的解释引擎处理“动态内容”,用 CGI 程序访问数据库并处理数据,然后通过 HTTP 协议将处理得到的数据返给客户端浏览器。
  4. 客户端浏览器解释并显示 HTML 页面。

1.2 DNS 的概念

DNS(Domain Name System,域名系统)提供的服务是:将主机名和域名转换为 IP 地址。
其工作原理如下图:

域名
DNS
ip 地址

DNS 解析的简要过程如下:

  1. 用户打开浏览器,输入URL地址。浏览器从接收到的URL中抽取出“域名”字段(即要访问的主机名),并将这个主机名传送给DNS应用程序的客户端。
  2. DNS客户端向 DNS 服务器端发送一份查询报文,其中包含要访问的主机名字段。
  3. DNS服务器端给 DNS 客户端发送一份回答报文,其中包含该主机名对应的IP地址。
  4. 该浏览器在收到来自 DNS 的 IP 地址后,向该P地址定位的 HTTP 服务器端发起 TCP 连接

需要注意的是,客户端与服务器端之间的 通信是非持久连接的,即服务器端在发送了应答后就与客户端断开连接,等待下一次请求。

2. HTTP 简介

HTTP( Hyper Text Transfer Protocol, 超文本传输协议), 是一个简单的请求-响应协议,通常运行在TCP协议之上。它指定了客户端可能发送给服务器端什么样的消息,以及得到什么样的响应。请求和响应消息的头是以ASC码形式给出的;而消息内容则是以类似 MME 的格式给出的。

在HTTP传输过程中,客户端总是通过建立一个连接与发送一个HTTP请求来发起一个事务。服务器端不能主动与客户端联系,也不能给客户端发出一个回调连接。客户端与服务器端都可以提前中断一个连接。

Tip:
HTTP协议是无状态的:同一个客户端的这次请求和上次请求是没有对应关系的,HTTP服务器端并不知道这两个请求是否来自同一个客户端。 为了解决这个问题,Web程序引入了 cookie 机制来维护连接的可持续状态。

3. HTTP 请求

客户端发送到服务器端的请求消息由请求行( Request Line)、请求头( Request Header)、请求体( Request Body)组成。

3.1 请求行

请求行由请求方法、URI、HTTP协议/协议版本这3部分组成。例如在访问百度首页时,通过 F12 键查看请求行,可以看到请求采用的是HTTP1.1协议。

关于 GET 请求与 POST 请求的区别

3.2 请求头

可以通过浏览器查看请求头信息:例如,打开浏览器,输入 www.baidu.com.com 访问百度首页, 按F12键,依次单击 F12, Network,www.baidu.com, Headers, Request Headers 选项。

请求头包含服务器要使用的附加信息,比较重要的信息有 Cookie、Referer、User-Agent 等。

3.3 请求体

请求体是指在HTTP请求中传递数据的实体,常用于POST、PUT等请求中 例如在表单请求中,当我们提交一个POST请求时,会将一个页面表单中的组件的表单数据值通过 param=value11&param22=value22 的键值对形式编码成一个格式化串,并通过请求将其传递给服务器端。

不但请求体可以传递请求参数,GET请求URL也可以通过类似于 /chapter/index.html? param11=value1param22=value22 的方式传递请求参数。

4. HTTP 响应

HTTP响应由服务器端返回给客户端,可以分为3部分:响应状态码( Response Status Code)、响应头( Response Headers)和响应体( Response Body) 。

4.1 响应状态码

响应状态码表示服务器的响应状态,例如 200 代表服务器正常响应,404 代表页面未找到等。

4.2 响应头

打开浏览器,输入“www. “www.baidu.com” 访问百度首页。按F12键,依次单击 Network、www.baidu.com、Headers、Response Headers选项,即可查看响应头信息。

响应体也可以是一个 JSON 或 XML 的文档。

5. HTTPS 简介

HTTPS 是以安全为目标的 HTTP 通道。它在 HTTP 的基础上,通过传输加密和身份认证保证了传输过程的安全性。

TTL( Transport Layer Security,传输层安全性协议), 及其前身 SSL( Secure Socket Layer 安全套接字层)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。 在采用SSS/TLS后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。即 HTTP 在加上加密处理、认证和完整性保护功能后即是 HTTPS.

HTTP 与 HTTPS

6. HTTP 2 简介

相比HTTP1.1, HTTP2新增了头信息压缩及推送等功能,提高了传输效率。

  1. 头信息压缩。在HTTP1.1中,每一次发送请求和返回请求,HTTP头信息都必须进行完整的发送和返回,这一部分头信息中有很多的内容(比如: Headers、 Content–type、 Accept 等字段)是以字符串形式保存的,占用了较大的带宽量。HTTP2则对头信息进行了压缩,可以有效地减少带宽。
  2. 推送功能。在HTTP2之前,只能由客户端发送数据,服务器端返回数据。客户端是主动方,服务器端永远是被动方。而在HTTP2中有了“推送”的概念,即服务器端可以主动向客户端发起一些数据传输。

HTTP2 主动推送

当客户端请求一个包含 index.html、 style.css、1.png文件的Web网页时, style.css文件是以链接的形式在HTML文档中显示的。只有在通过浏览器解析了HTML文档中的内容之后,才能根据链接中包含的URL地址去请求对应的CSS文件。

在HTTP2中有了推送功能之后,不仅客户端可以请求HTML文档,服务器端也可以主动把HTML文档中所引用到的CSS和JS等文件主动推送给客户端。这样HTML、CSS和JS文件的 发送就是并行的,而不是串行的。这样就显著地提升了整体的传输效率和性能。

8. Web 应用程序的组成

Web应用程序负责调用动态语言的解释引擎负责处理“动态内容”,一般由处理器(handler)和模板引擎( template engine)组成:

req
resp
User
处理器
模板引擎

8.1 处理器

在 Web 应用程序中,处理器是最核心的部分,它负责把客户端发送过来的 HTTP 请求进行接收并处理。在处理过程中会优先调用模板引擎,然后将模板引擎生成的 HTML 文档通过 HTTP 协议返给客户端。

通常情况下,处理器会接收HTTP请求,然后解析路由( Route ),最后将URL映射到对应的控制器(Controller)中。

控制器也可以访问数据库。但一般情况下与数据库相关的逻辑会被单独定义在模型(Model) 中。视图(View)会将模板引擎生成的HTML文档通过HTTP协议返回给客户端。这就是我们在编写应用程序时经常使用的“模型-视图-控制器”( Model-Controller-View,MVC)模式。

MVC模式是软件工程中的一种常用软件架构模式,它把软件系统分为3个基本部分:模型 (Model)、视图(View)和控制器( Controller):

  • 模型(Model):用于处理与应用程序业务逻辑相关的数据,以及封装对数据的处理方法。模型有对数据直接访问的权力,例如对数据库的访问。
  • 视图(View):能够实现数据有目的的显示(理论上这不是必需的)。在视图中一般没有程序的逻辑。
  • 控制器(Controller):起到组织不同层面间的作用,用于控制应用程序的流程。它处理事件并做出响应。“事件”包括用户的请求处理和与模型的交互。

MVC 模式中三者的关系如下图所示:

MVC
MVC模式只是一种长期编程经验的总结,并不是唯一的模式,具体的应用程序该怎么办需要根据具体的场景来架构。

8.2 模板引擎

模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于将模板( template)和数据(data)组合在一起,最终生成HTML文档。

HTML 文档会通过 HTTP 响应报文发送给客户端。

模板引擎的实现方式有很多,最简单的是“置换型”模板引擎。这类模板引擎只是将指定模板内容(字符串)中的特定标记(子字符串)替换一下,便生成最终需要的业务数据(比如网页) 。

“置换型”模板引擎实现简单,但其效率低下无法满足高负载的应用程序需求(比如有海量访问的网站)。因此,还出现了“解释型”模板引擎和“编译型”模板引擎等。

模板引擎可以让(网站)程序实现界面与数据分离业务代码与逻辑代码的分离,这就大大提升了开发效率。良好的设计使得代码重用变得更加容易,使得前端页面与逻辑代码(业务数据)不再混合,便于阅读和修改错误。

用 Go 语言实现的一个最简单的 Web 服务器

对 Go 语言不了解的可以跳过代码

package main

import (
	"fmt"
	"net/http"
)

func hello (w http.ResponseWriter, r *http.Request) {
	_, err := fmt.Fprintf(w, "Hello World")
	if err != nil {
		return
	}
}

func main() {
	server := &http.Server{
		Addr: "0.0.0.0:80",
	}
	http.HandleFunc("/", hello)
	err := server.ListenAndServe()
	if err != nil {
		return
	}
}

运行之后,在浏览器输入 127.0.0.1 即可看到 Hello World

【网络安全】Web应用程序的工作原理
等风来
08-27 7722
Web应用程序是一种通过网络(通常是互联网)访问的、具有交互性和动态功能的软件应用。与普通网页相比,Web应用程序具有以下区别:1.Web应用程序通过与用户进行双向通信,实现了更高级的交互性。用户可以与应用程序进行数据输入、提交表单、执行操作等,而不仅仅是被动地查看静态内容。Web应用程序可以根据用户的输入和行为动态地响应和改变。2.Web应用程序能够根据用户的请求和服务器端的处理,在客户端动态生成内容。相比之下,普通网页是静态的,其内容在服务器上预先生成,并以相同的形式发送给所有用户。3.
Web程序工作原理详解
10-25
Web程序工作原理详解的知识点主要包括以下几个方面: 1. Web一词的含义: - Network:指计算机网络,即电脑网络,用于描述计算机之间的连接。 - Web:通常指万维网(World Wide Web),也称为互联网(Internet)...
走进Web开发(2)--web应用程序工作原理
linuxstuding
08-17 195
上次说到web开发有很多优点,那么这些优点是怎么来的呢?让我们来看看web应用程序的工作原理吧.搞清楚它的工作原理和机制,对于我们编写web程序是非常有好处的. 首先说明一下运行web应用程序需要那些部分:网页,web服务器,客户浏览器以及客户端和浏览器之间通信的HTTP协议.下面逐一对它们说明. 网页: 网页的具体组成分为网页的内容,是我们想要向用户展示的信息;网页的结构部分,可以理解为对网页...
web的运行
最新发布
m0_73245690的博客
07-19 1071
浏览器/服务器(Browser/Server,简称B/S)结构是一种网络架构模型,它利用Web浏览器作为客户端,服务器则提供应用程序服务和数据处理。中间件是介于应用系统和系统软件之间的一类软件,就比如apache,nginx,tomcat,lis这些中间件,网站是一个装修好的房子,中间件就是装修房子的钢筋混泥土。1.输入网站,如www.baidu.com(http://www.baidu.com),http是协议,www是网络服务类型,baidu.com是域名。4.发送用户HTTP请求给服务器;
Web应用运行原理
java面试笔试
09-02 1659
web应用启动做了什么?读取web.xml文件- web.xml常用配置参数:1).context-param(上下文参数)2).listener(监听器配置参数)3)....
Web程序运行原理
weixin_34019144的博客
11-28 254
为什么80%的码农都做不了架构师?>>> ...
Web工作原理
MMMMMoses的博客
03-05 552
1.接收用户所发出的数据,然后进行处理; 2.通过URL传递到 javabean ,再经过数据库,提取所相应的数据信息; 3.将数据返回给用户、 什么是Servlet?他们有什么作用? 在Java里,Servlet使你能够编写根据请求动态生成内容的服务端组件。事实上,Servlet是一个在javax.servlet包里定义的接口。它为Servlet的生命周期声明了三个基本
web的工作原理
weixin_64295281的博客
02-16 2206
网络
web应用程序运行原理[参考].pdf
10-20
总的来说,Web应用程序的运行原理涉及到客户端浏览器、服务器端的Web服务器、HTTP协议以及各种编程技术和设计模式的协同工作。理解这些基本概念和技术对于开发和维护高效的Web应用程序至关重要。
JSP程序运行原理、文档结构及简单输入输出实例分析
01-08
本文实例讲述了JSP程序运行原理、文档结构及简单输入输出。分享给大家供大家参考。具体如下: 目标: 掌握Web应用的文档结构; 掌握JSP的运行原理; 掌握JSP的简单输入和输出。 主要内容: 通过一个简单实例介绍Web...
【服务器】web应用程序运行原理
日拱一卒,不期速成!
08-15 1843
web应用程序运行原理 读取web.xml文件 web.xml常用配置参数 1.context-param 上下文参数 2.listener 监听器配置参数 3.filter 过滤器配置参数 4.servlet servlet页面参数 5.其他 读取顺序 1.2.3.4.5 原理及过程 1.应用在服务器上启动,容器按上述顺序自动读取...
Web应用的工作原理
weixin_34050389的博客
03-16 306
Web Service是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。Web Service的体系结构是由Web服务提供者、Web服务请求者、Web服务中介者构成,其工作过程简单的说就是:Web服务请求者利用SOAP消息向Web服务提供者发送请求以获得服务,Web服务中介者把Web服务请求者与合适的Web服务提供者联系...
web应用工作原理
heibaikong6的博客
03-16 1515
文章目录静态网页动态网页工作流程服务器Web服务器IISApacheNginxTomcatWeblogic数据库开发语言及常见框架/cmsweb常见架构 静态网页 html或者htm,是一种静态的页面格式,不需要服务器解析其中的脚本。由浏览器如(IE、Chrome等)解析。 不依赖数据库 灵活性差,制作、更新、维护麻烦 交互性较差,在功能方面有较大的限制 安全、不存在SQL注入漏洞 动态网页 ...
第一章 Java Web工作原理
weixin_34248118的博客
09-24 327
一:在本章我们将学到如下的内容 》HTTP协议原理 》服务器端Web编程原理 》Servlet与Web容器 》Java Web应用程序的组成 》Tomcat介绍   一:1.1解析HTTP协议 HTTP:超文本传输协议(HyperText Transfer Protocol) HTTP是一种无状态的协议,意思是指在Web浏览器和Web服务器之间不需要建立持久的连接。 HTTP是...
Web应用工作原理、动态网页技术
weixin_34334744的博客
05-25 566
前言 什么是web应用程序?web应用程序又是如何进行工作的呢?什么是动态网页技术?又有 哪些动态网页技术呢?这次这篇文章需要探求总结的。 Web应用 我们知道应用程序有两种模式,C/S模式和B/S模式。C/S模式是客户端/服务器模式,...
理解PHP网页运行原理
gjhzailushang的博客
06-06 2701
理解php网页运行原理: 浏览器〉输入网址〉找到对应服务器 〉apache提供服务开始 -->如果是html文件〉从文件夹中拿出文件 > 发出去(经过互联网)给浏览器 -->如果是php文件〉从文件夹中拿出文件〉交与php模块执行〉返回给apache〉发给浏览器 找到对应服务器的过程: 先找当前浏览器所在电脑中的hosts文件: 〉如果其中有该地址对应的ip设置,则就可以找到该服务器
WEB工作原理
热门推荐
weixin_43627016的博客
05-31 1万+
一、web的工作原理: 1、用户在浏览器中输入要访问的web站点地址或在已打开的站点点击超链接。 2、由dns进行域名解析,找到服务器的IP地址,向该地址指向的web服务器发出请求。 3、web服务器根据请求将URL地址转换为页面所在的服务器上的文件全名,查找相应的文件。 4、若URL指向静态文件,则服务器将文件通过http协议传输给用户浏览器;若HTML文档中嵌入了ASP,PHP,JSP等程序,则由服务器直接运行后返回给用户; 如果web服务器所运行程序包含对数据库的访问,服务器会将查询指令发送
web基本原理
我的博客
08-31 2756
1.web的核心概念:客户端-服务器端(请求-响应) 2.请求方式:地址栏请求、超链接请求、表单请求 3.静态网站和动态网站 静态网站:一堆.html文件,内容不可变化,大家看到的都是一样的信息 动态网站:可以根据请求内容动态地生成HTML、XML或其他格式文档的Web网页 常见的动态网页技术:ASP.NET和JSP JSP(全称JavaServerPages),Sun Microsystems公司创建 JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中.
深入探究JavaScript程序设计与运行原理
在深入探讨JavaScript的程序设计和运行原理之前,我们需要了解JavaScript的基本概念,包括它的历史背景、特点以及在现代Web开发中的角色。 首先,JavaScript的诞生与网景公司(Netscape)紧密相关,它由Brendan ...
写文章

热门文章

  • 【FastAPI】Python FastAPI + MySQL 操作流程 11835
  • 【Vue】在Render函数中实现v-model的数据双向绑定效果 10481
  • FastAPI + Vue 实现 OAuth2 的 jwt token 登录验证 6787
  • 【Vue】<input>标签中使用v-model与v-bind进行数据绑定的区别 5390
  • 【Spring Cloud 进阶】OpenFeign 底层原理解析 5220

分类专栏

  • RAG 实践 2篇
  • LLM Research 43篇
  • Text2SQL 23篇
  • 李宏毅机器学习 1篇
  • ML Basic
  • ML Dataset
  • MIT6.S081 10篇
  • LeetCode 24篇
  • Spring Framework 2篇
  • Offer 八股文 1篇
  • CMU15445 4篇
  • 论文精读 1篇
  • Go 4篇
  • 计算机基础 4篇
  • Linux 3篇
  • 读书笔记
  • 机器学习 13篇
  • Front End 3篇
  • Spring 系列 3篇
  • 知识图谱 3篇
  • Python 7篇
  • 趟过的坑 6篇

最新评论

  • 【IR 论文】DPR — 最早提出使用嵌入向量来检索文档的模型

    Tim187: goupibutong

  • 【RAG 论文】BGM:为 LLM 和 Retriever 的偏好 gap 搭建一个 Bridge

    __Srain: 这东西和reranker的区别是什么

  • 【RAG 论文】Adaptive-RAG:自适应地根据 query 难度来选择合适的 RAG 模型

    蟹堡王不卖汉堡: 博主可以多多分享rag吗,研一看博主写的文章再去看论文真的救急

  • 【MIT 6.S081】2020, 实验记录(8),Lab: locks

    精彩。: acquire(&old_bucket->lock); ...... release(&old_bucket->lock); 这个锁可能会造成死锁,假如old_bucket也妄图在bcache中进行替换。

  • 【RAG 论文】Selfmem:使用 LLM 自己的输出来作为下一轮的 context 从而提升自己的生成效果

    yubinCloud: 嗯对,确实是 记忆选择器 更好表情包

大家在看

  • 基于SSM党务政务服务热线管理系统的设计
  • 一文搞懂分布式事务常用解决方案 407
  • 恢复图片不用慌,电脑删除照片找回,试试这5个方法
  • 志愿者在线辅助学习系统的设计与实现--01048(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C# 、C++、python、数据可视化、大数据、全套文案 620
  • 【Golang】Go语言Web开发之模板渲染

最新文章

  • 【RAG 实践】LlamaIndex 快速实现一个基于 OpenAI 的 RAG
  • 【LLM 评估】GLUE benchmark:NLU 的多任务 benchmark
  • 【LLM 评估】MMLU benchmark:用于衡量 LM 的多任务语言理解能力
2024
07月 1篇
06月 15篇
05月 34篇
04月 21篇
03月 20篇
02月 12篇
01月 4篇
2023年5篇
2022年1篇
2021年33篇
2020年9篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳坪山网站建设公司对网站 做了全面优化高栏港网站优化乐山网站运营优化公司网站搜索优化选择兴田德润罗湖如何网站优化广告对网站要进入首页如何进行优化南宁seo网站优化外包品牌网站优化代理项目清水河各大网站优化商丘外贸网站优化哪家好福田公司的网站优化方式新乡信息化网站搭建优化康佳网站优化专员实训表麦积区网站seo优化排名南京智能化网站优化信息中心医疗行业网站优化策划德阳网站seo优化哪家强南漳网站优化服务怀化网站排名优化多少钱大名网站优化公司天津网站seo优化制作咸阳网站优化seo推广优化的网站优化网站方法推荐g火11星木兰草原网站优化分析长葛企业网站排名优化神湾网站seo优化如何软件网站优化效果好深圳广告网站优化方案沧州优化推广网站香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化