首页 > 其他分享 >1. HTTP/HTTPS协议

1. HTTP/HTTPS协议

时间:2024-11-23 22:55:54浏览次数:8  
标签:协议 缓存 HTTP 请求 密钥 HTTPS 服务器 浏览器

应用层

HTTP/HTTPS协议
超文本传输协议:

HTTP常见的状态码

  • 1xx:提示。
  • 2xx:成功。
  • 3xx:重定向。
  • 4xx:客服端错误。
  • 5xx:服务器错误。

GET和POST有什么区别:

GET的语义是从服务器获取指定资源。POST是根据请求负荷(报文body)对指定资源做出处理。GET和POST方法主要区别是什么。关键在于安全幂等

GET:是安全并且幂等的。

POST:不是安全也不是幂等的。

HTTP缓存技术

缓存实现主要分为强制缓存协商缓存

强缓存:只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存,决定是否使用缓存的主动性在于浏览器这边。像状态码中要是标明from disk cache。那就是直接使用强制缓存。强缓存利用HTTP响应头部两个字段实现,分别是Cache-Control(相对时间)、Expires(绝对时间)。如果两个字段都存在,那么Cache-Control优先级要比Expires高。由于Cache-control选项更多,所以用Cache-control实现强缓存更好。具体实现是浏览器第一次请求服务器资源时,服务器在返回时会在Response头部加上Cache-control并且设置过期时间大小。当浏览器再次请求时,会先通过请求资源时与Cache-control中设置的过期时间大小,来计算是否过期。没有过期直接使用,如果过期就重新请求。

协商缓存:当响应码是304,这个是告诉浏览器可以使用本地缓存的资源,像这种通过浏览器告诉客户端是否可以使用存储的方式成为协商缓存。

HTTP1.0和HTTP1.1区别:

HTTP1.0规定浏览器和服务器保持短连接,浏览器每次请求都需要与服务器建立一次TCP连接。HTTP1.0还规定下一个请求必须在前一个请求响应到达之前才能发送。前一个请求的响应一直不到达,那么下一个请求就不发送。后面的请求都被阻塞了,所以HTTP1.0存在请求的队友阻塞。

HTTP1.1解决了1.0版本存在的问题,HTTP1.1可以保持长连接,避免每次请求都要重复建立TCP连接,还支持多个请求同时发送,但服务器还是按照顺序先回应前面的请求,再回复后面的请求。如果前面回复特别慢,后面就会有很多请求排队等着处理。所以HTTP1.1还是存在响应的对头阻塞时间。并且存在断点续传。

HTTP2.0版本区别:

HTTP2.0会压缩头部,如果同时有多个请求头部一样或相似,那么协议会消除重复部分。并且请求和响应消息编码为二进制,不再使用之前的村文本消息,增加了数据传输的效率。HTTP2.0可以在一个TCP连接中并发多个请求和回应,而不用向按照顺序一一对应,从而解决HTTP对头阻塞问题。并且在一定改善传统的请求应答工作模式,服务器可以主动向客户端主动发送信息。HTTP2.0虽然可以通过请求复用一个TCP连接解决HTTP队头阻塞,但是一旦发生丢包;就会阻塞所有的HTTP请求,这就是TCP层队头阻塞。为了解决这个问题,HTTP3.0直接放弃使用TCP,将传输层协议改成UDP,但是因为UDP不可靠传输,所有就需要QUIC实现可靠机制。

HTTPS加密机制、SSL/TLS握手过程

HTTP是通信是通过明文传输,可靠性较差。然后HTTP是就是在HTTP基础上加入加密以及认证机制。在HTTP通信接口部分使用SSL(安全套接字层)和TLS(传输层安全)协议实现。使得HTTP先和SSL通信,然后SSL和TCP通信,而不是让HTTP直接和TCP通信。这里明白两个概念,对称加密(加/解密的密钥一样)和非对称加密(有一对密钥,分别是公钥和私钥,一般是公钥加密,私钥解密)。

HTTPS的加密过程如下:

  • 客服端向服务器发送HTTPS请求。
  • 服务器将公钥证书发送给客户端。
  • 客服端验证服务器证书。
  • 如果验证通过,那么生成一个用于会话的对称密钥。
  • 客户端使用服务器的公钥对对称密钥加密,并将加密后的密钥发送给服务器。
  • 服务器使用私钥解密对称密钥。
  • 服务器和客服端使用对称密钥进行通信。

为什么使用非对称密钥加密对称密钥,通信内容真正加密的是对称密钥:

  • 这是因为使用非对称加密算法,常见的比如RSA加密算法。使用这种算法处理大量数据效率很低,所有使用对称密钥处理。并且使用非对称密钥对对称密钥进行加密也保证了通信密钥的安全性。所以在安全性中真正需要保证机密的的密钥。

DNS域名解析 :

