这是一篇为初学者准备的文章,所以作者会尽量从基础出发,尽量细致的描述每一个细节,以求让初学者不会一头雾水,有一定基础的同学就不用看了,以免浪费你的时间。
 
假设博主今天春心荡漾,想要访问一些不可描述的小网站,于是,博主悄悄的打开了浏览器,在浏览器的地址栏中输入了一个小网站的网址,此处假设这个小网站的网址为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服务器。
我们可以根据具体的场景或者需要,选择对应的服务端软件。
 
 
好了,说了这么多,都是一些非常基础的概念,只是为了方便入门的同学,我们会在之后的文章中,慢慢的深入,慢慢的结合实际总结一些知识,希望这篇文章呢能够帮助到你~
 

转载于:https://www.cnblogs.com/momenglin/p/8521064.html

Httpd总结 :HTTPD的基本概念相关推荐

  1. httpd: Syntax error on line of C:/httpd/conf/httpd.conf: Cannot load c:/php/ php5apache2_4.dll

    搞了4个小时的问题!! 运行httpd -k start 会报错! httpd: Syntax errqor on line 530 of C:/httpd/conf/httpd.conf: Cann ...

  2. Linux命令行怎么启用httpd,Linux httpd命令

    Linux 命令大全 Linux httpd命令是Apache HTTP服务器程序. httpd为Apache HTTP服务器程序linux命令大全linux命令大全.直接执行程序可启动服务器的服务. ...

  3. HTTP 之 HTTPD介绍

    1 概述 httpd是Apache超文本传输协议(HTTP)服务器的主程序.被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池.20世纪90年代初,国家超级计算机应用中心NCSA开 ...

  4. http协议及httpd配置

    一.HTTP http协议全称为超文本传输协议(hyper text transfer protocol),是一种应用层协议,监听在80/tcp.所谓超文本就是使用html编程语言开发的纯文本文件 1 ...

  5. Pacemaker,Corosync和PCS搭建高可用性负载均衡linux 集群(httpd)

    Pacemaker,Corosync和PCS搭建高可用性负载均衡linux 集群(httpd) 一.高可用性的概念: 1.一种机制来定义哪些系统可以被用作集群节点 2.哪些服务或者应用可以在节点间作失 ...

  6. Linux系统终止httpd服务,【转】Linux下apache/httpd服务启动与停止

    apache服务,或者说httpd服务,如何启动,如何开机启动. 转来转去,找不到原文.. 操作系统环境:红帽5,具体如下: # uname -a Linux machine1 2.6.18-164. ...

  7. buildroot httpd php

    /********************************************************************* buildroot httpd php* 说明:* 在bu ...

  8. httpd.2.4虚拟主机配置测试

    测试目标: 三个虚拟主机,要求如下 vhost1: phpMyAdmin, 同时提供https服务: vhost2: wordpress 配置过程: 一.配置vhost1 1.首先配置vhost1,先 ...

  9. httpd服务相关实验

    实验环境: CentOS6.8 1.连接测试: 在/etc/httpd/conf/httpd.conf telnet 172.16.252.242 80 GET /index.html HTTP/1. ...

  10. centos架设lamp环境 php+mysql+httpd+vsftp

    注意:如果让httpd支持php需要修改httpd.conf的以下 1.检查apache的配置文件看是否加载了libphp5.so模块,若没有就添加 LoadModule php5_module    ...

最新文章

  1. Android4.4 framework分析——ActivityManagerService的启动和对Activity的管理
  2. C/C++ 读取配置(config)文件 开源库(libconfig)
  3. 如何让Node.js运行在浏览器端
  4. CRM中间件里的CSA队列有什么用
  5. k2698场效应管参数电流_mos管特性曲线-电流方程与参数详解
  6. 2020巨量引擎用户旅游全周期行为动机调研报告
  7. MyEclipse 启动之 java.lang.RuntimeException: No application id has been
  8. We Chall-Encodings: URL -Writeup
  9. 基于java的网络电子通讯录的设计_网络电子通讯录管理系统
  10. linux 解压bz2文件
  11. Javascript中五种定义对象的方法
  12. 在CTeX上编码论文《杂谈勾股定理》及论文式样
  13. VMware 8安装Mac OS X 10.7
  14. CSSAPP 稀里糊涂的的读书笔记目录
  15. 卸载landesk的方法
  16. 计算机管理映像路径,windows任务管理器显示映像路径和命令行设置参考
  17. 悲观锁与乐观锁的区别 和 Redis中的watch
  18. echarts模拟迁徙图
  19. Openfire 系统架构
  20. 三极管基极下拉电阻的作用

热门文章

  1. 帆软动态列之数据集实现动态列
  2. mysql 锁_浅谈MySQL的七种锁
  3. python中sorted方法和列表的sort方法使用详解
  4. 怎么将windows上的文件传到Ubuntu
  5. Android-关于屏幕适配的一些经验
  6. 两年内赚到60万美元?走近以色列在线攻击服务vDOS
  7. Android studio: 自 maven 增加一個函式庫
  8. 【转】 测试人员的职业规划 --整理标注
  9. 自适应输出表格(ASP版)
  10. 最大熵模型与EM算法及python实现