type
status
date
slug
summary
tags
category
icon
password

HTTP教程

HTTP(超文本传输协议,HyperText Transfer Protocol)是一种用于分布式、协作式、超媒体信息系统的应用层协议。
HTTP是一个基于TCP/IP通信协议来传递数据的(HTML文件,图片文件)
 
基本工作原理:
客户端发送请求,服务器返回响应。
notion image
 
请求流程:
  • 建立连接:客户端与服务器之间建立连接。在传统的 HTTP 中,这是基于 TCP/IP 协议的。最近的 HTTP/2 和 HTTP/3 则使用了更先进的传输层协议,例如基于 TCP 的二进制协议(HTTP/2)或基于 UDP 的 QUIC 协议(HTTP/3)。
  • 发送请求:客户端向服务器发送请求,请求中包含要访问的资源的 URL、请求方法(GET、POST、PUT、DELETE 等)、请求头(例如,Accept、User-Agent)以及可选的请求体(对于 POST 或 PUT 请求)。
  • 处理请求:服务器接收到请求后,根据请求中的信息找到相应的资源,执行相应的处理操作。这可能涉及从数据库中检索数据、生成动态内容或者简单地返回静态文件。
  • 发送响应:服务器将处理后的结果封装在响应中,并将其发送回客户端。响应包含状态码(用于指示请求的成功或失败)、响应头(例如,Content-Type、Content-Length)以及可选的响应体(例如,HTML 页面、图像数据)。
  • 关闭连接:在完成请求-响应周期后,客户端和服务器之间的连接可以被关闭,除非使用了持久连接(如 HTTP/1.1 中的 keep-alive)。
HTTP 版本
  • HTTP/1.1:支持持久连接,允许多个请求/响应通过同一个 TCP 连接传输,减少了建立和关闭连接的消耗。
  • HTTP/2:基于二进制分帧,支持多路复用,允许同时通过单一的 HTTP/2 连接发起多重的、独立的、双向的交流。
  • HTTP/3:基于 QUIC 协议,旨在减少网络延迟,提高传输速度和安全性
 
HTTP 的三点注意事项
1.HTTP是无连接的,即每次连接只处理一个请求,服务器处理完客户请求,并收到客户的应答后,就断开连接。
2.HTTP是无状态的,即HTTP协议对事务处理没有记忆能力,处理一件事情并不会有记忆(类比鱼的记忆),所以当后续的处理需要先前的消息时,需要重传。
3.HTTP是媒体独立的,主要客户端和服务器知道如何处理数据内容,任何的数据内容都可以通过HTTP传送,客户端以及服务器指定使用适合的 MIME-type 内容类型。
MIME Type
浏览器显示的内容都有 HTML、XML、GIF、Flash 等,浏览器是通过 MIME Type 区分它们,决定用什么内容什么形式来显示。
MIME Type 是该资源的媒体类型,MIME Type 不是个人指定的,是经过互联网(IETF)组织协商,以 RFC(是一系列以编号排定的文件,几乎所有的互联网标准都有收录在其中) 的形式作为建议的标准发布在网上的,大多数的 Web 服务器和用户代理都会支持这个规范 (Email 附件的类型也是通过 MIME Type 指定的)。
媒体类型通常通过 HTTP 协议,由 Web 服务器告知浏览器的,更准确地说,是通过 Content-Type 来表示的。例如:Content-Type:text/HTML
通常只有一些在互联网上获得广泛应用的格式才会获得一个 MIME Type,如果是某个客户端自己定义的格式,一般只能以 application/x- 开头。

HTTP消息结构

客户端请求消息
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(请求行)、请求头部(头)、空行和请求数据四个部分组成.
 
notion image
 
notion image
 
抓包得到的截图(可以看看)
notion image
 
 
服务器响应消息
HTTP 响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
notion image
 
响应结果:
notion image
 
常见的响应头信息,可以参考
 
HTTP请求方法
HTTP 定义了一组请求方法,以表明要对给定资源执行的操作。指示针对给定资源要执行的期望动作。
请求方法定义
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
GET方法请求一个指定资源的表示形式,使用GET的请求应该仅用于获取数据,不能对服务器上的资源做出任何的变更。(应该是幂等的(即多次重复的请求应该产生相同的结果))
HEAD方法请求一个与GET请求的响应的响应相同,但没有响应体。
POST用于将实体提交到指定的资源的方法,通常会导致服务器上的状态变化或副作用,并且不一定是幂等的。
PUT用于向服务器上传资源,通常用于更新已存在的资源或创建新的资源。PUT 请求应该是幂等的。
DELETE方法删除指定的资源,DELETE 请求应该是幂等的。
CONNECT方法建立一个到由目标资源标识的服务器的隧道,通常用于代理服务器。
OPTIONS用于请求服务器返回支持的 HTTP 方法和其他选项。
TRACE回显服务器收到的请求,主要用于测试或诊断。
PATCH 用于在请求-响应链上的每个节点获取传输路径,修改用于对资源应用部分的方法。
 

