HTTP协议 | 青训营

72 阅读5分钟

今天上课《HTTP 协议》,以下是关于本次课程的重点和笔记。

一、 初识HTTP

1. 什么是HTTP协议:
  • Hyper Text Transfer Protocol超文本传输协议
  • 应用层协议,基于TCP协议
  • 请求 响应
  • 简单可扩展
  • 无状态

HTTP(Hypertext Transfer Protocol)是一种用于在Web浏览器和服务器之间传输数据的协议。它建立在TCP/IP协议之上,通过客户端-服务器模型进行通信。

2. 协议分析:
2.1 Method:

image.png

2.2 状态码:

image.png

  • 200 OK ----------→ 客户端请求成功。
  • 400 Bad Request ----------→ 客户端请求有语法错误,不能被服务端所理解。
  • 401 Unauthorized ----------→ 请求未经授权,必须和WWW-Authenticate报头域一起使用。
  • 403 Forbidden ----------→ 服务器收到请求,但是拒绝提供服务。
  • 404 Not Found ----------→ 请求资源不存在,eg:输入了错误的URL。
  • 500 Internal Server Error ----------→ 服务器发生不可预期的错误。
  • 503 Server Unavailable ---------→ 服务器当前不能处理客户端的请求,可能过一会恢复正常。
  • 504 Gateway timeout ---------→ 代表网关超时,是指服务器没有及时从上游服务器收到请求。
3. HTTP协议的特点:
  • 简单:HTTP协议可读性强,易于理解和使用。
  • 无连接:每次请求和响应之间都是独立的,服务器不会保留客户端的状态信息。
  • 无状态:服务器不会保存客户端的状态信息,每个请求都是独立的,需要用户进行身份验证时,需要在每个请求中提供相应的凭证。
  • 可扩展:HTTP头部字段可以灵活地添加新的字段,以支持扩展功能。
4. RESTful API:

RESTful API:一种API设计风格;REST-Representational State Transfer

image.png

5. HTTP 请求头(Request Header):
5.1 常用请求头:

image.png

5.2 常用响应头:

image.png

6. HTTP请求/响应的步骤:
  • 客户端连接Web服务器:一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字。

  • 发送HTTP请求:通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

  • 服务端接受请求并返回HTTP响应:Web服务器解析请求,定位请求资源。服务器将资源副本写到TCP套接字中,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

  • 释放TCP连接:若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

  • 客户端浏览器解析HTML内容:客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

二、 个人思考和总结

  • HTTP(Hyper Text Transfer Protocol)是一种应用层协议,基于TCP协议,用于在客户端和服务器之间传输超文本数据。它采用请求-响应模式,客户端通过发送HTTP请求,服务器响应HTTP响应来进行通信。HTTP协议简单可扩展,并且是无状态的,即服务器不会保存与客户端请求相关的状态信息。
  • 在协议分析方面,我们了解了HTTP方法的分类:safe方法不会修改服务器数据且幂等,其中GET、HEAD、OPTIONS是常见的;idempotent方法执行一次与连续执行多次效果一样,包括GET、HEAD、OPTIONS、PUT、DELETE。另外,HTTP状态码用于表示服务器对请求的处理结果,例如200表示请求成功,404表示请求资源不存在等。
  • RESTful API是一种API设计风格,每个URI代表一种资源,通过HTTP方法对服务器资源进行操作,并实现表现层状态转化。在HTTP请求头中,有各种标头字段用于传递额外的请求信息,如Accept、Authorization、User-Agent等。
  • 缓存是提高性能的重要手段,包括强缓存和协商缓存两种方式,前者直接从本地缓存读取,后者先向服务器确认是否使用本地缓存。
  • HTTP/2是HTTP的升级版,主要优势在于更快、更稳定和更简单。它使用永久连接,流控制机制以及服务器推送功能来提高性能。
  • 在安全方面,HTTPS通过TLS/SSL加密通信,使用对称加密和非对称加密相结合,确保数据传输的机密性和完整性。
  • 对于场景分析,以今日头条为例,静态资源可以通过缓存、CDN和文件名hash来优化,跨域问题可以采用CORS、代理服务器或IFRAME等解决方案。
  • 鉴权方面,session和cookie是常见的实现方式,用于验证用户身份。
  • 在实战中,我们可以使用AJAX中的Fetch来进行数据请求,通过Promise实现异步操作,同时模块化设计可以更好地管理代码。

综上所述,HTTP协议在互联网中起着至关重要的作用,了解和熟悉HTTP协议以及相关优化手段对于Web开发和网络通信是至关重要的。通过不断学习和实践,我们可以更好地理解和应用HTTP协议,提高Web应用的性能和安全性。