web 的工作原理

Elasticsearch 8.17.1 JAVA工具类 整理了Elasticsearch8.17最新版的API工具类 阅读详情


作为一名想学习网站开发, 或者更专业一点说叫"B/S体系结构系统"开发的同学来说, 可能首先想到的是学习各种前端技术, 例如: HTML, CSS, Javascript……, 以及各种动态网站开发技术, 诸如: ASP, ASP.NET, JSP, PHP…… . 但是, 在你开始之前, 请稍安勿躁, 了解一下网站是如何工作的往往是一件"磨刀不误砍柴工"的事情. 


曾经接触过一些公司里刚入职的程序员, 往往会犯一些比较低级的错误而百思不得其解, 其实就是入门时的基础没有打好. 因此, 这里我们就简单来了解一下WEB工作原理. 

先上个图……本人比较懒, 所以就借用了别人做好的图, 还望原作者本着人道主义的精神不要追究我的责任WEB工作原理简述 - bailey - Baileys Blog
WEB工作原理简述 - bailey - Baileys Blog

 上图使用了一些相对专业的术语来描述了我们平时上网的一个过程. 简单来说就是我们上网的那台设备(通常称为"客户端", 可以是电脑/手机或别的东东) 上面安装的浏览器 (IE, Firefox, Chrome, Opera, Safari……) 作为我们的一个代理向网站服务器发送请求(Request), 网站服务器接收到请求后, 对请求中包含的信息进行解析, 进行一些处理后把处理的结果以响应(Response)的形式返回给浏览器, 最后浏览器解析返回的数据包并将其转化成一个可视化的界面, 就是我们看到的网页. 上网的过程大概也就是一个上述过程的循环.

其中, 一些术语和细节解释一下:
(1) 什么是URL?  
"全球资源定位器 ( Uniform Resource Locator ). 真的好专业, 挺能唬人, 呵呵~ 简单来说, 就是用来描述Internet上的某一个资源所在位置的一个字符串, 比如我们平时说的网址, 当然也可以是Internet上的一张图片, 一个视频或其它东东. 根据URL计算机至少可以得到2个信息: (a) 资源所在的服务器的地址; (b) 资源在服务器上的存放路径.

(2) 什么是HTTP协议?
超文本传输协议 ( Hyper Text Transport Protocol ). 呵呵, 还是好专业…… 好吧, 简单点说, 就是一种计算机之间传输数据所遵循的协议, 这里所说的协议其实是一种数据封装的规范. 计算机会把要传输的数据封装成一个叫做"数据包"的东东,  协议就规定了这个"数据包"里应该有些什么信息, 这些信息分别应该放在什么位置, 等等.   HTTP协议就是众多协议中的一种, 它详细规定了浏览器与网站服务器之间进行数据传输的规范. 具体HTTP协议里规定了些什么东东? 感兴趣的同学可以查一下别的资料. 但可以想到里面肯定包含了收发方的地址信息和我们要传输的数据主体, 呵呵~   总之, 上网看八卦就得靠它了……

(3) 遵循HTTP协议封装的数据还要经过更低层的一些协议封装, 最后通过物理链路传输到服务器. 这就不解释了, 再解释就天亮了……  感兴趣的, 可以看看计算机网络, ISO模型之类的东东

(4) 服务器收到HTTP请求之后干什么呢? 大体来说, 3件事: (a) 找到你要的东西; (b) 进行一些应该在服务器端完成的处理, 比如: 执行服务器端脚本. 当然这一步并非对所有请求都是必须的; (c) 把处理结果封装成HTTP协议描述的数据包, 返回给客户端.

(5) 浏览器收到服务器返回的响应之后, 解析得到的数据, 将其转化成一个图形化的界面, 就是我们看到的网页. 当然, 如果其中还包含Javascript之类的脚本, 浏览器还会执行它……

