HTTP协议详解(一) – HTTP简单介绍

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。它于1990年被提出,经过多年的使用与发展,不断地完善和扩展,目前在WWW中使用的是HTTP/1.0的第六版。

HTTP和TCP/IP协议栈

HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。HTTP默认的端口号为80,HTTPS的端口号为443。
在这里插入图片描述
浏览网页是HTTP的主要应用,但是这并不代表HTTP就只能应用于网页的浏览。HTTP是一种协议,只要通信的双方都遵守这个协议,HTTP就能有用武之地。比如咱们常用的QQ,迅雷这些软件,都会使用HTTP协议(当然也包括其他的协议)。

HTTP协议特点

那么HTTP协议都有哪些特点呢?
第一, 支持客户/服务器模式。
第二, 简单快速。客户端向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户端与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
第三, 灵活性。HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
第四, 无连接。限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间。
第五, 无状态。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就比较快。

HTTP请求与响应

HTTP是一种客户端请求、服务器应答式的应用层传输协议。也就是说服务器端是不可能主动向客户端发送数据的,就好像“你去找度娘,而不是度娘来找你”,这也说明了在网络正常的情况下请求和响应都是一一对应的,而这个请求和响应也就是后端开发人员经常看到的Request和Response。
在这里插入图片描述

这个时候你可能会反驳说,我平时上网有时候并没有点击过页面上的任何内容,也会弹出黄色网站之类的页面,其实这个请求是在你进入某个网页后,这个网页的js脚本发送的请求,这也是HTTP的缺点所在。
所以我想说的是这个HTTP请求有时候并不一定是用户自己主动发送的,但一定是用户使用的客户端软件发送的。当然这个客户端软件不仅限于IE,谷歌之类的浏览器,也会是用户机上的客户端应用程序,比如安卓手机上的App软件使用HTTP协议进行数据请求。

HTTP请求 由状态行、请求头、请求正文三部分组成,请求方式一般有GET、POST、PUT、DELETE、HEAD、TRACE、CONNECT、OPTIONS这几种。

方法 说明
GET 请求获取Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加新的数据
PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
HEAD 请求获取由Request-URI所标识的资源的响应消息报头
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

下面是一个POST请求格式,供参考:
在这里插入图片描述

HTTP响应 由状态行、响应头、响应正文三部分组成。
状态行格式如:HTTP-Version Status-Code Reason-Phrase CRLF,其中HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。
我们主要关心并且能够在客户端浏览器看得到其实是三位数的状态码,不同的状态码代表不同的含义:

状态码 含义
1xx 表示HTTP请求已经接受,继续处理请求
2xx 表示HTTP请求已经处理完成
3xx 表示把请求访问的URL重定向到其他目录
4xx 表示客户端出现错误
5xx 表示服务端出现错误

下面是一个HTTP响应的实例,供参考:

在这里插入图片描述
今天就先为大家介绍到这里,接下来一篇将会详细介绍HTTP报文格式,详见下一篇:HTTP协议详解(二) – HTTP的报文格式,敬请期待~

猜你喜欢

转载自blog.csdn.net/kasoftware_test/article/details/86230295
今日推荐