什么是HTTP.

来源:互联网 发布:手机架子鼓中文软件 编辑:程序博客网 时间:2024/06/17 05:04
超文本传输协议(http)
简单说就是浏览网页使用的协议,目前使用1.1版本。
HTTP是一个基于TCP客户端和服务器请求与应答的协议,
由客户端发起请求到指定端口(80)建立TCP连接。服务器
则返回状态行,比如"HTTP/1.1 200 OK",和响应的消息,之所以使用TCP是因为打开一个页面需要很多数据。
而TCP提供较为可靠的服务。


请求方法:
OPTIONS
    返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。
HEAD
    向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
GET
    向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。参见安全方法
POST
    向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT
    向指定资源位置上传其最新内容。
DELETE
    请求服务器删除Request-URI所标识的资源。
TRACE
    回显服务器收到的请求,主要用于测试或诊断。
CONNECT
    HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

持久连接:
在HTTP/0.9和1.0使用非持久连接,在非持久连接下:每个tcp只传递一个web对象,连接在每个请求-响应对后都会关闭,一个连接可被多个请求重复利用的保持连接机制被引入。这种连接持久化显著地减少了请求延迟,因为客户不用在首次请求后再次进行TCP握手建立连接。现在在HTTP/1.1使用持久连接,不必为每个web对象创建一个新的连接,一个连接可以传送多个对象。 HTTP1.1还进行了带宽优化,例如1.1引入了chunked transfer encoding(分块传输编码)来允许stream化传输持久连接上发送的内容,取代原先的buffer式传输。HTTP管道允许客户在上一个响应被收到前发送多重请求从而进一步减少了延迟时间。 另一项协议的改进是byte serving(字节服务),允许服务器根据客户的请求仅仅传输资源的一部分。

使用实例1:
root@ubuntu:~$ telnet www.google.com 80        //telnet google
Trying 74.125.128.147...
Connected to www.l.google.com.
Escape character is '^]'.
GET /                 // input GET /
HTTP/1.0 302 Found
Location: http://www.google.com.hk/url?sa=p&hl=zh-CN&pref=hkredirect&pval=yes&q=http://www.google.com.hk/&ust=1333965522986955&usg=AFQjCNEuHJvaFsJU2Bjf6f00lD472BsXNA
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Set-Cookie: PREF=ID=36aa6038e932cb4a:FF=0:NW=1:TM=1333965492:LM=1333965492:S=TBp3_Q34hAK6UDs0; expires=Wed, 09-Apr-2014 09:58:12 GMT; path=/; domain=.google.com
Date: Mon, 09 Apr 2012 09:58:12 GMT
Server: gws              //get server type
Content-Length: 376
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com.hk/url?sa=p&amp;hl=zh-CN&amp;pref=hkredirect&amp;pval=yes&amp;q=http://www.google.com.hk/&amp;ust=1333965522986955&amp;usg=AFQjCNEuHJvaFsJU2Bjf6f00lD472BsXNA">here</A>.
</BODY></HTML>
Connection closed by foreign host.

使用实例2(获取网页源代码):

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import urllib

urllib.urlretrieve('http://www.python.org','/home/root/Desktop/web.html')
a=open('/home/root/Desktop/web.html')
for i in a:
    print i

PS:
URL(统一资源定位符):
使用ASCII代码的一部分来表示因特网的地址.
标准格式:
协议类型://服务器地址(必要时需加上端口号)/路径/文件名
如:http://www.python.org
http为服务类型www.python.org为服务器地址,无端口号,路径和文件名为主页

                                                   ---来自维基百科