01_https和http的区别

本文从HTTP的发展历程入手,对比了HTTP与HTTPS的区别,包括报文传输形式、默认端口及连接方式的不同。深入介绍了HTTPS的工作原理,即如何通过TLS/SSL协议确保数据的安全传输,并解释了HTTP的无状态特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、原文链接

url:http://mp.weixin.qq.com/s/kkexHIQEpOmfXMEw4a6lrg
url:http://blog.youkuaiyun.com/xlgen157387/article/details/52451162
url:http://www.cnblogs.com/wqhwe/p/5407468.html
url : http://jingyan.baidu.com/article/a948d6515d3e850a2dcd2ee6.html

二、http发展史

  1. HTTP/0.9 1991 只能GET
  2. HTTP/1.0 1996 能GET和POST,一次TCP连接一次请求,浪费资源
  3. HTTP/1.1 1997 持久连接,一次TCP连接多次请求
  4. HTTPS = HTTP+TLS/SSL

三、报文不同

HTTP的报文时明文传输,就是被人截取了数据就能看到内容,不安全;
HTTPS采用了TLS/SSL的报文加密传输,安全;

四、默认端口不同

  1. http:80
  2. https:443

五、什么是https

在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定义在RFC 6101中,之后IETF对SSL 3.0进行了升级,于是出现了TLS(Transport Layer Security) 1.0,定义在RFC 2246。实际上我们现在的HTTPS都是用的TLS协议,但是由于SSL出现的时间比较早,并且依旧被现在浏览器所支持,因此SSL依然是HTTPS的代名词,但无论是TLS还是SSL都是上个世纪的事情,SSL最后一个版本是3.0,今后TLS将会继承SSL优良血统继续为我们进行加密服务。目前TLS的版本是1.2,定义在RFC 5246中,暂时还没有被广泛的使用。

四、https的工作原理

这里这是看了上面的连接做的简单总结,不知对否
1、采用htts方式搭建的网站必须安装TSL/SSL证书(其实这里面放了一些加密的公钥、权威机构认证等认证信息,证书可以向第三方权威机构购买价格越高安全越好,也可以自己制作,比如12306);
2、浏览器访问此类网站前,告诉服务器自己可以支持的加密算法类型(因为采用加密传输,所以要用到加密算法);
3、服务器将证书(含公钥)和加密类型等信息发给浏览器;(就是向浏览器表明我这个服务器是合法的,但是浏览器怎么知道这个证书是否合法呢?)
4、浏览器要检验这个证书的合法性;(就是上面提到的证书是否合法,还是山寨货?这个在随后的博文中有讲解,也是这个验证害我搞了一天,所以在访问测试此类服务器时候要清楚是否合法或是直接不要验证去测试能否成功;告诉你个小秘密:libcurl默认开启验证-坑);
5、合法之后才向服务器发送自己的加密报文。
6、终结的有点简单,详细看链接。

五、http无状态连接

