这是一篇为初学者准备的文章,所以作者会尽量从基础出发,尽量细致的描述每一个细节,以求让初学者不会一头雾水,有一定基础的同学就不用看了,以免浪费你的时间。
假设博主今天春心荡漾,想要访问一些不可描述的小网站,于是,博主悄悄的打开了浏览器,在浏览器的地址栏中输入了一个小网站的网址,此处假设这个小网站的网址为www,baidu.com,当博主输入了这个网址以后,浏览器中就显示了博主想要看到的内容,整个过程如下图所示。

那么,浏览器返回给我们的内容是怎么产生的呢?
这些内容肯定不是凭空产生的,而是有人为我们准备了这些内容,当我们在浏览器的地址栏输入网址,这些提前准备好的内容即可返回到浏览器中,以便有需要的人能够查看到这些内容,而查看这些内容的人就是我们平常所说的“客户”,客户往往会通过“客户端程序”去请求,查看这些内容,我们最常使用的客户端程序就是浏览器了,所以,在之后的http相关的文章中,如果没有特别说明,我们所说的”客户端“就是“浏览器”,我们使用客户端去查看我们想要的内容,而提供内容的一端被称为“服务器端“,当作为客户时,我们需要在电脑上安装客户端软件(即浏览器),通过客户端软件查看我们想要的内容,而作为提供内容的人,也需要在服务器的计算机上安装对应的软件,才能为我们提供服务,而服务器端的计算机就是我们常说的“服务器”,安装在服务器上的,为我们提供内容的软件称之为“web服务器软件”。
所以,综上所述,我们可以了解到如下名词
注:如下名词的解释均针对http而言,在后面的文章中我们会解释什么是http,此处不用纠结
客户端:客户端通常是指浏览器,比如谷歌浏览器,火狐浏览器,IE等,浏览器安装在客户使用的电脑上,所以,在描述http时,客户端通常也代指那些安装了浏览器的电脑。
服务端:·服务器通常是那些安装了“web服务软件”的计算机,这些服务端的计算机被称为服务器。
没错,聪明如你一定想到了,说白了,客户端与服务端就说两台电脑,分别安装了不同的软件,服务器提供内容,客户端查看内容。

所以,当我们访问网页时,大致的过程如下图所示。

