关于HTTP和HTTPS

HTTP

HTTP协议(HyperText Transfer Protocol,超文本传输协议)目的是为了提供一种发布和接收HTML(HyperText Markup Language)页面的方法。

HTTP协议所在的协议层

HTTP是基于TCP协议之上的。在TCP/IP协议参考模型的各层对应的协议如下图,其中HTTP是应用层的协议。 默认HTTP的端口号为80,HTTPS的端口号为443。

HTTP工作原理

抓取过程可以理解为 模拟浏览器操作的过程。

浏览器的主要功能是向服务器发出请求,在浏览器窗口中展示您选择的网络资源。 HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。

Web浏览器与Web服务器之间将完成下列7个步骤:
  1. 建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP()更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80

  2. Web浏览器向Web服务器发送请求命令 一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令 例如:GET/sample/hello.jsp HTTP/1.1

  3. Web浏览器发送请求头信息 浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。

  4. Web服务器应答 客户机向服务器发出请求后,服务器会客户机回送应答, HTTP/1.1 200 OK 应答的第一部分是协议的版本号和应答状态码

  5. Web服务器发送应答头信息 正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。

  6. Web服务器向浏览器发送数据 Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据

  7. Web服务器关闭TCP连接 一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码 Connection:keep-alive TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

web浏览器和web服务器的交互过程

例如:用户访问 东南大学主页 : http://www.seu.edu.cn/seu/welcome.htm, 浏览器与服务器的信息交互过程如下:

  1. 浏览器向DNS获取web服务器www.seu.edu.cn的IP地址:202.119.24.11

  2. 浏览器与IP地址为202.119.24.11的服务器进行TCP连接,端口为80;

  3. 浏览器执行HTTP协议,发送GET /seu/welcome.htm 命令,请求读取该文件;

  4. www.seu.edu.cn服务器返回/seu/welcome.htm文件到客户端;

  5. 释放TCP连接;

  6. 浏览器解释/seu/welcome.htm文件内容,并显示该文件表示的页面。

HTTP协议栈数据流

HTTPS

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。其所用的端口号是443。

SSL:安全套接层,是Netscape公司设计的主要用于Web的安全传输协议。
SSL(及其继任者传输层安全(Transport Layer Security,TLS))
在传输层对网络连接进行加密,保障在Internet上数据传输的安全。
与HTTP的区别

HTTPS和HTTP的区别主要为以下四点:

  1. https协议需要到CA申请证书,一般免费证书很少,需要交费。
  2. http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
  3. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  4. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
HTTPS通信过程

当你在浏览器的地址栏上输入https开头的网址后,浏览器和服务器之间会在接下来的几百毫秒内进行大量的通信。这些复杂的步骤的第一步,就是浏览器与服务器之间协商一个在后续通信中使用的密钥算法。这个过程简单来说是这样的:

  1. 浏览器把自身支持的一系列Cipher Suite(密钥算法套件,后文简称Cipher)[C1,C2,C3, …]发给服务器;

  2. 服务器接收到浏览器的所有Cipher后,与自己支持的套件作对比,如果找到双方都支持的Cipher,则告知浏览器;

  3. 浏览器与服务器使用匹配的Cipher进行后续通信。如果服务器没有找到匹配的算法,浏览器将给出错误信息:

有两种基本的加解密算法类型:

根据密钥类型不同,现代密码技术可以分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)

  1. 对称加密(Symmetric Cryptography):
    • 密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES,RC5,3DES等;当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。
    • 对称加密主要问题是共享秘钥,除你的计算机(客户端)知道另外一台计算机(服务器)的私钥秘钥,否则无法对通信流进行加密解密。解决这个问题的方案非对称秘钥。
  1. 非对称加密(Asymmetric Cryptography):
    • 使用两个秘钥:公共秘钥和私有秘钥。私有秘钥由一方密码保存(一般是服务器保存),另一方任何人都可以获得公共秘钥。
    • 这种密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。因此当数据量很小时,我们可以考虑采用非对称加密算法。
