HTTP 协议
来源:互联网 发布:欧美搞笑电影 知乎 编辑:程序博客网 时间:2024/06/03 16:32
转自:http://www.jianshu.com/p/4a54ad63e4c2
HTTP 协议详解
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。
HTTP 百度百科
HTTP协议工作流程
Http协议与其他协议一样,也需要以特定的方式进行数据包的封装,并按照一定的流程实现通信交互,而基于HTTP协议的请求/响应模式的信息交互过程可分为四个步骤。
- (1) 客户端与服务器需要建立连接,如:TCP连接
- (2) 连接建立后,客户端向服务器发送一个请求,请求报文由三部分组成:请求行、消息报头、响应内容。
- (3) 服务器接到请求后,解析该请求并返回响应信息,响应报文由三部分组成:状态行、消息头、响应内容。
- (4) 客户端接收服务器所返回的信息并进行解析、处理和显示。
通常,浏览器访问一个页面,需要发出多次请求获取不同的响应内容,在HTTP/1.0版本中默认是传输一次数据就关闭连接,而在HTTP/1.1版本中默认为是持久连接,即一次TCP连接可以完成多次HTTP请求。是否支持持久连接,是由消息报头中的connection字段决定的,如果请求或响应中的connection设置为close,则客户端和服务器的连接为非持久连接。
请求报文和响应的报文结构简介
HTTP协议的请求和响应数据包一般被称为请求报文和响应报文,根据协议标准,请求报文和响应报文是由报文首部、空行和报文主题组成的,而请求报文的首部又由请求行、请求首部字段、通用首部字段、实体首部字段组成,响应报文的首部由状态行、响应首部字段、通用首部字段、实体首部字段组成。结构图请看往下看:
根据以上结构,可以将HTTP协议报文包含的内容分为五类:
- 一、请求行,由请求方法、请求URL、HTTP版本组成;
- 二、是状态行,由HTTP版本、状态码、原因短语组成;
- 三、首部字段,包含了请求首部、响应首部、通用首部、实体首部四种类型,一般有名字和值组成;
- 四、是其他报文首部字段,包含了一些RFC()未定义的首部内容;
- 五、是报文主体,由任意数据组成。
分析下 Laravel 官网的Http协议
这里我们访问 laravel官网 的请求报文和响应报文,来具体分析
(1) 请求行 (火狐可以查看到)
请求行中的请求方法用来描述服务器应该执行的操作,而请求URL指定了操作的资源,HTTP版本用来标识客户端使用的HTTP版本。图中 访问的Laravel网站请求报文的请求方法为“GET”,请求URL为“https://laravel.com/”,HTTP版本位 “HTTP/1.1”。在HTTP规范中定义了一组方法,用于指定服务器的响应动作,如GET方法是指从服务器获取一个文本,具体请求报文头方法及其功能描述见下表:
HTTP请求报文方法及其功能
(2) 状态行
状态行包含响应报文服务器使用的HTTTP版本、数字状态码和原因短语,对于图响应报文的状态行,其中HTTP版本为“HTTP/1.1”,数字状态码位 “200”,原因短语“OK”。HTTP的状态共分为五大类,用于描述返回的响应结果。实际HTTP规范中定义的状态码有十几种,比较具有代表性的状态码及含义如下:
HTTP响应报文状态码及其含义
典型状态码
(3) 首部字段
首部字段是构成HTTP报文的基本要素之一,这部分包含的信息也是最为丰富,主要用于规定客户端和服务端在处理请求和响应时的操做。通常,根据首部字段的用途可以分为四类:
- 通用首部字段
- 请求首部字段
- 响应首部字段
- 实体首部字段
首部字段通常由字段名和字段值构成,中间通过“:”分隔。下面简要介绍下四类字段的作用和部分首部字段含义。
通用首部字段
通用首部字段一般用来提供HTTP报文的最基本信息,这些信息无论是请求报文还是响应报文都可以使用,主要用于描述HTTP协议本身。比如描述HTTP是否支持久连接的Connetion 字段、HTTP发送日期的Date字段、用于缓存控制的Cache-Control 字段等。下面列出了通用首部字段及含义:
请求首部字段
请求首部字段一般用于HTTP请求报文中,主要描述客户端的版本、处理能力等信息,用于帮助服务器更好的地提供请求响应字段,如告诉服务器只接收某种响应内容的Accept字段、发送Cookies的Cookie字段等。下面列出的是常用的请求首部字段及含义:
HTTP 报文请求首部字段及含义
响应首部字段
响应首部字段是描述HTTP 响应本身的字段,一般用于HTTP响应报文中,主要用于描述响应主机的信息、功能等,通过响应首部字段有助于客户端处理响应,并在将来发出更适合服务器的请求,如定时刷新的Refresh头、设置Cookie的Set-Cookie头等。下面列出常用的响应首部字段及含义:
实体首部字段
实体首部字段用于描述HTTP报文体数据字段。由于报文主体可以存在于请求报文和响应报文中,所以这种类型首部字段可以应用在这两种类型的报文中。实体首部字段用于描述主体内容的元信息,包括实体信息类型、长度、压缩方法、最后一次修改时间、数据有效性等,以便告诉接收者如何进行处理,如Content-Language 用于描述报文主体的语言等。下面列出常用的实体首部字段及含义:
HTTP协议作为应用层协议离不开TCP/IP协议的支持!
- HTTP协议
- http协议
- HTTP协议
- HTTP协议
- HTTP协议
- http协议
- HTTP协议
- HTTP协议
- HTTP协议。。。
- HTTP协议
- HTTP协议
- HTTP协议
- HTTP协议
- HTTP协议
- http协议
- HTTP协议
- http协议
- HTTP协议
- FreeSWITCH(一)
- JAVA八大排序算法
- watch命令
- 数据结构学习 65页 P1
- java实现 微博登录、微信登录、qq登录实现代码
- HTTP 协议
- matlab 的使用
- 概览屏幕(最新动态屏幕、最近任务列表)
- Key Points about ActiveSupport::Concern
- MATLAB中的sort函数
- Python Web部署方式
- word review
- I. Implementing Enterprise Integration Patterns
- 如何在MFC中使用cout和printf,输出到控制台