HTTP协议详解

目录

  • 概述
  • 特点
  • HTTP URL 详解
  • HTTP Request 请求
  • HTTP Response 响应
  • HTTP 状态码
  • HTTP 工作流程

概述
HTTP是HyperText Transfer Protocol(超文本传输协议)的缩写,是互联网上面应用最为广泛的的一种网络协议。HTTP是一个基于TCP/IP协议的客户端和服务器端请求和应答的标准。客户端一般是本地浏览器。

HTTP是一个工作在应用层的面向对象协议,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送请求。服务器根据接收到客户端请求后,根据URL传递的信息,对应向客户端发送响应的信息。

特点
简单快速,浏览器向服务器发送请求的时候,一般情况下,只需要传递请求方法和路径,例如常用的POST、GET请求。因为这种简单的特点,使得HTTP服务器的压力也会比较小。保证了双方通信的及时快速。
灵活,HTTP几乎支持传递所有类型的数据对象。如文字、图像、音频、视频等。传输的具体对象标识在Header的参数Content-Type中。
无连接,这一点相信有过HTTP通信开发的人员都能够感受到,HTTP限制每次链接只处理一个请求。服务器处理完该请求并接受到客户端的应答后,才能接受第二次请求。
无状态,表示处理本次的请求对之前的请求没有记忆能了,保证每个请求事务的完整性。后续处理如果要和之前关联,必须携带上之前的参数供服务器判断,这点可能导致每次传送的链接数据量增大,如果每次都是单独的业务操作,服务器的应答就会很快。
支持浏览器/服务端(B/S)、客户端/浏览器(C/S)。


HTTP URL 详解
URL(Uniform Resource Locator)统一资源定位符,是一个HTTP通信中一个比较直接被用户接触到的东西,也是一个很重要的组成部分。其依托于URI(UniformResource Identifiers)统一资源标识符,来传输和建立连接。URL是一种特殊的URI,它更为细化的定位到了某个资源。下面通过一个完整的URL来分析这个里面包含的信息。
https://www.hehehe.com:8080/he/index.php?user=123424#openDialog=1
协议:上面URL使用到的协议是“https:”,代表该网站是使用的HTTP协议。在Internet中,还有其他协议,如HTTP协议,文件传输用到的FTP协议。这些协议后面使用“//”作为分隔符。
域名:上面URL的域名就是“www.hehehe.com”。一个URL可以使用域名,也可以直接使用域名所解析到的IP访问。
端口:跟在域名后面的就是端口,上面的8080就是端口,域名和端口之间通过“:”来分开,端口不是必须的,缺省状况默认的端口是80,在服务器上,每一个对外提供服务的应用程序都有端口。常用的MySQL是3306,Apache是80。FTP为22等。
虚拟目录:域名部分后面第一个“/”到最后一个“/”为止,是虚拟目录的部分,虚拟目录也不是URL的必须的部分。如“www.baidu.com”也可以直接访问百度,上面的URL中"/he/"就是一个虚拟目录。
文件部分:URL中从最后一个“/”到“?”中间的部分就是文件,如果没有“?”,就是到“#”。如上面的“index.php”就是一个文件。
参数部分:从“?”到“#”的部分,上面的“user=123424”就是参数。
锚部分:从“#”到最后都是锚部分,上面的“openDialog=1”就是锚部分。


HTTP Request请求
在概述中我们说到了,一次完整的HTTP请求,需要有客户端发起请求以及服务端相应请求的操作。Request就是客户端发起的请求。
HTTP请求的类型有以下一些,主要用到的就是GET和POST两种。GET用户快速传递简单的,较小的参数。POST用于传输较大的复杂的数据类型。

 

一个HTTP Request主要包含以下几个部分。
请求行(Request Line),请求行以一个方法头部开头,然后紧跟一个空行,后面跟着URI和协议的版本。
请求头部(Request Header),头部里面包含一些基本属性,如指向的具体主机信息、请求的发起参数类型、访问请求的客户端信息、一些授权信息等。
空行,介于请求头部与请求主体之间,必须要有。
请求主体(Request Body),在GET请求中,请求的参数是和头部一起的,在POST请求中,请求主体是单独存在的。


HTTP Response响应
在服务器接受到HTTP的请求后,一般要给出一个响应消息。响应消息也是由四部分组成,大体和请求消息类似。

状态行,由HTTP版本号,状态码,状态消息三部分组成

消息报头,用来标识一些附加信息,如上图中的第二行和第三行。标识了一些时间,页面字符编码信息。
空行,上面的第四行,也是必须的。
响应正文,空行后面的HTML信息就是正文。


HTTP 状态码
状态码就是访问服务器,服务器给出的返回提醒,大体上讲状态码,可以看到这些信息。

1XX:表示请求接受,正在处理。
2XX:表示处理成功,请求被接受、理解、接受。
3XX:表示重定向,完成请求需要更进一步的操作。
4XX:客户端请求不正确,请求被中断或者服务器找不到资源。
5XX:服务器内部错误,无法完成请求。


HTTP 工作流程
 下面介绍一个一次完整的HTTP请求会经历那些过程:

客户端连接到HTTP服务器。
客户端发送HTTP Request请求。
服务器接受请求并返回HTTP响应。
两端释放TCP连接。
浏览器获取到Response的内容渲染到页面供用户浏览。

来自微信公众号:编程社

程序员日常进阶宝典,欢迎关注!

posted on 2019-09-08 22:44  黑夜开发者  阅读(307)  评论(0编辑  收藏  举报