HTTP状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。
 
HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599):
 
常见的HTTP Status Code
  • 1xx(信息性状态码):表示接收的请求正在处理。
  • 2xx(成功状态码):表示请求正常处理完毕。
  • 3xx(重定向状态码):需要后续操作才能完成这一请求。
  • 4xx(客户端错误状态码):表示请求包含语法错误或无法完成。
  • 5xx(服务器错误状态码):服务器在处理请求的过程中发生了错误。
一些常见的状态码:
200
OK
请求成功。一般用于GET与POST请求
201
Created
已创建。成功请求并创建了新的资源
301
Moved Permanently
永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302
Found
临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
400
Bad Request
客户端请求的语法错误,服务器无法理解
401
Unauthorized
请求要求用户的身份认证
402
Payment Required
保留,将来使用
403
Forbidden
服务器理解请求客户端的请求,但是拒绝执行此请求
404
Not Found
服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405
Method Not Allowed
客户端请求中的方法被禁止
500
Internal Server Error
服务器内部错误,无法完成请求
501
Not Implemented
服务器不支持请求的功能,无法完成请求
502
Bad Gateway
作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503
Service Unavailable
由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504
Gateway Time-out
充当网关或代理的服务器,未及时从远端服务器获取请求
505
HTTP Version not supported
服务器不支持请求的HTTP协议的版本,无法完成处理
301/302状态码
301,永久移动。也就是说,如果一个是一个经过中台处理后的跳转链接,那么除了第一次会去访问中台后台请求处理,后续每次都不会访问。 302,临时移动。同样是一个经过中台处理后的跳转链接,但是每次重新访问该链接,都会去先请求中台后台先处理。

HTTP和HTTPS

 
HTTP(超文本传输协议,Hypertext Transfer Protocol)是一种用于从网络传输超文本到本地浏览器的传输协议。它定义了客户端与服务器之间请求和响应的格式。HTTP 工作在 TCP/IP 模型之上,通常使用端口 80
notion image
 
HTTPS(超文本传输安全协议,Hypertext Transfer Protocol Secure)是 HTTP 的安全版本,它在 HTTP 下增加了 SSL/TLS 协议,提供了数据加密、完整性校验和身份验证。HTTPS 通常使用端口 443
notion image
 
notion image
 
notion image
 
HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
 
面试题 跟http比,https会对性能造成哪些影响?
  1. 加密和解密:HTTPS 的加密和解密过程需要额外的计算资源,这可能会导致与纯文本传输的 HTTP 相比有轻微的性能下降。
  1. 握手过程:HTTPS 连接的建立需要一个握手过程,这包括密钥交换和认证步骤,可能会引入额外的延迟,尤其是在首次建立连接时。
  1. CPU 使用率:由于加密和解密过程,HTTPS 可能会增加 CPU 的使用率,这在高负载期间可能会对服务器性能产生影响。相较于HTTP,网络负载可能会慢2到100倍。
  1. 延迟:由于建立安全连接和加密/解密数据所需的复杂步骤,HTTPS 可能会增加延迟,从而影响页面加载时间。
  1. 缓存:HTTPS 的缓存机制受到限制,因为加密内容通常不能被中间代理缓存,这可能导致直接从服务器获取数据,从而延长加载时间。
 
 
本次学习笔记,很多来源于菜鸟教程,欢迎前往官网深入学习。
💡
欢迎您在底部评论区留言,一起交流~
单例模式算法入门ing
  • Twikoo
  • Giscus
  • Cusdis
Nolan
Nolan
靠天吃饭自由人🍚
公告
🎉欢迎来到阿豪的小站🎉
😊大家好,我是阿豪
🌱热爱看书、冥想、听播客、徒步
👯喜欢交朋友,很高兴能认识你!
免责声明
⚠️本站所有内容仅代表作者个人观点。内容仅供学习和交流使用,可以转载,但请注明出处。
⚠️用户使用信息时请自行核实,本站不对信息的准确性、完整性或使用后果承担责任。遵守相关法律法规,不得用于非法目的。
 
2023-2024 Nolan.

NotionNext BLOG | 靠天吃饭自由人🍚

Powered by Nolan.