首页 > 其他分享 >HTTP协议详解

HTTP协议详解

时间:2024-06-21 15:32:21浏览次数:18  
标签:协议 HTTP 请求 详解 服务器 浏览器 连接 客户端

文章目录

HTTP协议简介

简介:HTTP协议工作在应用层,基于TCP/IP协议传输数据。HTTP 的基本工作原理是客户端通过使用网页浏览器,发起一个HTTP请求到服务器上指定端口(默认端口为80),服务器接收到请求后,返回相应的资源。这些资源可以是网页、图像、音频文件、视频等。
简介

HTTP和HTTPS协议的区别

  • HTTP(超文本传输协议,Hypertext Transfer Protocol):是一种用于从网络传输超文本到本地浏览器的传输协议。HTTP工作在TCP/IP模型之上,通常使用端口80。由于HTTP是不安全的,传输的数据未经加密,可能会被窃听或篡改。适用于不需要传输敏感信息的网站,如新闻网站、博客等。
  • HTTPS(超文本传输安全协议,Hypertext Transfer Protocol Secure):是HTTP的安全版本,它在HTTP下增加了SSL/TLS协议,提供了数据加密、完整性校验和身份验证。HTTPS通常使用端口443,适用于需要传输敏感信息的网站,如网上银行、在线购物、电子邮件等。

HTTP 工作原理

  1. 客户端发起请求:用户通过客户端(如浏览器)输入 URL,客户端向服务器发起一个 HTTP 请求。
  2. 服务器处理请求:服务器接收到请求后,根据请求的类型(如GET、POST等)和请求的资源,进行相应的处理。
  3. 服务器返回响应:服务器将处理结果包装成HTTP响应消息,发送回客户端。
  4. 客户端渲染页面:客户端接收到响应后,根据响应内容(如HTML、图片等)渲染页面,展示给用户。

HTTPS工作原理

HTTPS在传输数据前会建立一个加密通道,主要过程如下:

  1. 客户端发起请求:客户端向服务器发起HTTPS请求,服务器返回数字证书。
  2. 验证证书:客户端验证服务器证书的有效性。
  3. 密钥交换:客户端生成一个随机的对称密钥,并使用服务器的公钥加密后发送给服务器。
  4. 加密通信:服务器使用私钥解密出对称密钥,之后双方使用这个对称密钥进行加密通信。

HTTP协议特点

无连接性

客户端和服务器在每个请求/响应对后都会关闭连接。

优点:

  • 节省资源:无连接方式可以减少服务器和客户端的资源占用,因为每个请求都是独立的,不需要维持长时间的连接。

缺点:

  • 性能低下:每次请求都要重新建立和关闭连接,增加了开销和延迟。
  • 效率低下:频繁的TCP连接建立和断开会消耗更多的时间和资源。

优化无连接特性

  • 为了克服HTTP/1.0无连接特性的缺点,HTTP/1.1引入了持久连接。连接建立后,等待一段时间,等待客户端是否有后续操作,没有则断开连接。通过复用连接,减少了连接建立和断开的开销和延迟。允许在同一个连接上发送多个请求,显著提高了性能。

  • HTTP/2进一步优化了连接管理,增加多路复用,在一个TCP连接上同时发送多个请求和响应,解决了HTTP/1.1中的队头阻塞问题。

  • HTTP/3基于QUIC协议,进一步提升了性能,QUIC协议基于UDP而不是TCP,减少了连接建立的延迟。

无状态性

HTTP的无状态性是指在同一个客户端和服务器之间进行的每个请求都是独立的,服务器不会自动保存前一个请求的信息。这意味着每个HTTP请求都必须包含足够的信息,使得服务器可以理解并处理这个请求,而无需参考之前的请求。

优点:

  • 每个请求都独立存在,服务器不会保存上一个请求的状态。服务器不需要了解请求的上下文。无状态性使得负载均衡变得更容易,可以将请求分配给任意服务器处理,而无需考虑会话状态。

缺点:

  • 请求冗余:每个请求都必须携带所有必要的信息,可能导致请求变得冗长和冗余。

  • 客户端负担:客户端必须在每次请求中包含所有必要的状态信息,这增加了客户端的负担。

如何优化无状态性

尽管HTTP是无状态的,但很多应用需要保持状态,比如用户登录后的会话。为了解决这个问题,通常采用以下几种方法:

Cookie

  • 服务器通过在响应中设置Set-Cookie头,将状态信息保存到客户端。
  • 客户端在后续请求中通过Cookie头发送这些信息回服务器。
  • 例如,服务器可以在用户登录后设置一个会话Cookie,客户端在每次请求时携带这个Cookie,服务器可以通过Cookie识别用户。

Token

  • 使用令牌(Token)来管理状态,常用于API的身份验证。
  • 令牌可以是JWT(JSON Web Token),它包含了身份验证信息,可以在客户端和服务器之间传递。

HTTP请求方法

  • GET:用于获取资源的表示。例如,当你在浏览器中输入 URL 地址时,浏览器会发送一个 GET 请求来获取该 URL 对应的网页。
  • HEAD:获取资源的元数据,与GET类似,但不返回资源本身。
  • POST:用于向服务器提交数据,通常用于提交表单或上传文件。例如,在提交注册表单时,浏览器通常会发送一个 POST 请求,将用户提供的信息发送到服务器进行处理。
  • PUT:用于更新资源的全部内容。
  • PATCH:用于部分更新资源。
  • DELETE:用于请求服务器删除指定的资源。
  • OPTIONS:获取服务器支持的通信选项。
  • TRACE:用于诊断,回显服务器收到的请求。
  • CONNECT:将请求连接转换为透明的TCP/IP隧道。