接下来干什么呢? 输入另一个网址, 继续上网呗, 呵呵~   当然, "输入"这个词不太准确, 我们不会老是去地址栏输网址吧…… "输入"的方式还可以是点击网页中的一个超链接或是提交网页中的一个表单(比如: 发帖子的时候, 在输入框里写好的要发的信息后点击"发送"按钮) . 还有别的方式吗? 也许, 但暂时想不到了……

OK, 现在大概有点感觉了吧……

~~~~~~~~~~~~~~~~~~~~~~ 华丽丽的分隔线 ~~~~~~~~~~~~~~~~~~~~~~~

下面有几点特别友情提醒一下, 省得今后犯些低级错误……

(1) 网站是工作在"两端"的 (服务器端和客户端), 即使有些情况下(比如开发/测试环境下) 服务器端和客户端可能是同一台电脑, 但应该服务器端和客户端执行的任务也是运行在两个完全隔离的进程或内存空间里的. 所以, 千万别干诸如在客户端脚本中读写服务器端脚本中变量的傻事!!  看不懂? 呵呵, 继续往下看就懂了……

(2) 服务器端除了接收请求和返回响应之外, 可能还会进行一些处理工作. 比如, 执行我们使用ASP/JSP技术做动态网站时候写在<%  %> 中的代码, 这通常称为服务器端脚本. 当然, 服务器可能还会做更多事情, 比如: 读写数据库, 执行程序等等. 但无论如何, 服务器端无法直接操纵客户端, 它只能通过"间接"的方式, 比如: 在返回的响应中嵌入客户端脚本或指令, 由浏览器解释执行, 从而达到操纵客户端的目的.

(3) 服务器端返回的只有数据或"静态网页", 没有"服务器端脚本"或"服务器端变量". 即便要将服务器端内存中某个变量的值传给客户端, 也要经过所谓的"序列化"过程, 转换成数据流才能到达客户端. 所以, 千万别想着把一个服务器端对象直接开放给客户端来读写. 如果你真想这么干, 可以学习一下DWR框架……

(4) 对于浏览器而言无论它多么高档, 作为最基本的功能, 它处理的就是 HTML, CSS 和 Javascript, 至于其它的…… 比如: 播放Flash, 那就只能靠第三方的插件 或 浏览器生产商提供的一些扩展了. 所以, 别想着在浏览器里直接执行Java代码, 呵呵, 至少目前还不行.

(5) 无论什么设备, 只要它能接收HTTP请求, 返回HTTP响应那也就可以姑且称作"WEB服务器", 至于它如何处理接收到的请求, 那就得看你装了什么WEB服务器端软件了. 所以, 客户端可以是电脑, 手机或别的东东, 服务器端也不一定就是多么高档的一台机器, 它也可能就是一个单片机或嵌入式系统. 想想你进入路由器设置的那个界面, 呵呵~

(6) HTTP 和 HTML没有必然的联系! HTTP是描述数据封装格式的一种规范, 而HTML是用来告诉浏览器网页内容的一种语言. 所以, 通过HTTP协议传输的不一定非得是HTML文档, 也可以是"纯数据", 在使用Ajax技术时大多数情况下从服务器返回的仅是数据而已, 并非完整的HTML文档.  当然, 还可以想到…… 可以使用HTTP协议下载一个文件. 

(7) 无论客户端和服务器端是多少庞大和复杂的一个系统, 最终将它们联系起来的只是HTTP协议描述的信息. 呵呵, 一切都将被转换为最朴素的数据流.

(8) 从上面的图可以看出, 整个工作过程的"起始点"是由客户端发起"请求", 也就是说, 服务器端是"被动"的响应. 所以, 通过一般的手段是无法由服务器端主动把数据"推送"给客户端的. 那不一般的手段是什么呢? 呵呵, 比如, 很多客户端框架中使用的"轮询"或"捎带"机制.

(9) 客户端和服务器端谁多干点活, 究竟那一些该"胖"些或"富"一些, 这是个永恒的话题, 没有绝对的结论. 但无论如何不应该让HTTP数据包胖起来, 也就是说, 尽可能地减少在客户端和服务器端之间传输的数据和传输的次数.