客户端与服务器既然能够通讯,那么证明它们之间一定是通过某种方法进行沟通当的,就像你我之间能够进行沟通一样。
你和我都说汉语,所以,当我说“苹果”这个词的时候,你就会想到一种水果,或者想到一个手机品牌,但是当我对一个美国人说“苹果”两个字时,他可能并不能理解我在说什么,因为他可能听不懂汉语,如果我想要对他表达“苹果”这个词,我需要说“Apple”,他才会明白我说的是什么,当我跟你聊天时,我们都说汉语,当两个美国人聊天时,他们都说英语,这样,才能有效的沟通,总之,如果想要能够顺畅的沟通,沟通双方都必须遵守相同的协议,我们可以把汉语理解成一种协议,把英语也理解成一种协议,只要沟通双方都遵守相同的协议,双方就能够顺畅的沟通,只要沟通双方都遵守相同的协议,双方就能够理解对方想要做什么。当然,之所以拿汉语,英语举例,是为了让初学者能够更加容易的理解“协议”这个词,但是请不要错误的以为“协议“就是”“语言”,之所以拿语言举例,是为了方便理解,说白了,“协议”可以理解为某种规则或者某种约定,只要大家严格按照这种约定行事,世界就会正常的运转,比如“红灯停”,“绿灯行”也可以理解为一种协议,比如在马路上都要靠右行驶(在中国),也是一种协议,比如在小饭馆,你给老板人民币,老板给你对应的餐食,也是一种协议,“协议”的概念稍微有一些抽象,稍微有一些宽泛,此处大概有一个印象即可,在学习的过程中,我们自己就会慢慢的理解它了。
客户端与服务器之间,也需要遵守某些相同的协议,才能够顺畅的通讯,细心如你一定注意到了,我说的是“某些”协议,也就是说,双方要遵守的协议不止由一种。它们需要同时遵守多种协议,才能够正常的完成整个通讯过程。
就像我们发送信件一样,首先,我们需要将信息写到一张纸上,然后将信纸放到信封中,并且将信封封死,最后将信件投入邮局中。邮局根据信件的目的地址,将信件分派到不同的运转中心(分拣中心),中转中心根据信件的地址,将信件发送到下一个中转中心,直到由中转中心发往信件的目的地,当信件到达收件人手中之后,收件人需要拆开信封,拿出信纸,阅读邮件,就能知道发信人想要传达的信息,整个过程中,发信人将信件写在纸上,并将信纸放入信封中,这其实就是一种协议,因为大家如果想要发送信件,则都需要这么做,信件被邮局传输的过程,其实也是一种协议,因为邮局或者快递公司,都是将信件或者快件发送到中传中心,再由中传中心一步一步的中传到最终的目的地的,这个大家都遵守的运输规则,也是一种协议,只不过,邮局的协议是针对运输过程这个层面的协议,而写信,封信,拆信对应的协议不是针对运输过程的,而是针对信息封装过程这一层面的一种协议,所以,这两种协议所针对的“层面”不同,但是如果想要正常完成整个过程,则必须遵守各个“层面”的协议,才能正常的完成整个发信收信的过程。
而客户端与服务器通讯的过程也是一样的,它们需要同时遵守很多协议, 这些协议可能针对的“层面”不同,当整个过程处于某个层面时,就需要遵循这个层面的协议,才能够正常工作,在最早的时候,人们将网络世界分为七层,但是,人们发现,将网络世界分为七层有些复杂了,而且不太实用,经过一段时间的实践,人们将网络世界分为了4层(或者说分成了5层,此处不用纠结),我们把这4层称之为:应用层,转输层,网络层和数据链路层。
当然,网络并不是我们此处探论的重点,我们可以先聊聊另外一些东西,比如http协议,刚才已经说过,不同的”层面“中,需要使用不同的协议,http协议就是应用层的一种协议,http协议是什么意思呢?
http是HyperText Transfer Protocol的缩写,HyperText Ttansfer Protocol 译为“超文本转输协议”。
从字面上理解,这种协议是用来转输“超文本”的,我们可以暂且粗暴的将“超文本”理解成我们所谓的”网页“(这样并不准确,但是方便理解),那么,我们可以将http协议理解为一种“网页转输协议”。
当我们在浏览器中输入网址时,其实就是在访问我们期望访问到的“网页”,而我们说过,这些网页中的内容不是凭空产生的,是别人提供给我们的,所以,如果我们需要访问网页,则需要从别人那里获取到这些网页文件。
客户端通过http协议告诉服务端:“我想要访问那个页面,请你转输给我”。
因为服务端也能够理解http协议,所以,服务端听到客户端的诉求以后,通过http协议找到对应的页面,再转输给客户端。
客户端收到了对应的网页以后,浏览器会对网页进行“解析”,最终展示别到人的眼前,变成我们看到的网页的内容。
浏览器我们天天都在用,浏览器是一种常用的客户端软件,它能够理解http协议,浏览器有不同的“品牌”,比如谷歌浏览器,火狐浏览器,IE浏览器等,我们可以根据自己的使用需要,选择一款适合自己的浏览器,浏览器是客户端软件,那么常用的服务端软件有哪些呢?
常见的http服务端软件如下(不包含能够处理动态请求的服务端软件):
Httpd
Nginx
lls
与浏览器一样,服务端软件也有不同的“品牌”,上述三种常见的http服务器软件就可以理解为不同的厂商的产品。
Httpd就是Apache软件基金会旗下的产品,由于Httpd是Apache如软件基金会众多产品里面出名较早的产品,所以人们往往会不加区分的称呼appche与httpd,当然,除了httpd以外,Apache软件基金会下面还有很多出名的开源项目。
Nginx就是所谓的“后起之秀”,它是俄国人发明的,与httpd相比,它的特点就是并发能力强,资源消耗小。
lls是我们熟知的“微软”的产品,它是Windows Server中的默认提供的http服务器。
我们可以根据具体的场景或者需要,选择对应的服务端软件。
好了,说了这么多,都是一些非常基础的概念,只是为了方便入门的同学,我们会在之后的文章中,慢慢的深入,慢慢的结合实际总结一些知识,希望这篇文章呢能够帮助到你~
- httpd配置文件httpd.conf规则说明和一些基本指令
apache httpd系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 本文主要介绍的是httpd的配置文件,包括一些最基本的指令.配置规 ...
- apache的/etc/httpd/conf/httpd.conf和/usr/local/apache2/conf/httpd.conf区别
一.问题 centos系统用yum安装完apache后,重启后有时会失效,然后去网上找资料,发现有的说重启命令是这样的: /etc/init.d/httpd restart 而有的呢,说重启命令应该是 ...
- 转:浅谈UNIX下Apache的MPM及httpd.conf配置文件中相关参数配置
为什么要并发处理 以Apache为代表的web服务器中,如果不支持并发,则在一个客户端连接的时候,如果该客户端的任务没有处理完,其他连接的客户端将会一直处于等待状态,这事不可想象的,好像没有为什么要不 ...
- httpd三种MPM的原理剖析
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- (httpd、php)
(一)http协议介绍 http: 超文本传输协议,http协议是应用层协议,实现http协议的软件都监听的TCP的80端口之上.http协议也是一种文本协议,是基于TCP协议实现 http协议有几个 ...
- WEB应用之httpd基础入门(一)
前文我们聊了下http协议web服务的一些常识和httpd服务器软件三种响应模型的简单介绍,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12515075.ht ...
- Linux——搭建Apache(httpd)服务器
一.基本概念 Apache(或httpd)是Internet上使用最多的Web服务器技术之一,使用的传输协议是http超文本传输协议(一个基于超文本的协议),用于通过网络连接来发送和接受对象. 有两个 ...
- Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details
thinkphp 在Apache上配置启用伪静态,重启Apache1 restart 竟然失败了,报错 Job for httpd.service failed because the control ...
- Apache主配置文件httpd.conf 详解
Apache的主配置文件:/etc/httpd/conf/httpd.conf 默认站点主目录:/var/www/html/ Apache服务器的配置信息全部存储在主配置文件/etc/httpd/co ...
- centos7 apache httpd安装和配置django项目
一.安装httpd服务 apache在centos7中是Apache HTTP server.如下对httpd的解释就是Apache HTTP Server.所以想安装apache其实是要安装http ...
随机推荐
- SpringCloud学习(三)服务消费者(Feign)(Finchley版本)
上一篇文章,讲述了如何通过RestTemplate+Ribbon去消费服务,这篇文章主要讲述如何通过Feign去消费服务. Feign简介 Feign是一个声明式的伪Http客户端,它使得写Http客 ...
- 部署开源mock平台doclever简单叙述
一.访问官网: http://doclever.cn/controller/index/index.html 二.doclever作用(重点:mock带有转发功能) DOClever是一个可视化接口管 ...
- Apache配置同一IP使用多域名对应多个网站
CentOS下的Apache的配置是/etc/httpd/conf/httpd.conf vi /etc/httpd/conf/httpd.conf 添加 <VirtualHost *:80&g ...
- springboot2.0结合freemarker生成静态化页面
目录 1. pom.xml配置 2. application.yml配置 3. 使用模板文件静态化 3.1 创建测试类,编写测试方法 3.2 使用模板字符串静态化 使用freemarker将页面生成h ...
- jQuert DOM操作
DOM操作 1 内部插入 append(content|fn) 向每个匹配的元素内部追加内容 appendTo(content) 把所有匹配的元素追加到另一个指定的元素元素集合中 prepend(co ...
- Redis迁移键
迁移键: move key db 用于在Redis内部进行数据迁移 dump key + restore key ttl value 可以实现在不同的Redis实例之间进行数据迁移 127.0.0.1 ...
- 关于win10安卓真机调试无法找到设备的问题
之前在win10系统上调试安卓设备,usb接好了,结果居然没有找到设备. 一般出现这种情况可能是电脑的驱动没装好. 于是找了驱动人生大佬来诊断,确实是少了安卓usb驱动. 正常来说用驱动人生装个usb ...
- Spring 基于 AspectJ 的 AOP 开发
Spring 基于 AspectJ 的 AOP 开发 在 Spring 的 aop 代理方式中, AspectJ 才是主流. 1. AspectJ 简介 AspectJ 是一个基于 java 语言的 ...
- JavaScript设计模式(单例模式)
单例模式是一种简单但非常实用的模式,特别是惰性单例技术,在合适的时候才创建对象,并且只创建唯一的一个.下面我们来逐步了解单例模式的用法. 一.简版单例模式: var Singleton = funct ...
- 【原创】Linux基础之logrotate
logrotate logrotate ‐ rotates, compresses, and mails system logs logrotate is designed to ease admin ...