`
zzg
  • 浏览: 122735 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Http协议浅析

    博客分类:
  • Http
阅读更多
HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。

通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。

1.http请求(Method Request-URI HTTP-Version CRLF)
请求行
GET/form.html http/1.1(crlf)
POST
HEAD(消息报头)


POST /reg.jsp http/1.1(crlf)
消息报头
(crlf)回车换行
form数据


典型的请求消息:
GET http://download.microtool.de:80/somedata.exe

Host:download.microtool.de

Accept:*/*

Pragma:no-cache

Cache-Control:no-cache

Referer:http://download.microtool.de/

User-Agent:Mozilla/4.04[en](Win95;I;Nav)

Range:bytes=554554-

2.http响应(HTTP-Version Status-Code Reason-Phrase CRLF)
状态行,消息报头,(ctlf)响应正文

典型的响应消息:

HTTP/1.0200OK

Date:Mon,31Dec200104:25:57GMT

Server:Apache/1.3.14(Unix)

Content-type:text/html

Last-modified:Tue,17Apr200106:46:28GMT

Etag:"a030f020ac7c01:1e9f"

Content-length:39725426

Content-range:bytes554554-40279979/40279980



HTTP/1.1 200 OK (CRLF)

1xx:信息响应类,表示接收到请求并且继续处理

2xx:处理成功响应类,表示动作被成功接收、理解和接受

3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理

4xx:客户端错误,客户请求包含语法错误或者是不能正确执行

5xx:服务端错误,服务器不能正确执行一个正确的请求


3.消息报头()
分类:普通报头、请求报头,响应报头,实体报头
名字+“:”+空格+值

普通报头:Cache-Control:no-cache
      Pragma:no-cache
      response.setHeader
请求报头:accept:image/gif text/html
      Accept-Charset:gb2312
      Accept-Encoding:gzip
      Accept-Language:zh_cn
      Authorization(401)
      Host:www.sunxin.org:8080
      User-Agent
响应报头:Location:http://www.sunxin.org
      Server:Apache-Coy
      www-authenticate:basic realm="basic auth test!"
实体报头:Content-Encoding:gzip
      Content-Language:da
      Content-Length:
      Content-Type:text/html;charset=iso-8859-1
      last-Modified:
      Expires:过期时间日期
      response.setDateHeader("Expires",0);浏览器不要缓存页面。
------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
HTTP报文共有两种通用类型:请求报文,响应报文。
     (1)请求报文:包括请求行、首部,以及有时出现的主体。如图   

请求行

 首部

 空行

 主体
(只在某些报文中出现)

     请求行:包括请求类型、空格、URL、空格以及HTTP版本。

请求类型
  (方法)


URL


HTTP版本

           请求类型:此字段定义了几种不同方法的报文。
     常用的几种方法:
     1:GET:客户要从服务器读取文档时使用。
     2:HEAD:当客户想得到关于文档的某些信息但并不是要这个文档时使用。
     3:POST:当客户要给服务器提供某些信息时使用。

     4:PUT:当客户将新的或更换的文档存储在服务器上时使用。
     5:PATCH:和PUT相似,只不过这个请求只包含必须在现有文件中出现的差异清单。
     6:COPY:当需要将文件复制到另一个位置时使用。
     7:MOVE:当需要将文件移到另一个位置时使用。
     8:DELETE:当需要将服务器上的文档移走时使用。
     9:LINK:当需要创建从一个文档到另一个位置的链接时使用。
     10:UNLINK:当需要删除由LINK方法创建的链接时使用。
     11:OPTION:当客户向服务器询问到一些可用的选项时使用。
     统一资源定位符(URL):4要素:方法、主机、端口、路径

URL

  方法 ://主机 :端口 / 路径

     方法:用来读取文档的协议。
     主机:放置信息的计算机。计算机常使用”WWW”开始的别名。
     端口:服务器的端口号,可选。
     路径:放置文件的路径名。
     (2)响应报文:包括状态行、首部、有时包括主体。

状态行

 首部

 空行

 主体
(只在某些报文中出现)

     状态行:包括HTTP版本、空格、状态码、空格、状态短语。

HTTP版本


状态码


状态短语

     状态码:
         100系列:提供信息的;
         200系列:指示成功的请求;
         300系列:把客户重定向到另一个URL;
         400系列:指示客户端差错;
         500系列:指示服务器端差错。
     状态短语:用来解释状态码。

OPTIONS

允许客户端查看服务器的性能

TRACE

  用于测试,允许客户端查看消息的回收过程

分享到:
评论

相关推荐

    HTTP协议浅析-Request&Response.doc

    HTTP协议(Hypertext Transfer Protocol――超文本传输协议)浏览器端(客户端)向WEB服务器端访问页面的过程和HTTP协议报文的格式。 基于HTTP协议的客户机访问包括4个过程,分别是 建立TCP套接字连接 发送HTTP...

    使用HTTP协议实现通信

    HTTP协议浅析(下): 使用HTTP协议实现通信,相关教程:http://blog.csdn.net/tennysonsky/article/details/53909564

    浅析http协议、cookies和session机制、浏览器缓存.docx

    浅析http协议、cookies和session机制、浏览器缓存.docx

    HTTP协议/IIS 原理及ASP.NET运行机制浅析【图解】

    HTTP协议是浏览器和服务器双方共同遵循的规范.是一种基于TCP/IP(传输层协议,相对应的有UDP)的"应用层协议" PS:TCP/UDP是广泛使用的网络通信协议,UDP协议具有不可靠性和不安全性, 相对来说TCP协议是基于连接和三次...

    netty5 HTTP协议栈浅析与实践

    NULL 博文链接:https://baobeituping.iteye.com/blog/2398076

    浅析HTTP协议

    HTTP协议 HTTP请求: HTTP响应: 会话与会话状态: Cookie Session Cookie和Session的区别 HTTP协议  HTTP请求: Post /test.php HTTP/1.1 //请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的...

    HTML5实现WebSocket协议原理浅析

    通常来说从HTTP协议切换WebSocket称为WebSocket握手。 浏览器发送一个请求到服务器,这表明它想开关从HTTP WebSocket协议。客户端通过升级标题表达的愿望,代码如下所示: 复制代码代码如下:GET ws://echo.websocket....

    HTTP协议/IIS原理及ASP.NET运行机制浅析【图解】

    前一段在整理邮件的时候发现几年前和CDD老师交流时的一份邮件.下面是简单摘要:“从技术角度来说,无论哪一个阵营,跟新技术都是不可避免的,也是很累的,当然作为一个程序员来说,也是必须的。要想让技术的更新对...

    浅谈soap协议

    本文对 SOAP 作了一个初步介绍,给出几个简单示例;接着比较 CORBA,DCOM/COM 与 SOAP 的联系与区别;然后浅析 SOAP 简单的理解为 RPC+HTTP+XML 时的运行机制;最后展现 SOAP 的前景。

    大型分布式网站架构设计与实践.带目录书签.完整版.rar

    曾在程序员上发表过《漫谈基于http协议的SOA架构》《浅析HTTP平台的安全稳定性架构》两篇文章,对基于HTTP协议的SOA架构有深入研究,在排查解决线上问题和故障方面有丰富的实践经验,擅于利用数据分析解决实际问题,...

    浅析PHP Socket技术

    phpsocketSocket位于TCP/IP协议的传输控制协议,提供客户-服务器模式的异步通信,即客户向服务器发出服务请求,服务器接收到请求后,提供相应的反馈或服务!我练习了一个最基本的例子: 使用并发起一个阻塞式(block...

    性能基础之常见RPC框架浅析

    在性能基础之浅谈常见接口性能压测一文中我们有简单介绍常见的RPC接口,本文将单篇详细介绍RPC框架。RPC(RemoteProcedureCall)—远程过程调用,它是一种...使用HTTP请求当然可以,但是可能会比较慢而且一些优化做的并

    python网络应用开发知识点浅析

    就像我们可以用HTTP(超文本传输协议)来访问一个网站一样,发送邮件要使用SMTP(简单邮件传输协议),SMTP也是一个建立在TCP(传输控制协议)提供的可靠数据传输服务的基础上的应用级协议,它规定了邮件的发送者...

    浅析JSONP之解决ajax跨域问题

    它是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。  JSONP就像是JSON+Padding一样(Padding这里我们理解为填充),...

    js跨域问题浅析及解决方法优缺点对比

    概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。 代码如下: URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js ...

    浅析Node在构建超媒体API中的作用

    无论是超媒体还是超文本,使用的传输协议都是HTTP,这意味着超媒体可以被所有的浏览器所接受。而描述超媒体的类型我们使用MIME。MIME即Multipurpose Internet Mail Extensions,多用途互联网邮件扩展类型,MIME是一...

    go开发实战.doc

    结合视频效果更好 ... 1. 初识Go语言 1 1.1 Go语言介绍 1 1.1.1 Go语言是什么 1 1.1.2 Go语言优势 1 ...1.1.3 Go适合用来做什么 2 ...12.1.1 网络协议 119 ...12.3.2 HTTP报文浅析 128 12.3.3 HTTP编程 134

    asp.net知识库

    ASP.NET 2.0 异步页面原理浅析 [1] [原] 自定义通用System.Web.UI.IHierarchicalDataSource简单实现 在 ASP.NET 2.0 中创建 Web 应用程序主题 ASP.NET 2.0 中的数据访问 ASP.NET 2.0:弃用 DataGrid 吧,有新的网格...

Global site tag (gtag.js) - Google Analytics