作为一名想学习网站开发, 或者更专业一点说叫"B/S体系结构系统"开发的同学来说, 可能首先想到的是学习各种前端技术, 例如: HTML, CSS, Javascript……, 以及各种动态网站开发技术, 诸如: ASP, ASP.NET, JSP, PHP…… . 但是, 在你开始之前, 请稍安勿躁, 了解一下网站是如何工作的往往是一件"磨刀不误砍柴工"的事情. 


曾经接触过一些公司里刚入职的程序员, 往往会犯一些比较低级的错误而百思不得其解, 其实就是入门时的基础没有打好. 因此, 这里我们就简单来了解一下WEB工作原理. 

先上个图……本人比较懒, 所以就借用了别人做好的图, 还望原作者本着人道主义的精神不要追究我的责任WEB工作原理简述 - bailey - Baileys Blog
WEB工作原理简述 - bailey - Baileys Blog

 上图使用了一些相对专业的术语来描述了我们平时上网的一个过程. 简单来说就是我们上网的那台设备(通常称为"客户端", 可以是电脑/手机或别的东东) 上面安装的浏览器 (IE, Firefox, Chrome, Opera, Safari……) 作为我们的一个代理向网站服务器发送请求(Request), 网站服务器接收到请求后, 对请求中包含的信息进行解析, 进行一些处理后把处理的结果以响应(Response)的形式返回给浏览器, 最后浏览器解析返回的数据包并将其转化成一个可视化的界面, 就是我们看到的网页. 上网的过程大概也就是一个上述过程的循环.

其中, 一些术语和细节解释一下:
(1) 什么是URL?  
"全球资源定位器 ( Uniform Resource Locator ). 真的好专业, 挺能唬人, 呵呵~ 简单来说, 就是用来描述Internet上的某一个资源所在位置的一个字符串, 比如我们平时说的网址, 当然也可以是Internet上的一张图片, 一个视频或其它东东. 根据URL计算机至少可以得到2个信息: (a) 资源所在的服务器的地址; (b) 资源在服务器上的存放路径.

(2) 什么是HTTP协议?
超文本传输协议 ( Hyper Text Transport Protocol ). 呵呵, 还是好专业…… 好吧, 简单点说, 就是一种计算机之间传输数据所遵循的协议, 这里所说的协议其实是一种数据封装的规范. 计算机会把要传输的数据封装成一个叫做"数据包"的东东,  协议就规定了这个"数据包"里应该有些什么信息, 这些信息分别应该放在什么位置, 等等.   HTTP协议就是众多协议中的一种, 它详细规定了浏览器与网站服务器之间进行数据传输的规范. 具体HTTP协议里规定了些什么东东? 感兴趣的同学可以查一下别的资料. 但可以想到里面肯定包含了收发方的地址信息和我们要传输的数据主体, 呵呵~   总之, 上网看八卦就得靠它了……

(3) 遵循HTTP协议封装的数据还要经过更低层的一些协议封装, 最后通过物理链路传输到服务器. 这就不解释了, 再解释就天亮了……  感兴趣的, 可以看看计算机网络, ISO模型之类的东东

(4) 服务器收到HTTP请求之后干什么呢? 大体来说, 3件事: (a) 找到你要的东西; (b) 进行一些应该在服务器端完成的处理, 比如: 执行服务器端脚本. 当然这一步并非对所有请求都是必须的; (c) 把处理结果封装成HTTP协议描述的数据包, 返回给客户端.

(5) 浏览器收到服务器返回的响应之后, 解析得到的数据, 将其转化成一个图形化的界面, 就是我们看到的网页. 当然, 如果其中还包含Javascript之类的脚本, 浏览器还会执行它……

接下来干什么呢? 输入另一个网址, 继续上网呗, 呵呵~   当然, "输入"这个词不太准确, 我们不会老是去地址栏输网址吧…… "输入"的方式还可以是点击网页中的一个超链接或是提交网页中的一个表单(比如: 发帖子的时候, 在输入框里写好的要发的信息后点击"发送"按钮) . 还有别的方式吗? 也许, 但暂时想不到了……

