探索网络模型与协议:从OSI到HTTPs的原理解析

一、OSI网络模型

OSI(Open Systems Interconnection)七层网络参考模型和TCP/IP四层模型都是用于理解和设计计算机网络的框架,但它们之间存在一些差异。

1、七层 vs 四层

OSI七层网络参考模型:

  1. 物理层(Physical Layer):
    • 负责传输比特流,定义物理连接和电气规范。
  1. 数据链路层(Data Link Layer):
    • 提供可靠的数据传输,错误检测和纠正。
  1. 网络层(Network Layer):
    • 负责数据包的路由、转发和寻址。
  1. 传输层(Transport Layer):
    • 提供端到端的通信和数据流控制。
  1. 会话层(Session Layer):
    • 管理和维护会话,确保数据的同步和顺序传输。
  1. 表示层(Presentation Layer):
    • 负责数据格式的转换,确保数据的可读性。
  1. 应用层(Application Layer):
    • 提供网络服务和应用程序接口。

TCP/IP四层模型:

  1. 链路层(Link Layer):
    • 类似于OSI的数据链路层,负责物理网络链路的操作。
  1. 网络层(Internet Layer):
    • 类似于OSI的网络层,负责数据包的路由、转发和寻址。
  1. 传输层(Transport Layer):
    • 同OSI的传输层,提供端到端的通信和数据流控制。
  1. 应用层(Application Layer):
    • 同OSI的应用层,提供网络服务和应用程序接口。

2、关系与比较:

  1. 对应关系:
    • OSI的物理层和数据链路层合并为TCP/IP的链路层。
    • OSI的会话层、表示层和应用层合并为TCP/IP的应用层。
  1. 层次数量:
    • OSI有七个层次,而TCP/IP只有四个层次。
  1. 发展历史:
    • OSI是一个理论上的参考模型,由国际标准化组织(ISO)提出。然而,TCP/IP是实际应用中首先被广泛采用的协议族,其发展始于美国国防部的ARPANET项目。
  1. 广泛应用:
    • 尽管OSI提供了一个理论框架,但TCP/IP在实际应用中更为广泛,成为互联网的基础协议。

二、网络模型与协议

OSI(Open Systems Interconnection)七层网络参考模型是一个标准的理论框架,用于理解和设计计算机网络。每一层都有特定的功能,并且网络协议通常被设计为在这个模型的特定层次上运行。下面是每一层及其与网络协议的关系:

  1. 物理层(Physical Layer):
    • 功能:传输比特流,定义物理连接和电气规范。
    • 协议和设备:以太网(Ethernet)、USB、光纤、网线等。
  1. 数据链路层(Data Link Layer):
    • 功能:提供可靠的数据传输,错误检测和纠正。
    • 协议和设备:MAC地址、PPP(Point-to-Point Protocol)、HDLC(High-Level Data Link Control)等。
  1. 网络层(Network Layer):
    • 功能:负责数据包的路由、转发和寻址。
    • 协议:IP(Internet Protocol)、ICMP(Internet Control Message Protocol)、OSPF(Open Shortest Path First)等。
  1. 传输层(Transport Layer):
    • 功能:提供端到端的通信和数据流控制。
    • 协议:TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)等。
  1. 会话层(Session Layer):
    • 功能:管理和维护会话,确保数据的同步和顺序传输。
    • 协议:NetBIOS(Network Basic Input/Output System)等。
  1. 表示层(Presentation Layer):
    • 功能:数据格式的转换,确保数据的可读性。
    • 协议:JPEG、ASCII、SSL/TLS(Secure Sockets Layer/Transport Layer Security)等。
  1. 应用层(Application Layer):
    • 功能:提供网络服务和应用程序接口。
    • 协议:HTTP(Hypertext Transfer Protocol)、FTP(File Transfer Protocol)、SMTP(Simple Mail Transfer Protocol)等。

网络协议通常被设计为在特定的OSI层次上运行,每个协议负责执行该层次的功能。例如,TCP和UDP是传输层协议,IP是网络层协议,而HTTP是应用层协议。这种分层结构有助于不同厂商和组织开发和维护独立的技术,从而提高互操作性和可扩展性。

三、Https协议

几个概念

1、文中的使用非对称加密对称密钥就是数字信封技术

2、https通讯全过程

TCP三次握手->建立SSL连接(验证双方证书身份、获取对称密钥)->建立https连接(使用对称密钥加密通讯)

