详解HTTP协议

Posted ql123456

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解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是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。(我们称这个客户端)叫用户代理(user agent)。应答的服务器上存储着(一些)资源,比如HTML文件和图像。(我们称)这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个中间层,比如代理,网关,或者隧道(tunnels)。尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。

          通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。                                                                             
HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。
通过HTTP或者HTTPS协议请求的资源由统一资源标示符(Uniform Resource Identifiers)(或者,更准确一些,URLs)来标识。

三、协议功能

    HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。
我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。
技术图片
 
    当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。
 
 

四、状态消息

1xx:代表信息;
2xx:代表成功;
3xx:代表重定向;
4xx:代表客户端错误;
5xx:代表服务器错误。

五、版本历史

    超文本传输协议已经演化出了很多版本,它们中的大部分都是向下兼容的。在RFC 2145中描述了HTTP
技术图片
版本号的用法。客户端在请求的开始告诉服务器它采用的协议版本号,而后者则在响应中采用相同或者更早的协议版本。
 
  HTTP0.9     已过时。只接受 GET 一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持 POST 方法,所以客户端无法向服务器传递太多信息。
 
  HTTP/1.0 这是第一个在通讯中指定版本号的HTTP 协议版本,至今仍被广泛采用,特别是在代理服务器中。
 
  HTTP/1.1 当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。
 
  HTTP/1.1相较于 HTTP/1.0 协议的区别主要体现在:
 
       1 缓存处理
       2 带宽优化及网络连接的使用
       3 错误通知的管理
       4 消息在网络中的发送
       5 互联网地址的维护
       6 安全性及完整性

 六、HTTP请求与响应

在进行传输文件的时候,首先会建立连接,这个过程称之为:三次握手,四次挥手

原理

三次握手

技术图片

 

四次挥手

技术图片

 

GET与POSt的区别

GET:从指定的资源获取数据

例如,在百度输入 天天,打开调试工具可以看到请求方式为:GET
技术图片

 

POST:向指定的资源要被处理的数据

进入一个网站,输入用户名及密码时,点击登录按钮则进行的时POST请求,向指定的资源要被处理的数据

技术图片

 

 如果请求成功,那么POST获得数据,进行跳转,否则提示跳转失败。

以上是关于详解HTTP协议的主要内容,如果未能解决你的问题,请参考以下文章

http协议详解

URL&HTTP协议详解

HTTP协议格式详解

Http协议详解

Http协议之详解

HTTP协议详解