OK, 现在大概有点感觉了吧……

~~~~~~~~~~~~~~~~~~~~~~ 华丽丽的分隔线 ~~~~~~~~~~~~~~~~~~~~~~~

下面有几点特别友情提醒一下, 省得今后犯些低级错误……

(1) 网站是工作在"两端"的 (服务器端和客户端), 即使有些情况下(比如开发/测试环境下) 服务器端和客户端可能是同一台电脑, 但应该服务器端和客户端执行的任务也是运行在两个完全隔离的进程或内存空间里的. 所以, 千万别干诸如在客户端脚本中读写服务器端脚本中变量的傻事!!  看不懂? 呵呵, 继续往下看就懂了……

(2) 服务器端除了接收请求和返回响应之外, 可能还会进行一些处理工作. 比如, 执行我们使用ASP/JSP技术做动态网站时候写在<%  %> 中的代码, 这通常称为服务器端脚本. 当然, 服务器可能还会做更多事情, 比如: 读写数据库, 执行程序等等. 但无论如何, 服务器端无法直接操纵客户端, 它只能通过"间接"的方式, 比如: 在返回的响应中嵌入客户端脚本或指令, 由浏览器解释执行, 从而达到操纵客户端的目的.

(3) 服务器端返回的只有数据或"静态网页", 没有"服务器端脚本"或"服务器端变量". 即便要将服务器端内存中某个变量的值传给客户端, 也要经过所谓的"序列化"过程, 转换成数据流才能到达客户端. 所以, 千万别想着把一个服务器端对象直接开放给客户端来读写. 如果你真想这么干, 可以学习一下DWR框架……

(4) 对于浏览器而言无论它多么高档, 作为最基本的功能, 它处理的就是 HTML, CSS 和 Javascript, 至于其它的…… 比如: 播放Flash, 那就只能靠第三方的插件 或 浏览器生产商提供的一些扩展了. 所以, 别想着在浏览器里直接执行Java代码, 呵呵, 至少目前还不行.

(5) 无论什么设备, 只要它能接收HTTP请求, 返回HTTP响应那也就可以姑且称作"WEB服务器", 至于它如何处理接收到的请求, 那就得看你装了什么WEB服务器端软件了. 所以, 客户端可以是电脑, 手机或别的东东, 服务器端也不一定就是多么高档的一台机器, 它也可能就是一个单片机或嵌入式系统. 想想你进入路由器设置的那个界面, 呵呵~

(6) HTTP 和 HTML没有必然的联系! HTTP是描述数据封装格式的一种规范, 而HTML是用来告诉浏览器网页内容的一种语言. 所以, 通过HTTP协议传输的不一定非得是HTML文档, 也可以是"纯数据", 在使用Ajax技术时大多数情况下从服务器返回的仅是数据而已, 并非完整的HTML文档.  当然, 还可以想到…… 可以使用HTTP协议下载一个文件. 

(7) 无论客户端和服务器端是多少庞大和复杂的一个系统, 最终将它们联系起来的只是HTTP协议描述的信息. 呵呵, 一切都将被转换为最朴素的数据流.

(8) 从上面的图可以看出, 整个工作过程的"起始点"是由客户端发起"请求", 也就是说, 服务器端是"被动"的响应. 所以, 通过一般的手段是无法由服务器端主动把数据"推送"给客户端的. 那不一般的手段是什么呢? 呵呵, 比如, 很多客户端框架中使用的"轮询"或"捎带"机制.

(9) 客户端和服务器端谁多干点活, 究竟那一些该"胖"些或"富"一些, 这是个永恒的话题, 没有绝对的结论. 但无论如何不应该让HTTP数据包胖起来, 也就是说, 尽可能地减少在客户端和服务器端之间传输的数据和传输的次数.
PYTHON 打印三角形大全 用PYTHON语言打印各种三角形 阅读详情

相关推荐

ROSTCM6+Gephi的网络语义分析详细教程(附案例实战)

