HTTP协议 | 青训营

142 阅读5分钟

HTTP协议

1、基本概念

HTTP是超文本传输协议(hypertext transfer protocol),它是TCP/IP协议的一个应用层协议,用于定义web浏览器与web服务器之间交换数据的过程。客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯规则,HTTP协议用于定义客户端与web服务器通讯的规则。

因此,通过规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。客户端发送给服务器的格式叫“请求协议”;服务器发送给客户端的格式叫“响应协议”。

2、基本特点
  1. 基于请求和响应:客户端向http服务器发起一次请求,服务器对请求做出响应;
  2. 无连接:在应用层无连接,限制每次连接只处理一次请求,也就是说客户发起请求,服务器做出响应,连接即终止。因为若采用长时间连接的方式,大部分的网络资源就会被空闲下来,造成浪费;
  3. 无状态:http协议没有记忆能力,一次请求完毕后并不会将数据保存下来;
  4. 简单灵活、快速:协议简单、通信速度快,且允许传输任意类型的数据,类型由报文头部的Content-Type指出。
3、工作原理

HTTP协议定义web客户端如何从web服务器请求web页面,以及服务器如何把web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。(请求/响应的步骤如下)

  1. 客户端连接到web服务器:HTTP客户端通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,www.baidu.com
  2. 发送HTTP请求:通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据四部分组成;
  3. 服务器接受请求并返回HTTP响应:Web服务器解析请求,定位请求资源。服务器将资源副本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据四部分组成;
  4. 释放连接TCP连接:若connection模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection模式为keepalive,则连接会保持一段时间,在该时间内可以继续接收请求;
  5. 客户端浏览器解析HTML内容:客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取相应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
4、http请求方法
  • GET -> 向指定的资源发出“显示”请求,即请求指定的页面信息,并返回实体主体。
  • HEAD -> 与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。好处在于使用此方法可以在不必传输全部内容的情况下就可获取“关于该资源的信息”。
  • POST -> 向指定资源提交数据,请求服务器进行处理(例如提交表单、上传文件)。数据被包含在请求本文中,这个请求可能会创建新的资源或修改现有资源等。
  • PUT -> 向指定资源位置上传其最新内容。
  • DELETE -> 请求服务器删除Request-URI所标识的资源。
  • TRACE -> 回显服务器收到的请求,用于测试或诊断。
  • OPTIONS -> 可使服务器传回该资源所支持的所有HTTP请求方法。
  • CONNECT -> HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器,通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。
5、http状态码

所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,用空格分隔。

状态码.jpg

6、URL

URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息,格式为http://host[":"port][abs_path] ;http表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指定一个端口号,为空则使用缺省端口80;abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。

7、HTTP请求格式(请求协议)

1.1.jpg

1.2.jpg

8、HTTP响应格式(响应协议)

2.1.jpg

2.2.jpg

学习思考

随着互联网的快速发展,HTTP协议作为网络通信的基本协议之一,其未来发展备受关注。HTTP具有简单易懂、支持多路复用的优点,但也存在部分安全问题和性能问题。在日益复杂的网络环境和应用需求下,我认为HTTP协议面临着安全性提高、性能提升、实时通信等技术挑战。相信未来HTTP协议会引入更高效、更安全、更智能的技术,实现更优质的互联网体验。