传输协议是后台开发的重点,也是IT面试的重点考察,这次就好好整理一下,温故知新。
一、HTTP简介
HTTP协议是超文本传输协议Hyper Text Transfer Protocol的缩写,用于从万维网服务器传输超文本到本地浏览器的传送协议。。
HTTP基于TCP/IP通信协议来传递数据,所以说,HTTP是TCP/IP的子集。
二、HTTP 工作原理
HTTP建立于客户端-服务端之间,浏览器作为HTTP客户端通过URL向HTTP的WEB服务器发送请求,之后Web服务器接收到请求后,向客户端返回响应信息,是一个无状态的请求响应协议。
HTTP默认端口号为80,HTTPS默认端口号为443。
注意:
- 持久连接:HTTP1.0初始版本中,每进行一次HTTP通信就要断开一个TCP连接。这种非持久连接的缺点在于每次请求都会造成TCP连接建立和断开,增加TCP协议本身的开销。为解决不断建立和断开TCP连接的问题,HTTP1.1实现了持久连接,即在请求头和响应头都有相应的
Connection: Keep-Alive
字段。持久连接的特点是,只要任意一端没有明确提出断开TCP连接,则一直保持TCP连接状态。 - 管线化技术:以前发送请求后需要收到响应,才能发送下一个请求。持久连接意味着可以在一次TCP连接之后发送多个请求,而管线化技术的出现使得每个请求可以异步发送,而不用等待响应了。也就是说,管线化能够做到同时并行发送多个请求,而不需要一个接一个的等待响应了。
- HTTP是无状态:无状态是指协议对于事务处理没有记忆能力,如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答速度也会加快。
- 浏览器显示的内容有 HTML、XML、GIF、Flash 等,浏览器是通过 MIME Type 区分并决定什么内容以什么形式来显示。
HTTP通信流程
三、HTTP消息结构
一个HTTP"客户端"是一个应用程序,通过连接到服务器实现向服务器发送多个HTTP请求的目的。
一个HTTP"服务器"也是一个应用程序,通过接收客户端的请求并向客户端返回HTTP响应数据。
HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。
用户HTTP交互的信息被称为HTTP报文,HTTP报文分为客户端请求报文+服务器响应报文。
客户端请求报文
客户端请求报文整体结构
作用:HTTP来传输交互信息
包括:请求行、请求头部、空行、请求数据
服务器响应报文
服务器响应报文整体结构
包括:状态行、响应头部、空行、响应正文数据。
四、状态码
状态码作用:当访问一个网页时,浏览器会向网页所在服务器发出请求,随后,服务器会响应一个包含HTTP状态码的信息头(server header),浏览器才能访问页面。
状态码分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误
常见状态码
- 200 - 请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 404 - 请求的资源(网页等)不存在
- 500 - 内部服务器错误