Http协议详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Http协议详解相关的知识,希望对你有一定的参考价值。

目录结构:

contents structure [-]

1.什么是Http协议

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。HTTP是一个基于TCP/IP通信协议来传递数据(html 文件, 图片文件, 查询结果等)。

2.Http协议的发展历史

http协议到目前为止,已经经历过了http0.9、http1.0、http1.1和http2。

http 0.9于1991年发布,该版本非常简单,只有Get请求,而且服务器只能返回html格式的字符串,其它格式的不能解析。

http 1.0于1996年5月发布,该版本相比较于0.9增加了许多功能,首先服务器可以返回任何格式的数据,然后除了Get方法,还增加了Post方法和Head方法。

http 1.1于1997年1月发布,在传统的1.0版本中有一个缺点,就是每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接,随着网页资源加载越来越多,这个问题就显得越来越突出了。而http 1.1就解决了这个问题,它引入了持久化连接,及在一个TCP连接中,可以发送多个请求。而且客户端和服务端发现对方一段时间没有活动就会主动关闭连接。1.1任然是目前使用最多的版本。

htttp 2于2015年发布,HTTP/1.1 版的头信息只能是文本(ASCII编码),数据体可以是文本,也可以是二进制。HTTP/2 则是一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为"帧"(frame):头信息帧和数据帧。使用二进制的好处是可以定义额外的帧,为将来的高级应用打下基础。如果使用文本实现这种功能,解析数据将会变得非常麻烦,二进制解析则方便得多。

3.Http的报文结构

http的报文结构是由状态行、头部、空行、主体组成。

3.1客户端请求

如果是客户端请求的话,那么就是请求行、请求头部、空行、请求主体。

技术分享

在这个图中,可以看出请求行的结构是:请求方法 URL 协议版本

例如:

GET /hello.txt HTTP/1.1

如果是GET请求的话,是没有请求数据的。请求数据只有POST才有。

3.2服务端响应消息

如果是服务端响应的话,那么就是响应行、响应头部、空行、响应主体。

技术分享

响应行的结构是:版本 状态码 状态码描述

例如上面的:

HTTP/1.1 200 OK

 

4.请求方法都有那些

根据HTTP标准,HTTP请求可以使用多种请求方法。

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。

5.状态码都有那些

状态码共有五种类型:

1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5**

服务器错误,服务器在处理请求的过程中发生了错误

下面是常见的HTTP状态码:

  • 200 - 请求成功
  • 301 - 资源(网页等)被永久转移到其它URL
  • 404 - 请求的资源(网页等)不存在
  • 500 - 内部服务器错误

6.Http和Https的比较

       1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

  2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

  3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

  4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

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

HTTP协议状态码详解(HTTP Status Code)

HTTP协议状态码详解(HTTP Status Code)

HTTP协议状态码详解(HTTP Status Code)

HTTP 协议详解和版本介绍(HTTP发展历史)

CTFHub-Web-Web前置技能-HTTP协议-响应包源代码详解

[linux] Linux网络编程之HTTP协议详解