HTTPS(Hypertext Transfer Protocol Secure)是一种用于安全数据传输的通信协议,它基于HTTP,但通过使用TLS(Transport Layer Security)或其前身SSL(Secure Sockets Layer)来加密数据。HTTPS的主要目的是保护网站上的用户数据,如登录信息、支付信息等,免受中间人攻击和窃听。

数字信封技术是一种加密通信的方法,用于确保数据的机密性、完整性和身份认证。它通常与非对称加密算法和数字证书结合使用。以下是数字信封技术的基本原理:

  1. 非对称加密: 在数字信封技术中,通常使用非对称加密算法,如RSA。这种算法涉及到一对密钥:公钥和私钥。公钥用于加密,而私钥用于解密。公钥可以公开分享,但私钥必须保持机密。
  2. 数字证书: 数字信封技术通常需要使用数字证书,这是由可信的证书颁发机构(CA)签发的一种电子证明,用于证明公钥的合法性。数字证书中包含了与特定实体(如网站、服务器或个人)相关联的公钥,同时还包含了CA的数字签名,用于验证证书的真实性。
  3. 数字签名: 数字信封技术使用数字签名来确保数据的完整性。数字签名是通过使用私钥对消息或数据进行加密生成的,然后可以使用公钥进行解密验证。如果数据在传输过程中被篡改,数字签名验证将失败,表明数据不再是原始的。
  4. 加密和解密过程: 发送方使用接收方的公钥来加密消息,形成数字信封。这个数字信封可以被任何人截获,但只有拥有相应私钥的接收方才能解密并读取消息。因为私钥只有接收方知道,所以只有接收方能够解密消息,从而确保了数据的机密性。

3.1、HTTPS单向身份认证

1、https建立连接过程

0)客户端与服务器建立tcp通信,经过三次握手。

1)客户端向服务器发送https请求,基本包括SSL证书版本等信息给服务器端建立连接。

2)服务器端确认SSL证书版本、服务器公钥证书、服务器随机数返回给客户端。

3)客户端校验服务器端证书是否合法(通过CA证书来验证服务器身份)。验证通过就继续下一步,验证不通过警告提示(如浏览器的警告提示)。一般CA证书的验证包括:证书信任链验证、证书有效期验证、证书是否吊销等。

4)客户端发送可支持的对称加密方案到服务器端供其选择。

5)服务器端将选择好的加密方案(算法)以明文方式发给客户端

6)客户端收到采用的加密算法后,产生随机码即预主密钥。

7)客户端把预主密钥使用服务器端的公钥(非对称加密)加密后发送到服务器端。

8)服务器端使用私钥(非对称加密)解密后获得预主密钥,并结合服务器随机数计算出主密钥即对称加密的密钥。

9)双方通过对称加密密钥(主密钥)进行加密通讯。

3.2、HTTPS双向身份认证

1)客户端通过发送Client Hello报文开始SSL通信。报文中包含客户端支持的SSL的指定版本、加密组件列表、所使用的加密算法及密钥长度、随机数Random-A等。

2)服务器可进行SSL通信时,会以Server Hello报文作为应答。和客户端一样,在报文中包含SSL版本以及加密组件(客户端支持中筛选)、服务器生成的随机数Random-B、服务器公钥证书PublicKey-B。

3)客户端校验服务器端证书PublicKey-B是否合法(通过CA证书来验证服务器身份)。验证通过就继续下一步,验证不通过警告提示(如浏览器的警告提示)。一般CA证书的验证包括:证书信任链验证、证书有效期验证、证书是否吊销等。

4)客户端将自己的公钥证书PublicKey-A发送给服务器端,供服务器验证客户端身份。客户端事先也需申请相应的SSL证书。

5)服务器校验客户端证书PublicKey-A是否合法(通过CA证书来验证服务器身份)。验证通过就继续下一步,验证不通过警告提示(如浏览器的警告提示)。一般CA证书的验证包括:证书信任链验证、证书有效期验证、证书是否吊销等。

6)客户端发送可支持的对称加密方案到服务器端供其选择。

7)服务器端将选择好的加密方案(算法)发送给客户端,报文使用客户端公钥PublicKey-A进行非对称加密。

8)客户端使用自己的私钥PrivateKey-A解密报文,并通过Random-A、Random-B推算出Random-C,也就是对称加密的密钥。

