首页 > 代码库 > Apache的功能和网站基础知识

Apache的功能和网站基础知识

MIME

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

它是一个互联网标准,扩展了电子邮件标准,使其能够支持:

非ASCII(美国标准信息交换代码))字符文本;非文本格式附件(二进制、声音、图像等);由多部分(multiple parts)组成的消息体;包含非ASCII字符的头信息(Header information)

这个标准被定义在RFC 2045(是一系列以编号排定的文件)、RFC 2046、RFC 2047、RFC 2048、RFC 2049等RFC中。 MIME改善了由RFC 822转变而来的RFC 2822,这些旧标准规定电子邮件标准并不允许在邮件消息中使用7位ASCII字符集以外的字符。正因如此,一些非英语字符消息和二进制文件,图像,声音等非文字消息原本都不能在电子邮件中传输(MIME可以)。MIME规定了用于表示各种各样的数据类型的符号化方法。 此外,在万维网中使用的HTTP协议中也使用了MIME的框架,标准被扩展为互联网媒体类型。

技术分享

详细解析:http://baike.baidu.com/link?url=pQ60_SlMcfRuAZDxif-chNTsF7yHh03qP2SBSqQ6L7CQVE8mQY3g1zJ57pCcuzFDLvgIYqgdKnkHr2vwmu5RhK

HTTP的请求方法:

根据HTTP标准,HTTP请求可以使用多种请求方法。

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

技术分享

注意:

1) 方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not Implemented)。

2) HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法

详解:http://tools.jb51.net/table/http_request_method

HTTP 消息结构

客户端请求消息

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。

技术分享

服务器响应消息

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

技术分享

实例

下面实例是一点典型的使用GET来传递数据的实例:

客户端请求:

技术分享

服务端响应:

技术分享

输出结果:

技术分享

HTTP 简介

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

HTTP 工作原理

HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。

Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTP默认端口号为80,但是你也可以改为8080或者其他端口。

HTTP三点注意事项:

· HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

· HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。

· HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

以下图表展示了HTTP协议通信流程:

技术分享

HTTP返回状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

HTTP状态码的英文为HTTP Status Code。

下面是常见的HTTP状态码:

· 200 - 请求成功

· 301 - 资源(网页等)被永久转移到其它URL

· 404 - 请求的资源(网页等)不存在

· 500 - 内部服务器错误

HTTP状态码分类

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:

HTTP状态码分类

技术分享

详解:http://tools.jb51.net/table/http_status_code

SSL与HTTPS(SSL+HTTP

SSL简介

1)简介

SSL (Secure Socket Layer)为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。

2)SSL提供的服务

a.认证用户和服务器,确保数据发送到正确的客户机和服务器

b.加密数据以防止数据中途被窃取

c.维护数据的完整性,确保数据在传输过程中不被改变。

3) SSL协议的握手过程

技术分享

HTTPS概念

1)简介

        HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

      2)HTTPS和HTTP的区别

a. https协议需要到ca申请证书,一般免费证书很少,需要交费。

b. http是超文本传输协议,信息是明文传输;https 则是具有安全性的ssl加密传输协议。

c. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

d. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

      3)HTTPS的作用

它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

a. 一般意义上的https,就是服务器有一个证书。主要目的是保证服务器就是他声称的服务器,这个跟第一点一样;服务端和客户端之间的所有通讯,都是加密的。

b. 具体讲,是客户端产生一个对称的密钥,通过服务器的证书来交换密钥,即一般意义上的握手过程。

c. 接下来所有的信息往来就都是加密的。第三方即使截获,也没有任何意义,因为他没有密钥,当然篡改也就没有什么意义了。

d.少许对客户端有要求的情况下,会要求客户端也必须有一个证书。

这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码,还有一个CA 认证过的身份。因为个人证书一般来说是别人无法模拟的,所有这样能够更深的确认自己的身份。目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘(即U盾)作为一个备份的载体。

http实现的原理:

1)对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等;

2)非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。

https的通信过程

技术分享

详解:http://blog.163.com/magicc_love/blog/static/185853662201321423527263/

http://blog.csdn.net/zmx729618/article/details/51372659