ROSTCM6是武汉大学沈阳教授研发编码的国内目前唯一的以辅助人文社会科学研究的大型免费社会计算平台。该软件可以实现微博分析、聊天分析、全网分析、网站分析、浏览分析、分词、词频统计、英文词频统计、流量分析、聚类分析等一系列文本分析。Gephi是一款开源免费跨平台基于JVM的复杂网络分析软件,可用于各种图形和网络的可视化和探索,是最受欢迎的网络可视化软件之一。

m0_64336780的博客 1万+

web工作原理

一、工作过程 过程如图所示: 1、用户打开客户端,启动浏览器程序,并在浏览器中制定一个URL(统一资源定位器),浏览器便向该URL所指向的Web服务器发出的请求。 2、Web服务器接到浏览器的请求后,把URL转换成页面所在服务器上的文件路径名。 3、如果URL指向的是普通的HTML(Hyper Text Markup Language,超文本标记语言)文档,Web服务器直接将它送给浏览器。HTML文档中可能包含有ActiveX、VBScript、Java、JavaScript等...

烟柳寒殇的博客 6985

Modbus RTU 详解 + FreeMODBUS移植(附项目源码)

本文全面解析Modbus RTU通信协议,详细介绍其报文格式、功能码定义及典型应用场景,并手把手指导如何将FreeMODBUS协议栈移植到嵌入式平台。内容涵盖从底层硬件驱动配置、协议栈移植到主机/从机通信测试的全流程,重点讲解移植过程中的常见问题及解决方案。文章最后提供经过实测的完整项目源码,帮助开发者快速实现稳定的Modbus RTU通信功能。

Bit_Dong的博客 2769

WEB工作原理

一、web工作原理: 1、用户在浏览器中输入要访问的web站点地址或在已打开的站点点击超链接。 2、由dns进行域名解析,找到服务器的IP地址,向该地址指向的web服务器发出请求。 3、web服务器根据请求将URL地址转换为页面所在的服务器上的文件全名,查找相应的文件。 4、若URL指向静态文件,则服务器将文件通过http协议传输给用户浏览器;若HTML文档中嵌入了ASP,PHP,JSP等程序,则由服务器直接运行后返回给用户; 如果web服务器所运行程序包含对数据库的访问,服务器会将查询指令发送

weixin_43627016的博客 1万+

Web 程序运行原理简介

Web 程序运行原理简介 用 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 := &am

VLyb 4086

【JavaWeb】Servlet(一)——原理篇

前文说到,"Servlet 技术的核心是 Servlet 接口,它是所有 Servlet 类必须直接或者间接实现的一个接口"让我们来看一看Servlet接口中定义了哪些方法。

m0_55908255的博客 1622

Web服务器工作原理详解

服务器

qq_38273451的博客 1589

Web工作原理

Web即全球广域网,也称为万维网(World Wide Web),是一种建立在Internert上的一种网络服务。Web系统主要浏览器(Browser)和服务器(Server)构成,工作原理是用户使用统一资源定位符(Uniform Resource Locator,URL)通过浏览器向服务器发送请求,服务器收到请求后进行处理,然后以超文本标记语言(HyperText Markkup Language,HTML)页面形式反馈给浏览器。

wsx438的博客 2342

WEB工作原理

1.作为Web服务器:与Apache相比,Nginx使用更少的资源,支持更多的并发连接,表现出更高的效率,这使得Nginx特别受虚拟主机提供商的欢迎。它可以支持多达50,000个并发连接的响应。实际上tomcat是Apache服务器的扩展,但是它在运行时独立运行,所以当您运行Tomcat时,它实际上是作为一个独立于Apache的进程运行的。在NT中是4.0,在Win2000中是5.0,在WinXP中是5.1,在Win2003中是6.0,在win2008 r2中是iis7.5,在win2012中是iis8。

weixin_44628713的博客 1160

WEB应用的工作原理

