「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战」
开始之前先看两张图片
一张访问的域名是www.csdn.net,
一张是www.12306.cn
HTTP和HTTPS的基本概念
1.HTTP:超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,可以使浏览器更加高效,网络传输减少。
2.HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
说一千道一万:HTTPS主要协议作用就是:建立一个信息安全通道,来确保数组的传输,确保网站的真实性。 HTTPS = HTTP + SSL/TLS
HTTP的八种请求方式
| 方法 | 描述 | |
|---|---|---|
GET | 请求指定的页面信息,并返回实体主体 | |
HEAD | 类似于GET请求,只不过返回的响应中没有具体内容,用于获取报头 | |
POST | 向指定URL提交数据或附加新数据 | |
PUT | 和POST方法很像,也是向服务器提交数据,但是PUT指定了资源在服务器的位置 | |
| DELETE | 删除服务器上的某资源 | |
| OPTIONS | 用于获取当前URL所支持的方法,如果请求成功,会有一个Allow的头包含着“GET,POST”这样的信息 | |
| CONNECT | 将请求链接转换到TCP/IP通道 | |
| TRACE | 被用于激发一个远程的,应用层的请求消息回路 |
HTTP和HTTPS的发展历史
- 发展历史
- http/1和 http/2的区别
在同时请求相同数量的图片时,HTTP/2性能更占优势。
原因如下:
从图中就能看出来,HTTP/2采用了多路复用:通过单一的HTTP/2发起多重请求-响应消息,多个请求stream共享一个TCP连接,实现多留并行而不是依赖建立多个TCP连接。
HTTP VS HTTPS
HTTP:
- http传输的数据都是未加密的,也就是明文的。所以无法保证数据的完整性。
- 无状态:协议对客户端没有状态存储,对事物处理没有“ 记忆 ”能力,比如访问一个网站需要反复进行登陆操作。
- 无连接:在HTTP/1.1之前,每次请求都需要通过TCP三次握手和四次挥手,和服务器重新建立连接。所以每次都需要重新响应请求,需要耗费不必要的时间和流量。
- 客户端发起请求,服务端响应。
HTTPS:
- HTTPS协议是由HTTP和SSL协议构建的可进行加密传输和身份认证的网络协议,比HTTP更具有安全性。
- HTTPS需要CA证书,费用较高。
- 使用不同的链接方式,端口也不同,HTTP的端口为80,HTTPS的端口为443
HTTP工作流程
当我们从浏览器输入一个url地址之后,第一步就是要对url进行域名解析
DNS概念
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
HTTPS的工作原理
- 客户使用https url访问服务器,web服务器建立SSL链接。
- web服务器接收到客户端的请求之后,会将网络的安全证书返回给客户端。
- 客户端和web服务器端开始协商SSL链接的安全等级,也就是加密等级。
- 客户端浏览器通过协商一致的安全等级,建立会话密钥,然后通过网站的公钥来加密会话密钥,并传送给网站。
- web服务器通过自己的私钥解密会话公钥。
- web服务器通过会话密钥加密与客户端之间的连接。
HTTPS 的缺点
- HTTPS握手阶段比较费时,会使页面加载时间延长,增加耗电。
- HTTPS的缓存不如HTTP高效,会增加数据开销。
- SSL证书也需要钱,功能越强大的证书费用越高。
- SSL证书需要绑定一个IP,布恩在同一个IP上绑定多个域名,IPV4资源支持不了这种消耗。
HTTP状态码
| 状态码 | 相应类别 | 原因短句 |
|---|---|---|
| 1xx | 信息性状态码(Informations) | 服务器正在处理请求 |
| 2xx | 成功状态码(Seccess) | 请求已正常处理完毕 |
| 3xx | 重定向状态码(Redirection) | 需要进行额外操作以完成请求 |
| 4xx | 客户端错误状态码(Client Error) | 客户端原因导致服务器无法处理请求 |
| 5xx | 服务器错误状态码(Server Error) | 服务器原因导致请求出错 |
常见的HTTP状态码
- 200 OK 服务器已经成功的处理了请求.
- 204 No Content 请求成功处理,没有实体的主体返回.
- 301 Moved Permantly 请求的资源已经分配到新的URL,以后请求资源应该访问新的URL
- 302 Found 请求的资源已经分配到了新的URL,希望客户端本次能使用新的URL访问.
与301不同的是这种资源的变更时临时的 - 304 Not Modified 表示客户端附带条件请求时,服务器允许请求数据,但是未满足条件.
PS:附带条件的请求是指采用GET方法的请求报文中包含If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since中任一首部 - 400 Bad Request 请求报文中存在语法错误
- 403 Forbidden 请求资源的访问被服务器拒绝了
- 404 Not Found 服务器上无法找到请求资源
- 500 Internal Server Error 服务器端在执行请求时发生错误
- 503 Service Unavailable 服务器暂时处于超负载或正在进行停机维护
最后一道面试被问到的问题:200和304的区别
200和304的区别
当客户第一次请求服务器资源,服务器成功返回资源,这时状态码为200。状态码为200的数据包里往往包含着用户从服务器获取的数据。 **每个资源请求完成后,通常会被缓存到客户端,并会记录资源的有效时间和修改时间。**当客户再次请求该资源首先从缓存中查找该资源。如果该资源存在,并且在有效期,则不会重新请求服务器,就不会产生对应的请求数据。 如果不在有效期,客户端会重新向服务器请求数据。服务器会判断修改时间,如果没有修改过,就会返回状态码304,告诉客户端该资源仍然有效,客户端就会直接使用缓存的资源。 针对304的响应,渗透人员可以分析对应的请求包,获取资源路径。如果该资源不限制访问,就可以直接请求获取。否则,就需要进行Cookie劫持,进行获取。