linux学习之路之httpd服务

HTTP

HTTP:全称为HyperText  Transfer Protocol(超文本传输协议),是目前互联网使用最多最广泛的一种协议。在早期的HTTP协议版本(http/0.9)中,http服务仅支持二进制(ASCII)的纯文本文件。而在http/0.9以后的版本中,http协议可以支持MIME机制,使得http协议可以支持多种格式的文本文件,例如视频、图像、语音等等。从而丰富了http协议的发展。

什么是MIME?

MIME:全称是Mulitpurpose  Internet  Mail Extension,多用途邮件扩展,MIME是一种协议,早期应用于邮件系统,后来该协议也被应用到了浏览器当中,所以至今我们打开某个网页时,可以出现多种格式的文本信息。MIME的工作机制是将非文本信息在传输前重新编码为文本格式,接收方能够用相反的机制将其还原为原来的格式,并且可以调用相应的程序来打开此文件。


我们在打开某一个页面时,常常看到有图片、视频及文档等信息,我们把这样每一个信息叫做一个资源或者也可以称作一个web对象。多个资源或者web对象就组成了一个html格式的页面。 而我们常常打开浏览器时,在浏览器上面需要输入网址,才可以访问那个页面的资源。这个网址就是我们常说的URL。

URL:全称Uniform  Record  Locator,统一资源定位符,它明确指定了资源所在的位置。

URL的格式为:  protocol://HOST/path/to/file,例如http://www.xsl.com/a.html

有时候我们也会常常看到URI,那么URI是什么呢?它和URL是什么关系?

URI:全称Uniform Record  Indentifier,全局统一资源标识符,它笼统地定义了资源且是全局的,不限于客户端和服务器端。而URL是具体的定义了这个资源的所在位置,URL其实是URI的子对象而已。


但是我们常常在点击某个页面时,浏览器上面显示的不是以.html为后缀的URL,而是以.php为后缀的URL。这是什么原因造成的呢?

这是因为在我们的web服务器上面存的并不是html格式的文件,而是一些脚本文件,当客户端发起请求时,web服务器会调用某个协议来执行这些脚本,这些脚本执行完毕后,就会生成一个html格式的文档,web服务器在将生成的HTML格式的文档返回给客户端。这就是我们为什么看到的是一个html格式的文档,而浏览器上面显示的就是以.php为后缀的URL。而这种脚本文件是通过PHP语言来实现的。而这种机制就是动态网页的实现机制。

对于动态网页来说,既包括静态内容也包括动态内容。

静态内容一般指的是图片等信息,这些静态内容是直接存在服务器是上的。

动态内容需要通过脚本来执行,所以一般的,只有动态内容才会运行脚本,静态内容不会。


在有些时候,我们打开某个网页会很快,但打开其他的页面时会很稍微慢一点,这是为什么呢?

这是在http/1.0以后,由于增加了缓存机制,所以当我们第一次打开某个网页时,web服务器会将这个URL缓存在本地,所以第二次打开网页时明显要比第一次快些。因此,建议大家不要随便清理缓存,这样会导致网页加载速度比较慢哦!


http的报文格式

由于http是基于tcp协议的,所以在建立http会话的过程中,会经历过三次握手和四次断开。因此,当客户端发起时,服务器必须对该请求给予响应。http协议的端口号是80

http报文的请求格式

<method>  <request-URL>  <version>

<headers>    


<entity-body>


http报文的响应格式

<version> <status>  <reason-phrase>

<headers>


<entity-body>

其中<method>表示为请求的方法。一般常用的方法有GET、POST、HEAD、DELETE、PUT等等

<request-URL>表示请求的URL地址

<version>表示http的版本号

<headers>表示http的首部信息

<entity-body>表示的是报文主体

<status>表示的是响应请求报文的状态码

        这些状态码主要有:

            1xx:表示纯信息

            2xx:表示成功类的信息(例如:200、201、202...)

            3xx:表示重定向类的信息(例如301,302...),表示该资源不在此处,重定向到其他服务器或其他位置去了。

            4xx:表示客户端错误类信息(例如404)

            5xx:表示服务器端错误类信息

<reason-phase>:用来描述请求的结果或者理解成用来描述状态码的文本信息。



本文出自 “linux学习之路” 博客,谢绝转载!

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。