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

简介: 计算机网络面试专题: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协议的区别?

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

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

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

相关文章
|
1月前
|
数据采集 存储 监控
Python 原生爬虫教程:网络爬虫的基本概念和认知
网络爬虫是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据采集、新闻聚合和价格监控等领域。其工作流程包括 URL 调度、HTTP 请求、页面下载、解析、数据存储及新 URL 发现。Python 因其丰富的库(如 requests、BeautifulSoup、Scrapy)和简洁语法成为爬虫开发的首选语言。然而,在使用爬虫时需注意法律与道德问题,例如遵守 robots.txt 规则、控制请求频率以及合法使用数据,以确保爬虫技术健康有序发展。
214 31
|
1月前
|
安全 网络安全 定位技术
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
83 22
|
1月前
|
网络安全
网络问题解析:如何解决CondaHTTPError HTTP 000 CONNECTION FAILED错误。
以上就是斯诺普为你准备的解决Conda出现HTTP连接错误的手术室。希望这辆小车可以顺利驶出棘手的泥潭,再次在自由的大路上疾驰。一切的尝试和努力,只为更好的探索与开发。
101 17
|
5月前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
5月前
|
JSON Dart 前端开发
鸿蒙应用开发从入门到入行 - 篇7:http网络请求
在本篇文章里,您将掌握鸿蒙开发工具DevEco的基本使用、ArkUI里的基础组件,并通过制作一个简单界面掌握使用
174 8
|
5月前
|
存储 JSON 缓存
【网络原理】——HTTP请求头中的属性
HTTP请求头,HOST、Content-Agent、Content-Type、User-Agent、Referer、Cookie。
|
5月前
|
数据采集 安全 搜索推荐
HTTP代理IP纯净度 提升用户网络体验的核心竞争力
随着互联网发展,使用HTTP动态代理IP的需求日益增加。高纯净度的代理IP在隐私与安全、网络体验和业务运营方面至关重要。它能保护用户信息、提高数据安全性、确保访问速度和连接稳定,并提升业务效率与信誉度。
94 2
|
5月前
|
缓存 负载均衡 监控
HTTP代理服务器在网络安全中的重要性
随着科技和互联网的发展,HTTP代理IP中的代理服务器在企业业务中扮演重要角色。其主要作用包括:保护用户信息、访问控制、缓存内容、负载均衡、日志记录和协议转换,从而在网络管理、性能优化和安全性方面发挥关键作用。
165 2
|
9月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
6月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!

热门文章

最新文章