计算机网络面试专题:HTTP协议基本概念以及通信过程

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 计算机网络面试专题:HTTP协议基本概念以及通信过程、HTTPS基本概念、SSL加密原理、通信过程、中间人攻击问题、HTTP协议和HTTPS协议区别

一.知识回顾:

之前我们一起学习了HTTP1.0、HTTP1.1、HTTP2.0协议之前的区别、以及URL地址栏中输入网址到页面展示的全过程&&DNS域名解析的过程,接下来我们就来学习一下和HTTP协议的相关的考点:【强烈建议收藏:计算机网络面试专题:HTTP协议基本概念以及通信过程、HTTPS基本概念、SSL加密原理、通信过程、中间人攻击问题、HTTP协议和HTTPS协议区别】

image.png

二.HTTP协议你知道吗?通信的过程是什么样的?

2.1 HTTP协议基本概念

  1. HTTP协议,俗称超文本传输协议(Hypertext Transfer Protocol)。HTTP 协议是用来规范超文本的传输。超文本的意思就是在网络上传输包括文本在内的各式各样的消息。
  2. HTTP 是应用层协议,它以 TCP(传输层)作为底层协议,默认端口为 80。
  3. HTTP 是一个无状态(stateless)协议,也就是说服务器不维护任何有关客户端过去所发请求的消息。
  4. HTTP协议扩展性强、速度快、支持跨平台。

2.2 HTTP协议通信过程

  1. 服务器在 80 端口等待客户的请求。
  2. 浏览器发起到服务器的 TCP 连接(创建套接字 Socket)。
  3. 服务器接收来自浏览器的 TCP 连接。
  4. 浏览器(HTTP 客户端)与 Web 服务器(HTTP 服务器)交换 HTTP 消息。
  5. 关闭 TCP 连接。

三.那你知道HTTPS协议吗?HTTPS通信过程能讲讲吗?

3.1 HTTPS协议基本概念

  1. HTTPS 协议(Hyper Text Transfer Protocol Secure),是 HTTP 的加强安全版本。
  2. HTTPS 是基于 HTTP 的,也是用 TCP 作为底层协议,并额外使用 SSL/TLS 协议用作加密和安全认证。默认端口号是 443。
  3. HTTPS 协议中,SSL 通道通常使用基于密钥的加密算法,密钥长度通常是 40 比特或 128 比特。
  4. HTTPS协议保密性好、信任度高。

3.2 SSL/TLS 加密原理

HTTPS在内容传输的加密上使用的是对称加密,非对称加密只作用在公钥和私钥证书验证阶段

  1. 非对称加密:SSL/TLS 的核心要素是非对称加密,非对称加密只作用在公钥和私钥证书验证阶段。非对称加密采用两个密钥(一个公钥,一个私钥)。在通信时,私钥仅由解密者保存,公钥是由任何一个想与解密者通信的加密者所获取。
  2. 对称加密:SSL/TLS 实际对消息的加密使用的是对称加密。如果SSL/TLS采用非对称加密方案来通信, 但是非对称加密设计了较为复杂的数学公式算法,实际通信过程,代价高,效率低。所以,我们使用堆成加密的算法来对信息进行加密。

3.3 HTTPS通信过程

  1. 证书验证阶段
    (1).浏览器发起 HTTPS 请求
    (2).服务端返回 HTTPS 证书
    (3).客户端验证证书是否合法,如果不合法则提示告警
  2. 数据传输阶段
    (1).当证书验证合法后,在本地生成随机数
    (2).通过公钥加密随机数,并把加密后的随机数传输到服务端
    (3).服务端通过私钥对随机数进行解密
    (4).服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输。

具体过程如下图所示:

四.那你知道HTTPS会有什么样的不安全的问题吗?

4.1 中间人攻击

4.1.1 中间人攻击背景分析

如果CA机构不颁发证书,任何人都可以制作证书,此时就缺少对证书的验证,所以客户端发起的是 HTTPS 请求,但客户端完全不知道自己的网络已被拦截,传输内容被中间人全部窃取。那么就会出现中间人攻击的问题,足以可见有一个权威认证机构的好处。

4.1.2 中间人攻击具体过程

  1. A服务器本地请求被劫持,所有请求均发送到中间人C的服务器
  2. 中间人C服务器返回中间人C自己的证书
  3. A客户端创建随机数,通过C中间人证书的公钥对随机数加密后传送给C中间人,然后凭随机数构造对称加密对传输内容进行加密传输
  4. 中间人C因为拥有客户端的随机数,可以通过对称加密算法进行内容解密
  5. 中间人客户端C的请求内容再向正规网站B发起请求
  6. 因为中间人C与正规网站服务器B的通信过程是合法的,正规网站B通过建立的安全通道返回加密后的数据
  7. 中间人C凭借与正规网站B建立的对称加密算法对内容进行解密
  8. 中间人C通过与客户端A建立的对称加密算法对正规内容返回的数据进行加密传输
  9. 客户端A通过与中间人C建立的对称加密算法对返回结果数据进行解密

4.2 HTTPS一定是安全的吗?

4.2.1 HTTPS协议中本地随机数可能被盗取

4.2.1.1 本地随机数被盗取

证书验证是采用非对称加密实现,但是传输过程是采用对称加密,而其中对称加密算法中重要的随机数是由本地生成并且存储于本地的HTTPS

4.2.1.2 如何保证随机数不会被窃取?

其实 HTTPS 并不包含对随机数的安全保证,HTTPS保证的只是传输过程安全,而随机数存储于本地,本地的安全属于另一安全范畴,应对的措施有安装杀毒软件、反木马、浏览器升级修复漏洞等。

4.2.2 HTTPS是会被抓包的