文章目录前言一 什么是WEB应用1.1 应用的类型1.2 Web应用工作原理 前言 word专业版真好用,笑哭。都不想面对干巴巴的MarkDown格式了。 《大型网站技术架构》的读书笔记我放在word里写了。博客里就写一些零散的知识。 这一次的问题是,大型网站架构先不谈。最简单的小型网站的架构我也不是很了解。如下图,应用程序连接数据库。但是应用程序连接文件是什么东西? 小型网站最开始时没有太多...

Wby_Nju的博客 2645

Web 服务器】的工作原理

用 Caddy 省心,自动 HTTPS 但会占用更多。,即使在高流量下,CPU & 内存占用依然很低。:大流量网站(如百度、腾讯、阿里)一般都用。(可配合 PHP、Node.js),不想折腾 SSL 配置的用户。,但依然比 Apache 低。Web 服务器的主要作用是。(自动申请 SSL 证书),适合个人开发者和小型项目。各有特点,主要体现在。,因为它可以同时处理。

Huazzi的博客 1535

【转载】WEB工作原理简述

作为一名想学习网站开发, 或者更专业一点说叫"B/S体系结构系统"开发的同学来说, 可能首先想到的是学习各种前端技术, 例如: HTML, CSS, Javascript……, 以及各种动态网站开发技术, 诸如: ASP, ASP.NET, JSP, PHP…… . 但是, 在你开始之前, 请稍安勿躁, 了解一下网站是如何工作的往往是一件"磨刀不误砍柴工"的事情. 曾经接触过一些公司里刚入职的程序

To哥的博客 1万+

php web 工作原理

php web 工作原理

smallelfin 563

HTTP协议和web工作原理

转载自:http://jwx0925.iteye.com/blog/676944 要把 知识点学好,那就需要把它相关的周边知识点了解全面  HTTP协议 是web学习的核心!!!  学东东切忌只学配置,不学原理:只学会框架有什么用,要会自己写框架!!  web学习直接关系到J2EE的学习  一、HTTP 超文本传输协议 人类之所发展得如此快,就是因为有自己的语言

谷雨 606

web工作原理

网络

weixin_64295281的博客 2704

web服务器工作原理

点击打开链接How web servers work?

MayWendy的博客 1137

java Web工作原理

1.1解析http协议 HTTP是一种超文本传送协议(HyperText Transfer Protocol),是一套计算机在网络中通信的一种规则。在TCP/IP体系结构中,HTTP属于应用层协议,位于TCP/IP协议顶层。HTTP是一种无状态协议,意思是指在Web浏览器(客户端)和Web服务器之间不需要建立持久的连接。整个过程就是一个客户端向服务器端发送一个请求(Request),然后Web

qq_34721308的博客 871

Web缓存的工作原理

Web缓存的工作原理 所有的缓存都是基于一套规则来帮助他们决定什么时候使用缓存中的副本提供服务(假设有副本可用的情况下,未被销毁回收或者未被删除修改)。这些规则有的在协议中有定义(如HTTP协议1.0和1.1),有的则是由缓存的管理员设置(如DBA、浏览器的用户、代理服务器管理员或者应用开发者)。 浏览器端的缓存规则 对于浏览器端的缓存来讲,这些规则是在HTTP协议头和HTML页面的Meta...

廿四桥明月夜的博客 3182

stm32f407系列引脚定义(详细)+引脚图

stm32f407系列引脚定义(详细)+引脚图

基于HTML+Python爬虫实现的电商比价系统+源码(毕业设计&课程设计&项目开发)

基于HTML+Python爬虫实现的电商比价系统+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用基于HTML+Python爬虫实现的电商比价系统+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~基于HTML+Python爬虫实现的电商比价系统+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用基于HTML+Python爬虫实现的电商比价系统+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用基于HTML+Python爬虫实现的电商比价系统+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用基于HTML+Python爬虫实现的电商比价系统+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用

上一篇: PHP中的替代语法(冒号、endif、endwhile、endfor)
下一篇: C/S和B/S 架构的 区别
D_Weirdo
博客等级 码龄8年 11粉丝 12原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值