WEB服务器的工作模式:

1. C/S(client/server)模式:

1.1两层结构C/S模式

事务处理逻辑单元在客户端实现,客户为“胖客户”,服务器为“瘦服务器”。

任何一个C/S应用系统都由显示逻辑部分(表示层)、事务处理逻辑部分(功能层)和数据处理逻辑部分(数据层)三部分组成。表示层的功能是实现与用户的交互,功能层的功能是进行具体的运算和数据的处理,数据层的功能是实现对数据库中的数据进行查询、修改、更新等任务。

两层结构C/S模式中,显示逻辑和事务处理逻辑部分均被放在客户端,数据处理逻辑和数据库放在服务器端,从而使客户端变得很“胖”,成为胖客户机,相对服务器端的任务较轻,成为瘦服务器. 两层C/S的结构如图1-1所示。

技术分享

这种传统的两层体系结构比较适合于小规模的、用户较少、单一数据库且有安全。这种传统的两层体系结构比较适合于小规模的、用户较少、单一数据库且有安全性性和快速性保障的局域网环境下运行。

1.2三层结构C/S模式

三层C/S结构对表示层、功能层和数据层三部分进行了明确分割,并在逻辑上使其独立。显示逻辑放在客户端,事务处理逻辑作为事务处理服务器放在功能层,数据处理逻辑和数据库放在服务器端,由于事务处理逻辑单元在专门的事务处理服务器中实现,所以客户机的任务大大减轻,成为“瘦客户”。三层C/S的结构如图1-2所示。

技术分享

2.B/S模式

B/S(Browser/Server)模式是一种以Web技术为基础的新型网络管理信息系统平台模式。B/S是一种三层体系结构,在这种结构下,表示层、功能层、数据层被分割成三个相对独立的单元:Web浏览器、具有应用程序扩展功能的Web服务器和数据库服务器。

三层的B/S体系结构是将两层C/S结构的事务处理逻辑模块从客户机的任务中分离出来,由单独组成的一层来负担其任务,将负荷均衡地分配给了Web服务器,这样客户机的压力大大减轻了,这种B/S三层体系结构如图1-3所示。

技术分享

web服务器的动静分离

动静分离是将网站静态资源(html,css,js,img).与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。

静态资源如何部署:

我们需要一个公共的地方来存放我们的html–Web服务器(Web容器,Web站点).很好,于是我就找到了 nginx node tomcat 阿帕奇 winsever 等等都可以作为服务器.最后还是选择了nginx(要纯就纯干净点),之前用的node,不过node在一定意义上算是server端了。我们的目的是实现动静分离,如果业务需要,可以用node服务器写一些后端的业务逻辑代码。Nginx作为静态服务器是最佳的选择。也就是我们的应用服务器.这里对nginx就不多余的介绍了

前端开发(单页应用 Angular React Vue):

单页面应用,就是整站就一个index.html.url路由,前端状态管理都给了jser来操作。

后端开发(RestFul+json):

后端应用提供API,根据前端的请求进行处理,并将处理结果通过JSON格式返回至前端。

跨域处理:

动静分离因为静态资源和应用服务分别部署在不同的服务器上,因此会面临域名策略的选择。相同域名和不同域名。

详解:http://www.tuicool.com/articles/vUbIRfM

CGI

一.基本原理

CGI:通用网关接口(Common Gateway Interface)是一个 Web 服务器主机提供信息服

务的标准接口。 通过CGI 接口,Web 服务器就能够获取客户端提交的信息,转交给服务器端的CGI 程序进行处理,最后返回结果给客户端。

组成 CGI 通信系统的是两部分:一部分是 html 页面,就是在用户端浏览器上显示的页面。另一部分则是运行在服务器上的 Cgi 程序。

它们之间的通讯方式如下图:

技术分享

详解:http://wenku.baidu.com/link?url=i-bW1yCFMWeG-x_pNNzYPTsmwpb8O2TK-MEimW1uagquljXwBG8bOcV2DkmBNo2NmEip5ZbzYs_ZrU8m4IqX2XbdmfTftx7k0N2_7RRoKWG

Apache的功能和网站基础知识