HTTPS协议会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密。

4.2.2.1 如何防止HTTPS被抓包

HTTPS可以防止用户在不知情的情况下通信链路被监听,对于主动授信的抓包操作是不提供防护的,因为这个场景用户是已经对风险知情。要防止被抓包,需要采用应用级的安全防护,例如采用私有的对称加密,同时做好移动端的防反编译加固,防止本地算法被破解。

五.HTTP协议和HTTPS协议的区别?

  1. 端口号 :HTTP 默认是 80,HTTPS 默认是 443。
  2. URL书写格式 :HTTP 的 URL 前缀是 http://,HTTPS 的 URL 前缀是 https://。
  3. 安全性:HTTP 协议运行在 TCP 之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS 是运行在 SSL/TLS 之上的 HTTP 协议,SSL/TLS 运行在 TCP 之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。
  4. 耗费资源:HTTPS安全性高,但耗费更多服务器资源;HTTP安全性低,仅需要少量的服务器资源。

六.总结

当前看完了这篇文章,我们一起闭上眼睛仔细的想一想学会了哪些东西?看看你是否能回想起来。
这篇文章我们一起学习了如下的知识:

  1. HTTP协议你知道吗?通过的过程是什么样的?
  2. HTTPS协议吗?HTTPS通信过程能讲讲吗? SSL/TLS 加密原理?
  3. HTTPS会有什么样的不安全的问题吗?中间人攻击、本地加密对儿丢失、如果HTTPS授信登陆后会被抓包
  4. HTTP协议和HTTPS协议的区别?

内容不在多、而且于精、在于分类,在于我们分类整理之后对于整个知识体系的把控,这个是更加重要的,就好比我们该房子,先有构想,在画图纸,最后实操,整个过程形如流水,你自己也会感觉很舒服,给别人也会一种及其舒适的感觉。加油,相信自己,你一定可以的。

最后,想送给大家一句话。此刻你累了,就放松休息一下,调整一下状态,继续前行,因为时间不等人,你在成长,需要去承担起整个家庭更多的责任。坚持一点,在坚持一点。加油!

我是硕风和炜,我们下篇文章见哦!

相关文章
|
2天前
|
域名解析 存储 安全
HTTP【网络】
HTTP协议格式、HTTP的方法 、HTTP的状态码、HTTP常见的Header
15 6
HTTP【网络】
|
7天前
|
前端开发 JavaScript 安全
深入解析 http 协议
HTTP(超文本传输协议)不仅用于传输文本,还支持图片、音频和视频等多种类型的数据。当前广泛使用的版本为 HTTP/1.1。HTTPS 可视为 HTTP 的安全增强版,主要区别在于添加了加密层。HTTP 请求和响应均遵循固定格式,包括请求行/状态行、请求/响应头、空行及消息主体。URL(统一资源定位符)用于标识网络上的资源,其格式包含协议、域名、路径等信息。此外,HTTP 报头提供了附加信息,帮助客户端和服务端更好地处理请求与响应。状态码则用于指示请求结果,如 200 表示成功,404 表示未找到,500 表示服务器内部错误等。
14 0
深入解析 http 协议
|
15天前
|
数据采集 JSON API
🎓Python网络请求新手指南:requests库带你轻松玩转HTTP协议
本文介绍Python网络编程中不可或缺的HTTP协议基础,并以requests库为例,详细讲解如何执行GET与POST请求、处理响应及自定义请求头等操作。通过简洁易懂的代码示例,帮助初学者快速掌握网络爬虫与API开发所需的关键技能。无论是安装配置还是会话管理,requests库均提供了强大而直观的接口,助力读者轻松应对各类网络编程任务。
59 3
|
16天前
|
机器学习/深度学习 JSON API
HTTP协议实战演练场:Python requests库助你成为网络数据抓取大师
在数据驱动的时代,网络数据抓取对于数据分析、机器学习等至关重要。HTTP协议作为互联网通信的基石,其重要性不言而喻。Python的`requests`库凭借简洁的API和强大的功能,成为网络数据抓取的利器。本文将通过实战演练展示如何使用`requests`库进行数据抓取,包括发送GET/POST请求、处理JSON响应及添加自定义请求头等。首先,请确保已安装`requests`库,可通过`pip install requests`进行安装。接下来,我们将逐一介绍如何利用`requests`库探索网络世界,助你成为数据抓取大师。在实践过程中,务必遵守相关法律法规和网站使用条款,做到技术与道德并重。
30 2
|
18天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
48 3
|
9天前
|
JavaScript 网络协议 Windows
|
17天前
|
Python
HTTP协议不再是迷!Python网络请求实战,带你走进网络世界的奥秘
本文介绍了HTTP协议,它是互联网信息传递的核心。作为客户端与服务器通信的基础,HTTP请求包括请求行、头和体三部分。通过Python的`requests`库,我们可以轻松实现HTTP请求。本文将指导你安装`requests`库,并通过实战示例演示如何发送GET和POST请求。无论你是想获取网页内容还是提交表单数据,都能通过简单的代码实现。希望本文能帮助你在Python网络请求的道路上迈出坚实的一步。
33 0
|
9天前
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性
|
4月前
|
安全 网络协议 网络安全
IP代理的三大协议:HTTP、HTTPS与SOCKS5的区别
**HTTP代理**适用于基本网页浏览,简单但不安全;**HTTPS代理**提供加密,适合保护隐私;**SOCKS5代理**灵活强大,支持TCP/UDP及认证,适用于绕过限制。选择代理协议应考虑安全、效率及匿名需求。
|
1月前
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
文章介绍了如何配置HAProxy以支持HTTPS协议和实现服务器的动态上下线。
80 8
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
下一篇
无影云桌面