HTTP(HyperText Transfer Protocol)和 HTTPS(HyperText Transfer Protocol Secure)是互联网上用于传输网页内容等数据的两种主要协议,以下是它们的定义和基本工作原理:
HTTP
定义 :HTTP 是一种超文本传输协议,用于在客户端(如浏览器)和服务器之间传输网页内容、图片、视频等超文本资源。
工作原理 :
请求 - 响应模式 :客户端向服务器发送请求,服务器根据请求返回相应的响应。例如,当用户在浏览器中输入网址并访问网页时,浏览器会向服务器发送 HTTP 请求,服务器接收到请求后,会根据请求的内容返回相应的网页数据等作为响应。
无状态协议 :HTTP 是无状态的,即服务器不会记录客户端之前发送的请求信息,每次请求都是独立的。服务器处理完一个请求并返回响应后,连接就会关闭,不会保留与该请求相关的任何状态信息。例如,用户在浏览一个普通新闻网站时,每次点击不同的新闻链接,浏览器向服务器发送不同的请求,服务器处理完每个请求并返回相应页面后,不会记住之前已经处理过哪些请求。
特点 :
简单快速 :协议本身比较简单,传输速度快,适合传输一些对安全性要求不高的数据,如普通网页内容等。
灵活 :可以传输多种类型的数据,如文本、图片、视频等,并且可以通过各种方法和状态码来处理不同的请求和响应情况。
无连接 :每次请求都需要建立新的连接,请求完成后连接就会关闭,这种机制相对简单,但在频繁请求的场景下,可能会增加网络开销。
HTTPS
定义 :HTTPS 是 HTTP 的安全版本,它在 HTTP 的基础上添加了 SSL/TLS 加密层,用于在客户端和服务器之间建立加密通道,确保数据传输的安全性。
工作原理 :
握手阶段 :当客户端连接到服务器时,首先会进行 SSL/TLS 握手过程。客户端和服务器会协商加密算法、交换加密密钥等信息,以建立安全的加密通道。这个过程包括客户端向服务器发送加密请求、服务器回应客户端并发送数字证书、客户端验证服务器的合法性、客户端准备密钥交换信息、服务器解密预主密钥并生成会话密钥等步骤。
加密通信阶段 :握手完成后,客户端和服务器之间通过加密通道进行数据传输。双方使用会话密钥对数据进行加密和解密,确保数据在传输过程中不被窃取和篡改。
特点 :
安全性高 :通过 SSL/TLS 加密层对数据进行加密,可以有效防止数据在网络传输过程中被窃取、篡改和伪造,保护用户的隐私和安全。
身份验证 :服务器需要向客户端提供数字证书,客户端可以验证服务器的身份,确保连接到的是真实的服务器,而不是假冒的网站。
兼容性好 :在现有 HTTP 协议的基础上进行了扩展,与 HTTP 兼容,可以在不影响现有网站架构的情况下,为网站提供更安全的访问方式
URL(Uniform Resource Locator,统一资源定位器),也常被称为网址(Web 地址),用于标识和定位互联网上的资源(如网页、图片、视频、文件等),是万维网(WWW)中用于指定信息位置的标准方法。
URL 的基本结构
一个典型的 URL 通常由以下几个部分组成:
协议(Protocol) :也称为方案(Scheme),它指定了用于访问资源的协议类型。最常见的协议有 HTTP(超文本传输协议)和 HTTPS(安全的超文本传输协议),此外还有 FTP(文件传输协议)、file(用于访问本地文件)、mailto(用于发送电子邮件)等。
例如,在 “https://www.baidu.com/s?wd=爬虫” 中,“https” 就是协议部分,表示使用安全的超文本传输协议来访问资源。
子域名(Subdomain) :用于进一步划分和标识网站的不同部分或服务。
例如,在 “https://www.baidu.com/s?wd=爬虫” 中,“www” 是子域名,通常代表该网站的主页面或主要服务部分。
顶级域名(Top-level domain,TLD) :顶级域名是域名层级结构中的最顶层,用于标识网站所属的通用类别或国家和地区等。常见的顶级域名有 “.com”(商业机构)、“.org”(非营利组织)、“.net”(网络服务提供商)、“.edu”(教育机构)、“.cn”(中国国家顶级域名)等。
在 “https://www.baidu.com/s?wd=爬虫” 中,“com” 就是顶级域名。
二级域名(Second-level domain) :二级域名是顶级域名下的具体域名,由个人或组织注册和管理,用于标识特定的网站。在 “https://www.baidu.com/s?wd=爬虫” 中,“baidu” 是二级域名,用于标识百度这个特定的网站。
端口号(Port number)(可选) :端口号用于标识特定的网络服务或应用程序,它帮助浏览器确定将请求发送到服务器的哪个端口。在 URL 中,端口号一般跟在域名或 IP 地址后面,用冒号 “:” 分隔。如果省略端口号,浏览器会使用默认端口,如 HTTP 默认使用 80 端口,HTTPS 默认使用 443 端口。
例如,“http://example.com:8080/page” 中,“8080” 是端口号,表示该资源位于服务器的 8080 号端口上。
路径(Path) :路径用于服务器指定上具体资源的位置,从网站的根目录开始,层层深入地指定资源所在的目录结构。
在 “https://www.baidu.com/s?wd=爬虫” 中,“/s” 是路径,表示要访问的是服务器上 “/s” 这个位置的资源,通常对应一个网页或程序的入口。
查询字符串(Query string)(可选) :查询字符串用于向服务器传递额外的参数信息,以指定对资源的特定操作或请求特定的内容。它通常以问号 “?” 开头,后面跟着一个或多个键值对(参数名和参数值用等号 “=” 连接,多个键值对之间用 “&” 分隔)。
在 “https://www.baidu.com/s?wd=爬虫” 中,“wd=爬虫” 是查询字符串,表示向服务器传递了一个名为 “wd” 的参数,其值为 “爬虫”,用于在百度中搜索 “爬虫” 相关的内容。
Cookie 是存储在用户本地终端上的数据(通常经过加密),由用户端的浏览器依照需要存取。
**一、工作原理**
1. 当用户访问一个网站时,服务器可以通过 HTTP 响应头将 Cookie 信息发送给浏览器。
2. 浏览器会将这些 Cookie 信息存储在本地。当用户再次访问该网站时,浏览器会通过 HTTP 请求头自动将这些 Cookie 发送给服务器。
3. 例如,用户登录一个网站,服务器验证用户身份后,会在响应头中设置一个 Cookie,其中可能包含用户的身份标识等信息。当用户后续访问该网站的其他页面时,浏览器会将这个 Cookie 发送给服务器,服务器通过识别这个 Cookie 来知道这个用户已经登录过,从而为用户提供一个无缝的、个性化的访问体验。
**二、作用**
1. **会话管理**
* 在 Web 应用中,Cookie 是用于会话状态管理的常用方式。它可以帮助服务器记住用户的登录状态。例如,当用户登录一个电商网站后,网站会在用户的浏览器中设置一个包含会话信息的 Cookie。在用户浏览网站的不同页面时,这个 Cookie 会被发送到服务器,服务器通过验证这个 Cookie 来确认用户的身份,让用户可以持续地进行购物车操作、查看订单等需要登录状态的功能而无需反复登录。
2. **个性化体验**
* 网站可以根据 Cookie 中的信息为用户提供更个性化的页面内容。比如,一个新闻网站可以根据用户之前浏览的新闻类别(这些类别信息可能存储在 Cookie 中)来推荐类似的新闻。如果一个用户经常浏览体育新闻,网站就可以为该用户优先显示体育相关的新闻内容。
3. **网站分析**
* Cookie 可以用于网站流量分析。网站可以通过 Cookie 来跟踪用户的访问来源、访问频率、在网站上的停留时间等信息。这些信息可以帮助网站管理员了解用户的行为习惯,从而优化网站的内容和布局。例如,通过分析 Cookie 数据,网站可以发现用户在某些页面上停留时间较长,这可能表明这些页面内容比较吸引用户,或者存在加载速度慢等问题。
**三、限制和隐私问题**
1. **限制**
* 浏览器对 Cookie 的数量和大小有一定的限制。一般来说,每个域名下的 Cookie 总大小有限制,通常在 4KB 左右,并且每个网站可以存储的 Cookie 数量也有上限,例如一般不允许超过 20 - 50 个 Cookie。这是为了防止 Cookie 占用过多的存储空间以及避免影响浏览器的性能。
2. **隐私问题**
* Cookie 可能会引发隐私担忧。因为 Cookie 可以存储用户的个人信息,并且在不同网站之间可能会有第三方 Cookie 的跟踪。例如,一些广告公司通过在不同网站上设置第三方 Cookie 来跟踪用户在多个网站上的行为,以便为用户推送更有针对性的广告。不过,现在浏览器提供了很多隐私设置选项,用户可以选择禁止第三方 Cookie 或者定期清除 Cookie 来保护自己的隐私。