9)客户端使用服务器公钥PublicKey-B非对称加密对称密钥Random-C,发送给服务器。

10)服务器使用自己的私钥PrivateKey-B解密报文,解决出对称密钥Random-C。

11)双方完成身份验证,并使用对称密钥Random-C进行加密通讯。

3.3、浏览器Https访问过程

浏览器通过Https访问https://www.baidu.com的全过程可以分为以下几个步骤:

  • 输入网址

用户在浏览器地址栏中输入网址 https://www.baidu.com。

  • DNS解析

浏览器将网址 https://www.baidu.com 发送给本地 DNS 服务器,请求解析域名。

  • 获取IP地址

DNS 服务器将域名 https://www.baidu.com 解析为 IP 地址 14.215.177.39。

  • 建立TCP连接

浏览器使用 IP 地址 14.215.177.39 连接到百度服务器。

  • 发送HTTPS请求

浏览器发送 HTTPS 请求,请求百度服务器返回网页内容。

  • 接收HTTPS响应

百度服务器返回 HTTPS 响应,包含网页内容和证书。

  • 验证证书

浏览器验证证书的有效性。

  • 解析网页内容

浏览器解析网页内容,并显示给用户。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/171621.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人力资源管理后台 === 权限应用

目录 1.权限应用-拆分静态路由-动态路由 2.权限应用-根据用户权限添加动态路由 3.权限应用-根据权限显示左侧菜单 4.权限应用-退出登录重置路由 5.权限应用-功能权限-按钮权限标识 6.权限应用-自定义指令应用功能权限 7.其他模块-集成 8.首页-基本结构和数字滚动 9.首页…

17.找出1000之内的所有完数。

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 前言 本系列为循环结构编程题,点滴成长,一起逆袭。 一、题目描述 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,⑥的因子为1、2、3,而…

vue3+ts mitt的使用

安装mitt :npm i mitt -Smain.ts: import mitt from mittconst Mit mitt();declare module vue {export interface ComponentCustomProperties{$Bus:typeof Mit} } app.config.globalProperties.$BusMit在A组件中使用 <template><div><h1>我是A<…

【深度学习】如何找到最优学习率

经过了大量炼丹的同学都知道&#xff0c;超参数是一个非常玄乎的东西&#xff0c;比如batch size&#xff0c;学习率等&#xff0c;这些东西的设定并没有什么规律和原因&#xff0c;论文中设定的超参数一般都是靠经验决定的。但是超参数往往又特别重要&#xff0c;比如学习率&a…

建造者模式-C语言实现

UML类图&#xff1a; 代码实现&#xff1a; #include <stdio.h> #include <stdlib.h>// 产品类 typedef struct {char* part1;char* part2;char* part3; } Product;// 抽象建造者类 typedef struct {void (*buildPart1)(void*, const char*);void (*buildPart2)(v…

RabbitMQ之延迟消息实战

RabbitMQ之延迟消息实战 使用死信交换机实现延迟消息 使用死信交换机的过期时间以及没有消费者进行消费&#xff0c;时间到了就会到死信队列中&#xff0c;由此可以实现延迟消息使用延迟消息插件 前提&#xff1a;需要mq配置插件 延时信息案例实战 把一个30分钟的延迟消息可以…

前端review

关于实时预览vs code中的颜色代码需要安装的插件&#xff0c;包括html文件格式中的颜色代码安装Flutter Color插件 VSCode 前端常用插件集合 1.Auto Close Tag自动闭合HTML/XML标签 2.Auto Rename Tag自动完成另一侧标签的同步修改 3.Beautify格式化代码&#xff0c;值得注…

【高可用架构】Haproxy 和 Keepalived 的区别

Haproxy 和 Keepalived 的区别 1.负载均衡器介绍2.Haproxy 和 Keepalived 的基本概念和特点2.1 Haproxy2.2 Keepalived 3.Haproxy 和 Keepalived 的区别3.1 功能上的区别3.2 架构上的区别3.3 配置上的区别 4.总结 1.负载均衡器介绍 负载均衡器是一种解决高并发和高可用的常用的…

【开源】基于Vue和SpringBoot的农家乐订餐系统

项目编号&#xff1a; S 043 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S043&#xff0c;文末获取源码。} 项目编号&#xff1a;S043&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户2.2 管理员 三、系统展示四、核…