解决办法
  • (1)对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。
  • (2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。
  • (3) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。
  • (4)使用数字证书来验证,使用里面的公钥及私钥来发送加密的内容,或将收到的加密内容还原。
HTTPS通信的优点:
  • 客户端产生的密钥只有客户端和服务器端能得到;

  • 加密的数据只有客户端和服务器端才能得到明文;

  • 客户端到服务端的通信是安全的。

关于CA

CA(Certificate Authority)是数字证书认证中心的简称,是指发放、管理、废除数字证书的第三方机构。

CA的作用是检查证书持有者身份的合法性,并签发证书,以防证书被伪造或篡改,以及对证书和密钥进行管理。

现实生活中可以用身份证和护照来证明身份, 那么在网络世界里,数字证书就是身份证。和现实生活不同的是,并不是每个上网的用户都有数字证书的,往往只有当一个人需要证明自己的身份的时候才需要用到数字证书。

普通用户一般是不需要,因为网站并不关心是谁访问了网站,现在的网站只关心流量。但是反过来,网站就需要证明自己的身份了。

比如你想要提交信用卡信息给预定航班的网站,那么你如何确定你正在访问的网站就是你所想要访问的那个呢?现在钓鱼网站很多的。比如你想访问的是www.ctrip.com,但其实你访问的是www.otrip.com”,所以在提交自己的信息之前你需要验证一下网站的身份,要求网站出示数字证书。

一般正常的网站都会主动出示自己的数字证书,来确保客户端和网站服务器之间的通信数据是加密安全的。


<think>首先,用户的问题是:“我想了解HTTPHTTPS协议的区别及工作原理 请问HTTPHTTPS协议的区别以及它们是如何工作的”。我需要基于系统级指令提供的引用回答。 系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 - 回答结构清晰,帮助用户逐步解决问题,尽量保证回答真实可靠。 用户可见层要求回答结构清晰,逐步解决问题。 参考引用: - 引用[1]: HTTPHTTPS的区别。HTTP是广泛使用的网络协议,基于TCP,用于传输超文本。HTTPSHTTP的安全版,加入SSL层,提供安全通道数据加密。 - 引用[2]: HTTP协议规定数据传输格式,基于TCP,持久连接。HTTPS的区别。 - 引用[3]: HTTP传输未加密数据,HTTPS使用SSL对数据进行加密,提供身份认证。 - 引用[4]: 建议在切换时保留HTTPHTTPS兼容。 用户的问题是关于HTTPHTTPS的区别工作原理,所以我需要整合这些信息。 回答结构: 1. **介绍HTTP**:解释HTTP是什么,它的工作原理。 2. **介绍HTTPS**:解释HTTPS是什么,它的工作原理,包括SSL/TLS。 3. **区别**:列出关键区别。 4. **工作原理**:详细说明两者如何工作。 5. **生成相关问题**:在最后添加相关问题。 由于指令要求生成相关问题,我需要像示例一样在最后添加“§§相关问题§§”。 使用中文回答。 确保LaTeX正确:虽然这个问题可能没有数学表达式,但如果有任何技术术语或公式,要使用正确的格式。例如,在描述加密或协议时,如果有数学概念,用$...$。但在这个主题中,可能不需要太多数学,除非提到加密算法。 例如,在描述SSL握手时,可能有变量,但我可以避免或简单描述。 步骤: 1. **开头介绍**:简要概述HTTPHTTPS。 2. **HTTP工作原理**:解释HTTP如何工作,基于引用。 3. **HTTPS工作原理**:解释HTTPS如何工作,包括SSL/TLS。 4. **主要区别**:总结区别。 5. **引用标识**:自然地添加引用到相关部分。 6. **相关问题**:在末尾生成3-5个相关问题。 基于引用: - HTTP:基于TCP,未加密,持久连接。 - HTTPSHTTP + SSL,加密,身份认证。 - 区别:安全性、端口、性能等。 我的回答应该真实可靠,所以我会基于一般知识补充,但主要参考提供的引用。 最终结构: - 引言 - HTTP部分 - HTTPS部分 - 区别总结 - 工作原理详解 - 相关问题</think>### HTTPHTTPS协议的区别及工作原理 HTTP(HyperText Transfer Protocol,超文本传输协议)HTTPSHTTP Secure,安全超文本传输协议)是互联网上用于数据传输的核心协议。它们的主要区别在于安全性,而工作原理涉及数据传输的机制。我将逐步解释它们的工作原理关键区别,确保回答基于可靠的技术细节。 #### 1. HTTP的工作原理 HTTP是一种无状态协议,基于TCP(Transmission Control Protocol)实现。它定义了客户端(如浏览器)服务器之间的请求-响应模型: - **工作流程**: 1. 客户端发起请求:例如,浏览器发送一个HTTP GET请求到服务器,请求特定资源(如网页)。 2. 服务器处理请求:服务器接收请求后,查找资源并准备响应。 3. 服务器返回响应:响应包含状态码(如200表示成功)、头部信息数据体(如HTML内容)。 4. 客户端渲染内容:浏览器解析响应并显示网页。 - **关键特性**: - 使用明文传输数据,所有内容(包括密码隐私信息)未加密,容易被窃听或篡改。 - 默认使用端口80。 - 支持持久连接:多次HTTP请求可复用同一个TCP连接,减少延迟[^2]。 - **示例场景**:访问一个普通网站时,HTTP协议高效但缺乏安全保障。 #### 2. HTTPS的工作原理 HTTPSHTTP的安全扩展,通过添加SSL/TLS(Secure Sockets Layer/Transport Layer Security)协议层来实现加密身份认证: - **工作流程**: 1. SSL/TLS握手:客户端连接到服务器时,首先进行握手过程: - 协商加密算法(如AES)。 - 服务器发送数字证书,证明其身份。 - 客户端验证证书(通常由CA机构颁发)。 - 生成会话密钥用于对称加密。 2. 加密数据传输:握手后,所有HTTP数据被SSL/TLS加密后传输。 3. 客户端解密使用:客户端用会话密钥解密数据,并处理响应。 - **关键特性**: - 数据加密:使用非对称加密(如RSA)初始化,然后对称加密(如AES)传输数据,确保隐私安全[^3]。 - 身份认证:服务器证书防止中间人攻击。 - 默认使用端口443。 - 性能开销:由于加密过程,HTTPSHTTP稍慢,但现代优化(如HTTP/2)已减少影响。 - **示例场景**:在线银行或电商网站使用HTTPS,保护用户支付信息。 #### 3. HTTPHTTPS的主要区别 基于以上工作原理,以下是关键区别总结: | 方面 | HTTP | HTTPS | |------|------|-------| | **安全性** | 未加密,数据明文传输,易受攻击 | 加密传输,防止窃听篡改[^1] | | **协议层** | 仅HTTP层,基于TCP | HTTP + SSL/TLS层,提供安全通道[^3] | | **端口** | 默认端口80 | 默认端口443 | | **性能** | 更高效,无加密开销 | 稍慢,因加密计算,但可通过优化缓解 | | **身份认证** | 无认证机制 | 服务器证书验证,确保真实性 | | **适用场景** | 普通信息浏览(如新闻网站) | 敏感操作(如登录、支付)[^1] | | **兼容性** | 简单易部署 | 需管理证书,建议保留HTTP兼容(如使用//代替http://)[^4] | #### 4. 详细工作原理对比 - **HTTP工作细节**: HTTP协议仅规范数据格式(如请求头、响应体),不处理传输安全。例如,一个GET请求如下: ``` GET /index.html HTTP/1.1 Host: www.example.com ``` 服务器响应: ``` HTTP/1.1 200 OK Content-Type: text/html <html>...</html> ``` 所有内容在网络上以明文传输。 - **HTTPS工作细节**: HTTPSHTTP层下添加SSL/TLS层: 1. **握手阶段**:使用非对称加密(如RSA算法,其中公钥加密、私钥解密)交换密钥。数学上,加密过程可表示为:$c = m^e \mod n$,其中$m$是明文,$c$是密文,$e$$n$是公钥参数。 2. **数据传输阶段**:使用对称密钥(如AES)加密HTTP数据。加密函数为:$E_k(m)$,其中$k$是会话密钥,$m$是消息。 3. **证书验证**:客户端检查服务器证书的哈希值(如SHA-256)是否匹配可信CA的签名,防止伪造[^3]。 #### 为什么选择HTTPSHTTPS解决了HTTP的安全漏洞,适用于任何涉及隐私的场景。Web开发中,建议逐步迁移到HTTPS,并通过兼容设计(如相对URL //example.com)支持平滑过渡[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值