<think>好的,我现在需要弄清楚用户提到的两个函数_DMC_01_get_rm_input_single_value_DMC_01_get_rm_input_value之间的区别。用户希望得到结构清晰的中文解释,并且需要遵循特定的格式要求,比如行内数学表达式使用$...$,独立公式用$$...$$等。 首先,我需要确定这两个函数可能属于什么系统或框架。通常,以“DMC”开头的函数可能是某个特定系统或库中的自定义函数,比如数据管理、控制系统或者某种中间件。由于没有具体的上下文,我需要基于常见的命名习惯进行推测。 函数名中的“rm”可能代表“resource management”(资源管理)、“remote”(远程)或者其他缩写。而“input”表明这些函数用于获取输入值。“single_value”“value”的区别可能在于返回的数据类型或结构。 接下来,我需要比较两个函数名中的关键词差异。第一个函数包含“single_value”,而第二个是“value”。这可能意味着第一个函数用于获取单个值,而第二个可能返回多个值或某种结构化的数据。例如,_DMC_01_get_rm_input_single_value可能返回一个标量或单个数值,而_DMC_01_get_rm_input_value可能返回数组、列表或字典等包含多个值的数据结构。 另外,版本号“DMC_01”可能表示这两个函数属于同一模块的不同版本,但更可能的是它们是同一模块中的不同功能函数。需要进一步考虑函数参数是否有差异,例如是否接受索引、键名或其他标识符来指定获取单个值。 假设在资源管理系统中,用户需要从某个输入源获取数据。如果输入源包含多个参数或数据点,_DMC_01_get_rm_input_value可能返回所有这些值,而_DMC_01_get_rm_input_single_value可能需要指定某个参数名或索引来获取特定的单个值。例如: - `_DMC_01_get_rm_input_single_value("temperature")` 返回温度值,如$25.3$℃。 - `_DMC_01_get_rm_input_value()` 返回所有参数,如温度、湿度、压力等组成的字典或JSON对象。 此外,还需要考虑函数的返回类型。如果“single_value”返回的是基本数据类型(如整数、浮点数、字符串),而另一个返回复杂类型(如数组、对象),这也会是区别之一。 还可能涉及到错误处理或默认值。例如,当请求的单个值不存在时,_DMC_01_get_rm_input_single_value可能抛出错误或返回默认值,而另一个函数可能返回部分数据或空值结构。 总结可能的区别点: 1. 返回值的数量:单个值 vs 多个值。 2. 参数需求:是否需要指定键名或索引。 3. 返回数据类型:标量 vs 复合类型。 4. 使用场景:获取特定输入项 vs 获取所有输入项。 在确认这些可能性后,我需要以结构化的方式呈现答案,分点说明两者的区别,并举例说明应用场景。同时,确保符合用户要求的格式,如使用正确的中文术语、数学表达式格式等。</think>关于`_DMC_01_get_rm_input_single_value``_DMC_01_get_rm_input_value`的区别,可从以下方面逐步分析: --- ### 1. **返回值类型** - **`_DMC_01_get_rm_input_single_value`** 明确返回**单个标量值**,例如: ```python value = 42.5 # 返回类型为浮点数、整数或字符串等基本类型 ``` 适用于需要**精确提取单一参数**的场景,如获取传感器温度值$T = 25.3$℃。 - **`_DMC_01_get_rm_input_value`** 可能返回**结构化数据**(如字典、数组或对象),例如: ```python data = {"temp": 25.3, "pressure": 101.3} # 返回多参数集合 ``` 适用于需要**批量获取多个关联参数**的场景,如同时读取温度、压力等。 --- ### 2. **参数需求** - **`_DMC_01_get_rm_input_single_value`** 通常需要**指定键名或索引**以定位目标值,例如: ```python get_rm_input_single_value(key="temperature") # 必须传入标识符 ``` 类似数学中通过索引提取元素:$a_i$(数组$a$的第$i$个元素)。 - **`_DMC_01_get_rm_input_value`** 可能无需参数,直接返回完整数据集;或通过参数筛选部分数据,例如: ```python get_rm_input_value() # 返回全部输入值 ``` 类似于获取整个矩阵$M = [m_{ij}]$。 --- ### 3. **应用场景对比** | 场景描述 | 适用函数 | |------------------------------|--------------------------------------| | 读取某个传感器的瞬时温度值 | `_DMC_01_get_rm_input_single_value` | | 获取所有传感器参数的完整快照 | `_DMC_01_get_rm_input_value` | | 提取用户输入的单个配置项 | `_DMC_01_get_rm_input_single_value` | | 导出整个配置文件的参数集合 | `_DMC_01_get_rm_input_value` | --- ### 4. **底层实现差异** 假设两个函数属于资源管理(Resource Management, RM)模块: - **`_DMC_01_get_rm_input_single_value`** 可能调用类似`dict.get(key)`的方法,直接从资源池中检索单个值,时间复杂度为$O(1)$。 - **`_DMC_01_get_rm_input_value`** 可能返回整个资源池的副本(如深拷贝字典),时间复杂度为$O(n)$($n$为参数数量)。 --- ### 总结 | 维度 | `_DMC_01_get_rm_input_single_value` | `_DMC_01_get_rm_input_value` | |--------------|------------------------------------------|------------------------------------| | **返回值** | 单个标量值(如$x=5$) | 结构化数据(如$\{x:5, y:10\}$) | | **参数需求** | 需指定键名/索引 | 可能无需参数或接受筛选条件 | | **性能** | 高效(直接定位) | 相对较低(数据量大时) | | **用途** | 精准获取特定输入项 | 批量获取或全局数据导出 | 实际使用时,需结合文档或代码注释验证具体行为,但上述分析基于常见命名规范及设计模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值