C/C++内存管理,malloc,realloc,calloc,new,delete详解!!!

1.初步了解内存中各个区间存储的数据特征 1.栈区&#xff1a;存储一些局部变量、函数参数、返回值等&#xff0c;跟函数栈振有关&#xff0c;出了作用域&#xff0c;生命周期结束。 2.堆区&#xff1a;用于动态开辟空间&#xff0c;如果不主动销毁空间&#xff0c;则程序运行结…

因式分解的几何意义

本来准备和女儿一起玩一道几何题&#xff0c;想想还是算了&#xff0c;不如讲点更有趣的。 任何因式分解都是在堆积木&#xff0c;不信你看&#xff1a; 二项式定理&#xff0c;洋灰三角&#xff0c;都是面积&#xff0c;体积&#xff0c;超维体积的拼接&#xff0c;一个大超…

Python 安装django-cors-headers解决跨域问题

一、PythonCorsHeaders概念 PythonCorsHeaders是一个轻量级的Python工具&#xff0c;用于解决跨域HTTP请求的问题。它允许你指定哪些网站或IP地址可以访问你的站点&#xff0c;并控制这些站点可以访问哪些内容。 现代网站越来越多地使用Ajax技术&#xff0c;使得浏览器能够从不…

【人工智能】Chatgpt的训练原理

前言 前不久&#xff0c;在学习C语言的我写了一段三子棋的代码&#xff0c;但是与我对抗的电脑是没有任何思考的&#xff0c;你看了这段代码就理解为什么了&#xff1a; void computerMove(char Board[ROW][COL], int row, int col) {while (1){unsigned int i rand() % ROW, …

设计模式之十二:复合模式

模式通常被一起使用&#xff0c;并被组合在同一个解决方案中。 复合模式在一个解决方案中结合两个或多个模式&#xff0c;以解决一般或重复发生的问题。 首先重新构建鸭子模拟器&#xff1a; package headfirst.designpatterns.combining.ducks;public interface Quackable …

【网络】传输层 --- 详解TCP协议

目录 一、协议段格式及其策略确认应答(ACK)机制6个标志位超时重传流量控制滑动窗口1、先谈滑动窗口一般情况2、再谈特殊窗口 拥塞控制拥塞窗口 延迟应答&&捎带应答面向字节流粘包问题 二、三次握手和四次挥手三次握手为什么是3次&#xff1f;不是2、4、5、6次呢 四次挥…

NoSQL基础知识小结

NoSQL 基础知识 什么是 NoSQL? NoSQL&#xff08;Not Only SQL 的缩写&#xff09;泛指非关系型的数据库&#xff0c;主要针对的是键值、文档以及图形类型数据存储。 NoSQL 数据库天生支持分布式&#xff0c;数据冗余和数据分片等特性&#xff0c;旨在提供可扩展的高可用高…

【代码】基于VMD(变分模态分解)-SSA(麻雀搜索算法优化)-LSTM的光伏功率预测模型(完美复现)matlab代码

程序名称&#xff1a;基于VMD&#xff08;变分模态分解&#xff09;-SSA&#xff08;麻雀搜索算法优化&#xff09;-LSTM的光伏功率预测模型 实现平台&#xff1a;matlab 代码简介&#xff1a;提出了变分模态分解(VMD)和麻雀搜索算法(SSA)与长短期记忆神经网络 (LSTM)相耦合,…

Spark-06:Spark 共享变量

目录 1.广播变量&#xff08;broadcast variables&#xff09; 2.累加器&#xff08;accumulators&#xff09; 在分布式计算中&#xff0c;当在集群的多个节点上并行运行函数时&#xff0c;默认情况下&#xff0c;每个任务都会获得函数中使用到的变量的一个副本。如果变量很…

Android 相机库CameraView源码解析 (一) : 预览

1. 前言 这段时间&#xff0c;在使用 natario1/CameraView 来实现带滤镜的预览、拍照、录像功能。 由于CameraView封装的比较到位&#xff0c;在项目前期&#xff0c;的确为我们节省了不少时间。 但随着项目持续深入&#xff0c;对于CameraView的使用进入深水区&#xff0c;逐…

【LeetCode】挑战100天 Day17(热题+面试经典150题)

【LeetCode】挑战100天 Day17&#xff08;热题面试经典150题&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-192.1 题目2.2 题解 三、面试经典 150 题-193.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&…