今天上课《HTTP 协议》,以下是关于本次课程的重点和笔记。
一、 初识HTTP
1. 什么是HTTP协议:
- Hyper Text Transfer Protocol超文本传输协议
- 应用层协议,基于TCP协议
- 请求 响应
- 简单可扩展
- 无状态
HTTP(Hypertext Transfer Protocol)是一种用于在Web浏览器和服务器之间传输数据的协议。它建立在TCP/IP协议之上,通过客户端-服务器模型进行通信。
2. 协议分析:
2.1 Method:
2.2 状态码:
- 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
5. HTTP 请求头(Request Header):
5.1 常用请求头:
5.2 常用响应头:
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应用的性能和安全性。