是将人们方便记忆的域名转换为计算机可以理解的IP地址。常见的流程是:

  • 浏览器查看自己缓存是否存在该域名对应的IP地址,存在则直接访问。
  • 如果浏览器没有,那么操作系统会检查自己的缓存。
  • 如果操作系统也没有,那么会向NDS服务器发送查询请求。
  • 本地DNS服务器会检查自己缓存,存在该域名对应IP地址则直接返回给用户,如果没有那么会向根域名服务器发送查询请求。
  • 如果根也没有,那么会向顶级域名服务器发送请求,如果还是没有,那么会向取权限服务器发送。

递归解析与迭代解析:

  • 区别在于是谁负责发送请求查询,递归解析请求方向是本地DNS->顶级域名服务器->根域名服务器->权限域名服务器。然后回复是相反的。但是迭代服务器每一次的请求发起都是本地,回复有可能是本地DNS服务器,顶级域名服务器等等,具体是那个取决于到了那一步查询到该域名对应的IP地址。

正向解析和方向解析:

  • 正向解析:域名转换为IP地址。
  • 方向解析:IP地址转换为域名地址。

标签:协议,缓存,HTTP,请求,密钥,HTTPS,服务器,浏览器
From: https://www.cnblogs.com/wzy-cc/p/18565216

相关文章

  • 作为前端工程师,不了解MQTT,只知道HTTP,那就是不合格啦。
    作为前端开发工程师,了解MQTT(MessageQueuingTelemetryTransport)协议是很有必要的。MQTT是一种轻量级的消息传输协议,主要用于物联网(IoT)设备之间的通信。一、MQTT协议特点轻量级MQTT协议设计简洁,占用带宽小,对硬件资源要求低,非常适合在资源受限的设备上使用,如传感器、嵌......
  • 2(1)UART协议讲解、架构设计
    串口介绍在串口通信中先传送低位在UART中发送端和接收端的时钟频率是相同的(提前约定好),相位是不同的时钟速度不快的前提,UART最高速度达2Mbps若时钟速度过快,读到数据亚稳态的概率就比较大,容易出错协议讲解UART串口可以传任意比特的数据:常规8bit架构设计时钟分频:50_000_......
  • 每日一题:https://codeforces.com/contest/2005/problem/B1
    题目链接:https://codeforces.com/contest/2005/problem/B1(开局看掉m=2和q=1)includeincludeusingnamespacestd;intmain(){longu;cin>>u;for(;u>0;u--){longn;longm,q;longarr1[3];longcha;cin>>n>>m>>q;for(inti=0;i<2;i++){......
  • 【http】http协议状态码
    目录1.说明2.信息性状态码3.成功状态码4.重定向状态码5.客户端错误状态码6.服务器错误状态码1.说明1.HTTP协议状态码是指在HTTP通信过程中,服务器向客户端返回的三位数值的数字代码,用于表示服务器对请求的处理结果和状态。2.这些状态码由三个十进制数字组......
  • 802.15.4 WPAN协议-扫描、同步、入网和退网等消息流程
    802.15.4WPAN协议-扫描、同步、入网和退网等消息流程文章目录一、原语二、消息流程1.接收超帧和发送超帧的时序2.能量检测(ED)信道扫描3.主动扫描和被动扫描3.1主动扫描3.2被动扫描4.启动PAN网络5.重组PAN网络6.入网过程7.退网过程8.同步过程一、原......
  • AndroidStudio清除重置Http Proxy代理的方式
    问题背景在国内做代码开发的都知道,在国际互联网我们存在看不见的墙,导致无法访问一些代码库和资源,所以在使用开发工具拉取第三方库的时候总会遇到无法连接或者连接超时的情况,所以就会使用一些安全的网络代理工具,辅助完成我们的环境配置等工作,例如android程序员在使用andro......
  • 为什么 Spring Boot 的微服务架构被称为“现代应用开发的曙光”?这种设计真的解决了传
    目录1.微服务架构为何被称为“现代应用开发的曙光”1.1单体架构的问题1.2微服务架构的诞生与发展1.3微服务架构的挑战2.SpringBoot在微服务中的角色2.1自动化配置与微服务开发2.2SpringCloud生态中的微服务3.微服务架构是否真的解决了传统单体架构中的所......
  • DeviceNet主站转EtherCAT协议转换网关
    一,设备主要功能捷米特JM-ECT-DNTM网关实现EtherCAT网络与DeviceNet网络之间的数据通讯,可连接DeviceNet网络到EtherCAT网络。即将DeviceNet设备连接到EtherCAT网络。应用广泛:本产品应用于支持DeviceNet接口的电机、IO模块、机器人、仪表、等等。例如半导体设备中的IO模块、M......
  • EtherCAT转CC-Link协议转换网关
    一,设备主要功能捷米特JM-ECT-CCLK网关是自主研发的一款CC-Link从站功能的通讯网关。该产品主要功能是将各种CC-Link总线和EtherCAT网络连接起来。本网关连接到EtherCAT总线中做为从站使用,连接到CC-Link总线中做为从站使用。应用广泛:实现不同协议设备的集成:工业现场存在支持Et......
  • Java调用第三方接口、http请求详解,一文学会
    系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章Python机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据......