HTTP状态码

类别原因解释
1**Informational(信息响应)服务器收到请求正在处理
2**Success(成功)请求被服务器成功接收并完成处理
3**Redirection(重定向)需要进行附加操作以完成请求
4**Client Error(客户端错误)服务器无法处理请求
5**Server Error(服务器错误)服务器处理出错

常见状态码使用场景

  • 200 (OK):请求成功,服务器返回请求的数据。
  • 301(Moved Permanently):请求的资源已被永久移动到新位置。
  • 404 (Not Found):请求的资源不存在。
  • 500 (Internal Server Error):服务器内部错误,无法完成请求。

用例:在浏览器地址栏键入URL,按下回车之后会经历以下流程

  1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址
  2. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接
  3. 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器
  4. 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器
  5. 释放 TCP连接
  6. 浏览器渲染 html 文本显示

DNS解析详解

标签:协议,HTTP,请求,详解,服务器,浏览器,连接,客户端
From: https://blog.csdn.net/qq_47012987/article/details/139858367

相关文章

  • 应用同时支持HTTP和HTTPS
    生成证书:keytool-genkeypair-keystoretest.jks-aliastest-keyalgRSA-keysize2048-validity3650应用配置:server:port:18081#httpshttp-port:8081#httpssl:key-store:/test.jks#密钥库路径key-store-password:ENC(djVg6Ri/rp7cHwh9ZTmq/Q==)......
  • JavaSE 面向对象程序设计进阶 抽象类和接口 2024年详解
    目录抽象类抽象方法抽象类和抽象方法的注意事项​编辑接口如何定义接口注意代码实现​编辑接口中的成员特点接口和类之间的关系1.类与类的关系2.类与接口的关系3.接口与接口的关系​编辑拓展接口中的默认方法接口中的静态方法​编辑接口中的私有方法接口......
  • 视频监控平台功能:国外的硬盘录像机NVR通过ISUP协议(原ehome协议)接入AS-V1000视频平台
    目录一、背景说明二、ISUP协议介绍1、海康ISUP协议概述2、ISUP协议支持主码流和子码流切换(1)灵活配置和个性化(2)适应不同网络带宽,提高使用体验3、海康ehome相关文章三、ISUP协议接入说明1、平台侧ISUP协议配置2、设备侧ISUP协议配置3、ISUP设备接入状态和通道四、接......
  • Modbus协议转Profibus协议网关接温控表与PLC通讯
    Modbus协议转Profibus协议网关接温控表与PLC通讯一、前言在智能化飞速发展的时代,各个行业都在使用自动化系统。在智能楼宇系统中,温控表和PLC(可编程逻辑控制器)通讯是至关重要的,在智能楼宇系统中,温控表起着监测和控制室内温度的重要作用。而PLC作为控制中心,负责接收温控表传输的数......
  • SSL/TLS协议信息泄露漏洞(CVE-2016-2183)
    1.问题描述SSL/TLS协议信息泄露漏洞(CVE-2016-2183)TLS是安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。TLS,SSH,IPSec协商及其他产品中使用的DES及TripleDES密码存在大约四十亿块的生日界,这可使远程攻击者通过Sweet32攻击,获取纯文本数据。2.问题解决......
  • Modbus协议ASCII模式下数据的LRC校验
          Modbus协议ASCII模式下数据的LRC校验,计算校验时不包括开头的冒号字符,从第2个字符开始。计算LRC时先将原始的ASCII码格式的数据转换为HEX(ASCII码格式数据‘F’转换为0x0F);在将转换后的HEX数据按照高半字节在前低半字节在后的顺序(如a[1]=0x0F,a[2]=0x0A,合并后的数......
  • 【车载网络协议】【Ethernet】【ARP】【第二章-字段介绍】
    一、报文类型ARP协议中的请求(Request)和响应(Reply)是通过特定的字段来进行交换信息的。下面是对ARP请求和响应字段的详细介绍。二、请求报文硬件类型(HardwareType):指定网络接口的硬件类型,例如以太网通常使用1表示以太网。协议类型(ProtocolType):指定网络层协议类型,例如IPv4......
  • 【车载网络协议】【Ethernet】【ARP】【第三章-缓存介绍】
    一、概念简介ARP(AddressResolutionProtocol)是一种用于将网络层地址(IP地址)解析为数据链路层地址(MAC地址)的协议。ARPCache是ARP协议在计算机或网络设备上维护的一个重要数据结构,用于存储IP地址与对应的MAC地址之间的映射关系。本文将介绍ARPCache的作用、工作原理......
  • (2024)豆瓣电影详情页内容爬虫详解和源码
    (2024)豆瓣电影详情页内容爬虫详解和源码这是一个Python爬虫程序,用于抓取豆瓣电影详情页面如https://movie.douban.com/subject/1291560/的数据。它首先发送GET请求,使用PyQuery解析DOM,然后根据<br>标签分割HTML内容,提取电影信息如导演、演员、类型等,并将中文键转换为英文键......
  • 4. MyBatis核心配置文件详解
    我出门的时候必遭杀害,因为门外有狮子对mybatis-config.xml文件进行剖析<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-config.......