这是一篇为初学者准备的文章,所以作者会尽量从基础出发,尽量细致的描述每一个细节,以求让初学者不会一头雾水,有一定基础的同学就不用看了,以免浪费你的时间。
假设博主今天春心荡漾,想要访问一些不可描述的小网站,于是,博主悄悄的打开了浏览器,在浏览器的地址栏中输入了一个小网站的网址,此处假设这个小网站的网址为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 ...
随机推荐
- 让样式文件,或js文件的相对路径,变成成绝对路径
添加两行代码即可 <% String path = request.getContextPath(); String basePath = request.getScheme() + " ...
- Nginx的负载均衡和项目部署
nginx的作用 Nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:Nginx可以作为一个HTTP服务器进行网站的发布处理,另 ...
- 多线程基础知识---join方法
join方法的作用 thread.join()方法用于把指定的线程加入到当前线程中,把当前线程的CPU执行时间让给另一个线程.比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继 ...
- Stream系列(八)Reduce方法使用
裁减计算 视频讲解: https://www.bilibili.com/video/av77715582/ EmployeeTest.java package com.example.demo; i ...
- 学习笔记:CentOS 7学习之十二:查找命令
目录 1.which-whereis-locate-grep-find查找命令 1.1 which 1.2 whereis 1.3 locate 1.4 grep 1.5 find命令 2. 命令的判 ...
- Oracle-DQL 4- 多表查询
多表查询: 1.笛卡尔积SELECT * FROM dept;--查询员工的信息和其所在部门的信息SELECT ename,job,dname,locFROM emp,dept; --集合A中的所有元 ...
- 安装oracle数据库11g及问题解决
安装步骤可借鉴https://www.cnblogs.com/qfb620/p/4577255.html 1.安装后发现用Navicat无法连接数据库显示报错ORA-28547:connection ...
- 为什么还需要应用层的Keepalive?
既然TCP有了keepalive,应用层还需要Keepalive多此一举吗? 显然是不是的,首先协议分层思想,每层的关注点不同,TCP属于传输层,关注“通”,应用层关注是否能“用”,能“通”不一定能“ ...
- django初步了解2
目录 django初步了解2 表的字段增删改查 数据的增删改查 反向解析和分组 路由分发 名称空间 伪静态 虚拟环境 django初步了解2 表的字段增删改查 新增的字段 1.直接提供默认值 defa ...
- Mysterious Crime CodeForces - 1043D (哈希)
大意: 给定m个n排列, 求有多少个公共子串. 枚举每个位置, hash求出最大匹配长度. #include <iostream> #include <sstream> #in ...