有没有人能够把网站运行的原理说的通俗点的?
程序员文章站
2022-06-09 12:19:06
...
针对目前流行的技术;具体一点的。
比如:HTML、CSS、PHP、JavaScript、数据库、XML、DOM 等都是具体做什么的,他们相互之间如何协同工作的。输出的 web 页内容是如何更新的。
编程语言在后台程序中扮演的都是什么角色,为什么说不论是什么编程语言都可以用作服务器语言,关键是看哪种语言最适合。
我知道回答这个问题需要写很多,会很辛苦。小弟先谢过各位大侠了。
现在说下服务器,常用的有apache,nginx,服务器就是目的ip机上的一个守护进程,它时刻监控来自互联网的请求,根据请求返回相应的内容,正如前面你说的这些文件都是想服务器发出请求,再给你返回,返回的html、css、javascript交给浏览器来解析,呈现出的就是你所看到的网页内容。
那么php与数据库呢?前面的只是些静态文件,如果要和服务器动态交互呢,就得用到脚本语言,目前比较流行的有php,.net,,jsp,用cgi的也不少。通过访问服务器端得脚本文件(比如:http://t.cn/login.php),那么脚本是有访问服务器本地资源,数据库等的权限,根据你请求的内容,脚本解析后返回给服务器,服务器再返回给你。
数据库主要用来动态存储数据,方便查找,插入,查询,删除等操作。mysql,oracle,sql server,以及一些nosql产品都是数据库。
xml主要用来做数据交换,储存配置信息,数据。也一般的文件,但有自己的书写规范,皆有一整套的解析引擎进行内容解析。脚本语言,或是才c++,,java都可以操作xml文件。
dom称为节点,这是xml下的概念,因为xml未见是标签式的,html算是它的一个分支,用于更加特定的领域,打开一个网页,右键,选择查看源码,你就能看待闭合标签式的xml文件,为了索引每个内容点,就引入了节点的概念(dom),通过dom的逐级查找,可以方面,快速定位xml元素。 回楼主:
通俗点的?:以Win\IIS\PHP\mysql\IE为例
1\小明打开电脑
2\运行浏览器
3\打开一个网址 http://zhihu.com/
4\小明的电脑通过DNS寻找到此网址指向的IP地址
5\浏览器向此IP地址发出访问http://zhihu.com的请求
6\http://zhihu.com web服务器软件接收到请求后查询是否有站点绑定了这个域名
7\如未绑定 返回错误代码或默认站点(设置允许的话) 如有绑定 执行No.8
8\http://zhihu.com 这个网址是一个跟目录 并非一个文件 web服务器软件查询设置的默认文件 如index.php
9.web服务器判断文件类型和对应的解释器 如果是php 就通知php.exe(php-cgi.exe):“哥们 有老外来信 你给翻译一下” php收到通知后把php文件中的php法语解释后(如果有数据库连接信息和数据库查询信息 再通过对应的链接驱动通知他其他数据库兄弟 执行查询得到结果并返回给php) php解释完php语法 把结果交给iis iis等php忙活完之后 这时手里就剩下了html\js\css 这三种客户端浏览器直接执行的文件 配合php翻译的片段 整理完整后 返回给客户端
10.No.6-9时小明的浏览器一直在等待 即浏览器状态:“正在查找站点”、“正在链接站点”、“已找到网站正在等待响应”、“下载数据”、“解析、渲染、执行、打印输出”……
11.至此,小明就可以看到http://zhihu.com的首页……
回覃明圆:
再高深的技术 都可以变得亲民
能不能变是一回事(能变!)
有没有必要变是另一回事(无意义!)
此问题就像吃肉需要先了解此动物的生活规律、思想情操……你会去做吗?如果你只对计算机有兴趣 对动物没兴趣 那么对动物有兴趣的人怎么办 他们能去找亲民的动物咨询探讨吗
技术层面的问题 没有任何人可以做到面面俱到 除了本身职业方向外 一生百年而已 谁能真做到上知天文,下知地理,中晓人和,明阴阳,懂八卦,知奇门,晓遁甲,运筹帷幄之中,决胜千里之外……中华5000年也不过出了诸葛孔明一人
另外 并非他不亲民 而是相同亲民的东西太多了 你没有发现 如果你真有兴趣 这个世界上有太多的资源可以供你学习掌握 不要怪技术不亲民 只是你没学到。
同时,技术(科学)知识跟人文知识、民风民俗不同 他必然会有一定的严肃性、严格性
最后:欧美国家对技术的认识 比我们国家要好一些 你可以去欧美各大学的网站公开信息及公开课程寻找一些你感兴趣的东西 服务器和客户端:这是你要明白的第一个概念,现在你看到的知乎网就是把代码和数据放在服务器上,然后客户端的你在用一种叫做browser(浏览器)的玩意,你也许是用IE,也许用firefox,也许用chome,总之他们都是browser,browser的作用就是向服务器发送请求(request)和接收请求结果(response),比如 你点击网站的一个链接一个按钮,向服务器发出一个行为请求,有的请求里面带有数据的,比如你发一条微博,你无非是要请求服务器:给我微博数据库里增加一条微博数据,增加的内容就是向服务器请求的内容。
php:服务器收到请求后,他要认识解析这个请求然后开始action,指导他怎么做事情就是一些代码,比如php代码,asp代码,这些都是服务器的编程语言,有二十三种语言都可以,这些语言会被其对应的应用服务器软件认识,你的一次请求,服务器会解析运行你的请求,然后返回来一些图片,一些HTML文件,css文件,javasript脚本,总之可以说是一个网页需要的文件吧,返回到客户端。比如前面的请求;给我微博数据库里增加一条微博数据,这个时候服务器要去操作数据库,把数据库加一条记录,如果成功,返回结果说操作成功等。
html,css:请求结果返回到客户端之后,这些文件只有浏览器能认识解析,浏览器把他们拼装好,html主要是网页里面有什么内容,css是修饰这些内容,比如文字图片怎么排版,文字有多大,背景颜色,一些网页的动态效果由返回的js控制。这个时候,人就能够很直观地阅读服务器返回的结果内容了。
javascript:有的时候你不能什么事情总是去找服务器,服务器也觉得麻烦,这个时候,javasript应运而生,它是一种客户端脚本代码,是浏览器来执行的,就是说有些小事情他给你立即做了,不需要老远地去找服务器。比如你有个时候填写密码,密码的格式不正确,填写完提交,js脚本拦住先检查一遍合不合格,合格就通过去找服务器,不合格直接打回提醒你不合格。js能做的事情很多,它会使你的网页动起来。
数据库:数据库可以把他看作一个档案馆,一切的数据都在数据服务器硬盘里整理摆放得井井有条,数据库软件里还一些繁忙的档案管理员,有的负责取存删数据,有的负责备份或者数据安全等等。外面的软件,比如服务器通过“接口”通道向数据库进行主要是一些数据操作比如增删改读等。
xml:数据是有一种物理格式的,就是说数据以某种结构组织起来的,比如你的world文档,doc可以看成一种数据的物理格式,计算机世界本质就是数据,各种各样结构和格式的数据。xml这种数据格式的好处就是一是好多好多软件都认识他,是一种公开的格式,是一种数据的通用格式,xml可做各种软件的数据通信,二是好读,符合人的阅读习惯。比较好操作,编程语言直接就可以操作,一般做为软件的配置文件来用。
dom节点:就是xml这类数据的组织形式,xml数据就是一个节点一个节点形成的,节点套节点。还有节点为什么这么重要,因为web的基础html也是一种变相的xml数据格式。
差不多这样,很多还是说得不够严谨,见笑了。 网站是这么运行的:
用户的浏览器(客户端)通过网络(协议)向网站服务器发送请求,服务器根据用户的请求(以及服务器自己的数据、当前用户的状态)生成网页内容,通过网络(协议)发送回浏览器,浏览器把服务器送来的网页(HTML格式)解释执行并渲染,最终用户看到了网页的样子。
网络协议:http
客户端:html(dom)、css、javascript、xml
服务器端:数据库、http-server 龙成亮 已经很好地解释了网站程序的基本原理
我这里补充一下,按我的理解,说得简单一点,一个网站=服务器+域名+网站程序和资源。
要搭建一个网站,你需要准备好我上面提到的这三部分
举例说明:例如要搭建http://zhihu.com这个网站,那么需要以下步骤:
补充一下,如果你用的是国内服务器,那么域名还要先备案才可以接入哦。另外插播一句:现在的网站备案制度非常折腾非常变态哦 确实,我有很多疑问。上网查了很多资料。但很多问题还是半懂不懂的。
比如计算机的运行原理。还是有人说的能让老百姓明白的。
我觉得技术无论多么高深,都应该是具有“亲民”的一面,而不是高高在上。 中文版地址:
>http://www.html5rocks.com/zh/tutorials/internals/howbrowserswork/#Resources
英文版地址:
>http://taligarsiel.com/Projects/howbrowserswork1.htm 其实这应该不算问题吧,不清楚你现在是都学过一遍不知如何归类?还是准备开始学习?
HTML CSS JS这些在客户端运行,PHP则在服务器解释运行~相当于每次你用浏览器发送一个请求,指定的服务器会做出响应,交给PHP处理从而得到HTML,CSS和其他等等文件(包含图片啊JS文件啊等等),然后客户端下载这些二进制文件!
在这个流程里,应该在PHP处理完返回数据的地方做为分水岭!前后端各自为营~
不一定对,差不多就这样吧呵呵~ 你既然是问网站的工作原理,这里以最流行的动态网站工作原理来说明了,以PHP为例。仔细看图。
比如:HTML、CSS、PHP、JavaScript、数据库、XML、DOM 等都是具体做什么的,他们相互之间如何协同工作的。输出的 web 页内容是如何更新的。
编程语言在后台程序中扮演的都是什么角色,为什么说不论是什么编程语言都可以用作服务器语言,关键是看哪种语言最适合。
我知道回答这个问题需要写很多,会很辛苦。小弟先谢过各位大侠了。
回复内容:
想说你访问网站的实质吧。你通过浏览器(输入地址),浏览器首先向你设定的dns服务器发出请求,dns服务器返回网站的实际ip地址。因为互联网的ip地址唯一,依据这个ip,你的电脑能访问到这个ip所提供的公共资源,这里具体就是一些网站文件(js,html,css,img)。也就是一个ip就是一台电脑,你的请求实际上是访问另一台电脑的文件。现在说下服务器,常用的有apache,nginx,服务器就是目的ip机上的一个守护进程,它时刻监控来自互联网的请求,根据请求返回相应的内容,正如前面你说的这些文件都是想服务器发出请求,再给你返回,返回的html、css、javascript交给浏览器来解析,呈现出的就是你所看到的网页内容。
那么php与数据库呢?前面的只是些静态文件,如果要和服务器动态交互呢,就得用到脚本语言,目前比较流行的有php,.net,,jsp,用cgi的也不少。通过访问服务器端得脚本文件(比如:http://t.cn/login.php),那么脚本是有访问服务器本地资源,数据库等的权限,根据你请求的内容,脚本解析后返回给服务器,服务器再返回给你。
数据库主要用来动态存储数据,方便查找,插入,查询,删除等操作。mysql,oracle,sql server,以及一些nosql产品都是数据库。
xml主要用来做数据交换,储存配置信息,数据。也一般的文件,但有自己的书写规范,皆有一整套的解析引擎进行内容解析。脚本语言,或是才c++,,java都可以操作xml文件。
dom称为节点,这是xml下的概念,因为xml未见是标签式的,html算是它的一个分支,用于更加特定的领域,打开一个网页,右键,选择查看源码,你就能看待闭合标签式的xml文件,为了索引每个内容点,就引入了节点的概念(dom),通过dom的逐级查找,可以方面,快速定位xml元素。 回楼主:
通俗点的?:以Win\IIS\PHP\mysql\IE为例
1\小明打开电脑
2\运行浏览器
3\打开一个网址 http://zhihu.com/
4\小明的电脑通过DNS寻找到此网址指向的IP地址
5\浏览器向此IP地址发出访问http://zhihu.com的请求
6\http://zhihu.com web服务器软件接收到请求后查询是否有站点绑定了这个域名
7\如未绑定 返回错误代码或默认站点(设置允许的话) 如有绑定 执行No.8
8\http://zhihu.com 这个网址是一个跟目录 并非一个文件 web服务器软件查询设置的默认文件 如index.php
9.web服务器判断文件类型和对应的解释器 如果是php 就通知php.exe(php-cgi.exe):“哥们 有老外来信 你给翻译一下” php收到通知后把php文件中的php法语解释后(如果有数据库连接信息和数据库查询信息 再通过对应的链接驱动通知他其他数据库兄弟 执行查询得到结果并返回给php) php解释完php语法 把结果交给iis iis等php忙活完之后 这时手里就剩下了html\js\css 这三种客户端浏览器直接执行的文件 配合php翻译的片段 整理完整后 返回给客户端
10.No.6-9时小明的浏览器一直在等待 即浏览器状态:“正在查找站点”、“正在链接站点”、“已找到网站正在等待响应”、“下载数据”、“解析、渲染、执行、打印输出”……
11.至此,小明就可以看到http://zhihu.com的首页……
回覃明圆:
再高深的技术 都可以变得亲民
能不能变是一回事(能变!)
有没有必要变是另一回事(无意义!)
此问题就像吃肉需要先了解此动物的生活规律、思想情操……你会去做吗?如果你只对计算机有兴趣 对动物没兴趣 那么对动物有兴趣的人怎么办 他们能去找亲民的动物咨询探讨吗
技术层面的问题 没有任何人可以做到面面俱到 除了本身职业方向外 一生百年而已 谁能真做到上知天文,下知地理,中晓人和,明阴阳,懂八卦,知奇门,晓遁甲,运筹帷幄之中,决胜千里之外……中华5000年也不过出了诸葛孔明一人
另外 并非他不亲民 而是相同亲民的东西太多了 你没有发现 如果你真有兴趣 这个世界上有太多的资源可以供你学习掌握 不要怪技术不亲民 只是你没学到。
同时,技术(科学)知识跟人文知识、民风民俗不同 他必然会有一定的严肃性、严格性
最后:欧美国家对技术的认识 比我们国家要好一些 你可以去欧美各大学的网站公开信息及公开课程寻找一些你感兴趣的东西 服务器和客户端:这是你要明白的第一个概念,现在你看到的知乎网就是把代码和数据放在服务器上,然后客户端的你在用一种叫做browser(浏览器)的玩意,你也许是用IE,也许用firefox,也许用chome,总之他们都是browser,browser的作用就是向服务器发送请求(request)和接收请求结果(response),比如 你点击网站的一个链接一个按钮,向服务器发出一个行为请求,有的请求里面带有数据的,比如你发一条微博,你无非是要请求服务器:给我微博数据库里增加一条微博数据,增加的内容就是向服务器请求的内容。
php:服务器收到请求后,他要认识解析这个请求然后开始action,指导他怎么做事情就是一些代码,比如php代码,asp代码,这些都是服务器的编程语言,有二十三种语言都可以,这些语言会被其对应的应用服务器软件认识,你的一次请求,服务器会解析运行你的请求,然后返回来一些图片,一些HTML文件,css文件,javasript脚本,总之可以说是一个网页需要的文件吧,返回到客户端。比如前面的请求;给我微博数据库里增加一条微博数据,这个时候服务器要去操作数据库,把数据库加一条记录,如果成功,返回结果说操作成功等。
html,css:请求结果返回到客户端之后,这些文件只有浏览器能认识解析,浏览器把他们拼装好,html主要是网页里面有什么内容,css是修饰这些内容,比如文字图片怎么排版,文字有多大,背景颜色,一些网页的动态效果由返回的js控制。这个时候,人就能够很直观地阅读服务器返回的结果内容了。
javascript:有的时候你不能什么事情总是去找服务器,服务器也觉得麻烦,这个时候,javasript应运而生,它是一种客户端脚本代码,是浏览器来执行的,就是说有些小事情他给你立即做了,不需要老远地去找服务器。比如你有个时候填写密码,密码的格式不正确,填写完提交,js脚本拦住先检查一遍合不合格,合格就通过去找服务器,不合格直接打回提醒你不合格。js能做的事情很多,它会使你的网页动起来。
数据库:数据库可以把他看作一个档案馆,一切的数据都在数据服务器硬盘里整理摆放得井井有条,数据库软件里还一些繁忙的档案管理员,有的负责取存删数据,有的负责备份或者数据安全等等。外面的软件,比如服务器通过“接口”通道向数据库进行主要是一些数据操作比如增删改读等。
xml:数据是有一种物理格式的,就是说数据以某种结构组织起来的,比如你的world文档,doc可以看成一种数据的物理格式,计算机世界本质就是数据,各种各样结构和格式的数据。xml这种数据格式的好处就是一是好多好多软件都认识他,是一种公开的格式,是一种数据的通用格式,xml可做各种软件的数据通信,二是好读,符合人的阅读习惯。比较好操作,编程语言直接就可以操作,一般做为软件的配置文件来用。
dom节点:就是xml这类数据的组织形式,xml数据就是一个节点一个节点形成的,节点套节点。还有节点为什么这么重要,因为web的基础html也是一种变相的xml数据格式。
差不多这样,很多还是说得不够严谨,见笑了。 网站是这么运行的:
用户的浏览器(客户端)通过网络(协议)向网站服务器发送请求,服务器根据用户的请求(以及服务器自己的数据、当前用户的状态)生成网页内容,通过网络(协议)发送回浏览器,浏览器把服务器送来的网页(HTML格式)解释执行并渲染,最终用户看到了网页的样子。
网络协议:http
客户端:html(dom)、css、javascript、xml
服务器端:数据库、http-server 龙成亮 已经很好地解释了网站程序的基本原理
我这里补充一下,按我的理解,说得简单一点,一个网站=服务器+域名+网站程序和资源。
要搭建一个网站,你需要准备好我上面提到的这三部分
- 服务器,用来存放网站程序并让网站程序正常运转,可以理解为连接在互联网上的一台24小时都在运转的计算机,这台计算机的IP一般是固定的(当然也有通过软件来实现用动态IP做服务器的,此处暂且不论),这样互联网上的其他用户才能准确找到服务器上的资源。
- 域名,因为IP比较难记,所以使用域名来解析指向服务器IP,服务器那边再绑定域名,这样就可以通过易于记忆的域名来访问服务器上的资源了.域名可以在域名注册商网站注册使用。如http://zhihu.com是在域名注册商http://godaddy.com处注册的。
- 网站程序,就是要实现一个网站功能所需要的程序和资源的集合. 网站程序和资源是存放于服务器硬盘上的。
举例说明:例如要搭建http://zhihu.com这个网站,那么需要以下步骤:
- 购买一台服务器(小网站的话也可以使用虚拟主机或VPS),配置好服务器信息;
- 开发好网站程序,将网站程序上传到服务器,配置好数据库连接等信息;
- 到域名注册商网站注册http://zhihu.com这个域名(如果域名已经被别人注册了而你又很想要那可以花钱联系域名持有人买下来),将域名解析到服务器IP,OK,这样一个http://zhihu.com网站就搭建好了,下一步就是宣传运营吧。
补充一下,如果你用的是国内服务器,那么域名还要先备案才可以接入哦。另外插播一句:现在的网站备案制度非常折腾非常变态哦 确实,我有很多疑问。上网查了很多资料。但很多问题还是半懂不懂的。
比如计算机的运行原理。还是有人说的能让老百姓明白的。
我觉得技术无论多么高深,都应该是具有“亲民”的一面,而不是高高在上。 中文版地址:
>http://www.html5rocks.com/zh/tutorials/internals/howbrowserswork/#Resources
英文版地址:
>http://taligarsiel.com/Projects/howbrowserswork1.htm 其实这应该不算问题吧,不清楚你现在是都学过一遍不知如何归类?还是准备开始学习?
HTML CSS JS这些在客户端运行,PHP则在服务器解释运行~相当于每次你用浏览器发送一个请求,指定的服务器会做出响应,交给PHP处理从而得到HTML,CSS和其他等等文件(包含图片啊JS文件啊等等),然后客户端下载这些二进制文件!
在这个流程里,应该在PHP处理完返回数据的地方做为分水岭!前后端各自为营~
不一定对,差不多就这样吧呵呵~ 你既然是问网站的工作原理,这里以最流行的动态网站工作原理来说明了,以PHP为例。仔细看图。