理解HTTP协议原理--http学习笔记整理

关于http协议在之前的计算机网络课程中就已经接触过了,后续也有再学习理解相关的知识,但是最近发现自己对http的理解还是很碎片化的,没有整理成一个体系,所以现在想整体回顾一下。

http协议是什么

HTTP协议全称为HyperText Transfer Protocol,即超文本传输协议,它是应用层的一个很重要的协议,也是目前应用最广泛的一种网络协议,所有的WWW文件都必须遵守这个标准进行数据的网络传输。
HTTP从本质上来说就是用于规定客户端和浏览器之间传输规则的协议。理解HTTP协议原理--http学习笔记整理

http协议的特点

  1. 基于TCP/IP协议
    HTTP协议目的是规定客户端和服务端数据传输的格式和数据交互行为,并不负责数据传输的细节。底层是基于TCP实现的。
    服务器在80端口等待客户的请求,
    浏览器发起到服务器的TCP连接,
    服务器接接受来自浏览器的TCP连接,
    浏览器(HTTP客户端)与Web服务器(HTTP服务器)交换HTTP信息,
    关闭TCP连接。
    (关于TCP/IP的知识也会在后面的文章进行总结)
  2. 无状态
    HTTP是一个无状态的协议,服务器不维护任何有关客户端过去所发送请求的信息,也就是说它没有记忆。
    HTTP采用无状态的协议也是一个妥协,因为有状态的协议要更复杂,一是要维护状态(历史信息);二是如果客户或服务器失效,则会产生状态的不一致,解决这种不一致的代价比较高。
  3. 多次请求
    在客户端请求网页时多数情况下并不是一次请求就能成功的,服务端首先是响应HTML页面,然后浏览器收到响应之后发现HTML页面还引用了其他的资源,例如,CSS,JS文件,图片等等,还会自动发送HTTP请求这些需要的资源。现在的HTTP版本支持管道机制,可以同时请求和响应多个请求,大大提高了效率。

http连接的过程

http连接的两种类型

非持久性连接

每个TCP连接最多允许传输一个对象
HTTP1.0 版本使用非持久性连接

持久性连接

每个TCP连接允许传输多个对象
HTTP1.1版本默认使用持续性连接

http消息格式

请求报文

请求方法

(内容来自MDN)
GET
GET方法请求一个指定资源的表示形式. 使用GET的请求应该只被用于获取数据.
HEAD
HEAD方法请求一个与GET请求的响应相同的响应,但没有响应体.
POST
POST方法用于将实体提交到指定的资源,通常导致状态或服务器上的副作用的更改.
PUT
PUT方法用请求有效载荷替换目标资源的所有当前表示。
DELETE
DELETE方法删除指定的资源。

响应报文

响应状态码

理解HTTP协议原理--http学习笔记整理常见http响应状态码
200 OK
204 空内容
301 永久重定向
307 临时重定向
400 语法或参数错误
403 服务器拒绝请求
404 NOT FOUND
500 服务器内部错误
502 无效网关

http缓存

参考资料:
《图解HTTP》
阮一峰 HTTP协议入门
简书-编程小翁 http in iOS