HTTP 原理与CND原理

news2025/2/27 5:34:33

 1   HTTP 原理

          HTTP是一个无状态的协议。无状态是指客户机(Web浏览器)和服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息.HTTP 遵循请求(Request)/应答(Response)模型。客户机(浏览器)向服务器发送请求,服务器处理请求并返回适当的应答。所有 HTTP 连接都被构造成一套请求和应答。        

1.1 传输流程

1 :地址解析
如用客户端浏览器请求这个页面:http://localhost.com:8080/index.htm 从中分解出协议名、主机名、
端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:
协议名:http
主机名:localhost.com
端口:8080
对象路径:/index.htm

在这一步,需要域名系统 DNS 解析域名 localhost.com,得主机的 IP 地址。
2 : 封装 HTTP 请求数据包
把以上部分结合本机自己的信息,封装成一个 HTTP 请求数据包
3 : 封装成 TCP 包并建立连接
封装成 TCP 包,建立 TCP 连接(TCP 的三次握手)
4 : 客户机发送请求命
4)客户机发送请求命令:建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是 MIME 信息包括请求修饰符、客户机信息和可内容。
5 : 服务器响应
服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容。
6 : 服务器关闭 TCP 连接
服务器关闭 TCP 连接:一般情况下,一旦 Web 服务器向浏览器发送了请求数据,它就要关闭 TCP 连接,然后如果浏览器或者服务器在其头信息加入了这行代码 Connection:keep-alive,TCP 连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

1.2 HTTP 状态

 

1.3 HTTPS 

        HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP 通道,简单讲是 HTTP 的安全版。即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL。其所用的端口号是 443。 过程大致如下:

建立连接获取证书
1) SSL 客户端通过 TCP 和服务器建立连接之后(443 端口),并且在一般的 tcp 连接协商(握
手)过程中请求证书。即客户端发出一个消息给服务器,这个消息里面包含了自己可实现的算
法列表和其它一些需要的消息,SSL 的服务器端会回应一个数据包,这里面确定了这次通信所
需要的算法,然后服务器向客户端返回证书。(证书里面包含了服务器信息:域名。申请证书
的公司,公共秘钥)。
证书验证
2) Client 在收到服务器返回的证书后,判断签发这个证书的公共签发机构,并使用这个机构的公
共秘钥确认签名是否有效,客户端还会确保证书中列出的域名就是它正在连接的域名。
数据加密和传输
3) 如果确认证书有效,那么生成对称秘钥并使用服务器的公共秘钥进行加密。然后发送给服务
器,服务器使用它的私钥对它进行解密,这样两台计算机可以开始进行对称加密进行通信。

2 CDN 原理

        CND 一般包含分发服务系统、负载均衡系统和管理系统

2.1 分发服务系统 

        其基本的工作单元就是各个 Cache 服务器。负责直接响应用户请求,将内容快速分发到用户;同时还负责内容更新,保证和源站内容的同步。

        根据内容类型和服务种类的不同,分发服务系统分为多个子服务系统,如:网页加速服务、流媒体加速服务、应用加速服务等。每个子服务系统都是一个分布式的服务集群,由功能类似、地域接近的分布部署的 Cache 集群组成。
        在承担内容同步、更新和响应用户请求之外,分发服务系统还需要向上层的管理调度系统反馈各个Cache 设备的健康状况、响应情况、内容缓存状况等,以便管理调度系统能够根据设定的策略决定由哪个 Cache 设备来响应用户的请求。

2.2 负载均衡系统:

        负载均衡系统是整个 CDN 系统的中枢。负责对所有的用户请求进行调度,确定提供给用户的最终访问地址。
        使用分级实现。最基本的两极调度体系包括全局负载均衡(GSLB)和本地负载均衡(SLB)。GSLB 根据用户地址和用户请求的内容,主要根据就近性原则,确定向用户服务的节点。一般通过 DNS解析或者应用层重定向(Http 3XX 重定向)的方式实现。
        SLB 主要负责节点内部的负载均衡。当用户请求从 GSLB 调度到 SLB 时,SLB 会根据节点内各个Cache 设备的工作状况和内容分布情况等对用户请求重定向。SLB 的实现有四层调度(LVS)、七层调度(Nginx)和链路负载调度等。

2.3 管理系统:

        分为运营管理和网络管理子系统。
        网络管理系统实现对 CDN 系统的设备管理、拓扑管理、链路监控和故障管理,为管理员提供对全网资源的可视化的集中管理,通常用 web 方式实现。
        运营管理是对 CDN 系统的业务管理,负责处理业务层面的与外界系统交互所必须的一些收集、整理、交付工作。包括用户管理、产品管理、计费管理、统计分析等。

3 日志

3.1  Slf4j

        slf4j 的全称是 Simple Loging Facade For Java,即它仅仅是一个为 Java 程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如 JDBC 一样,只是一种规则而已。所以单独的 slf4j 是不能工作的,必须搭配其他具体的日志实现方案,比如 apache 的 org.apache.log4j.Logger,jdk 自带的 java.util.logging.Logger 等。

3.2 Log4j

        Log4j 是 Apache 的一个开源项目,通过使用 Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI 组件,甚至是套接口服务器、NT 的事件记录器、UNIX Syslog 守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
        Log4j 由三个重要的组成构成:日志记录器(Loggers),输出端(Appenders)和日志格式化器(Layout)。
1.Logger:控制要启用或禁用哪些日志记录语句,并对日志信息进行级别限制
2.Appenders : 指定了日志将打印到控制台还是文件中
3.Layout : 控制日志信息的显示格式
        Log4j 中将要输出的 Log 信息定义了 5 种级别,依次为 DEBUG、INFO、WARN、ERROR 和 FATAL,当输出时,只有级别高过配置中规定的 级别的信息才能真正的输出,这样就很方便的来配置不同情况下要输出的内容,而不需要更改代码。

3.3 LogBack

        简单地说,Logback 是一个 Java 领域的日志框架。它被认为是 Log4J 的继承人。
        Logback 主要由三个模块组成:logback-core,logback-classic。logback-access
logback-core 是其它模块的基础设施,其它模块基于它构建,显然,logback-core 提供了一些关键的通用机制。
        logback-classic 的地位和作用等同于 Log4J,它也被认为是 Log4J 的一个改进版,并且它实现了简单日志门面 SLF4J;
        logback-access 主要作为一个与 Servlet 容器交互的模块,比如说 tomcat 或者 jetty,提供一些与HTTP 访问相关的功能。

3.3.1 Logback 优点

 同样的代码路径,Logback 执行更快
 更充分的测试
 原生实现了 SLF4J API(Log4J 还需要有一个中间转换层)
 内容更丰富的文档
 支持 XML 或者 Groovy 方式配置
 配置文件自动热加载

 从 IO 错误中优雅恢复
 自动删除日志归档
 自动压缩日志成为归档文件
 支持 Prudent 模式,使多个 JVM 进程能记录同一个日志文件
 支持配置文件中加入条件判断来适应不同的环境
 更强大的过滤器
 支持 SiftingAppender(可筛选 Appender)
 异常栈信息带有包信息

3.4 ELK

        ELK 是软件集合 Elasticsearch、Logstash、Kibana 的简称,由这三个软件及其相关的组件可以打造大规模日志实时处理系统。
 Elasticsearch 是一个基于 Lucene 的、支持全文索引的分布式存储和索引引擎,主要负责将
日志索引并存储起来,方便业务方检索查询。
 Logstash 是一个日志收集、过滤、转发的中间件,主要负责将各条业务线的各类日志统一收
集、过滤后,转发给 Elasticsearch 进行下一步处理。
 Kibana 是一个可视化工具,主要负责查询 Elasticsearch 的数据并以可视化的方式展现给业
务方,比如各类饼图、直方图、区域图等。

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

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

相关文章

NSA 和 CISA 揭示十大网络安全错误配置

美国国家安全局 (NSA) 和网络安全与基础设施安全局 (CISA) 在5日公布了其红蓝团队在大型组织网络中发现的十大最常见的网络安全错误配置。 通报还详细介绍了威胁行为者使用哪些策略、技术和程序 (TTP) 来成功利用这些错误配置来实现各种目标,包括获取访问权限、横向…

内存空间扩充之进程覆盖技术,交换技术

1.覆盖技术 人们引入了覆盖技术,用来解决“程序大小超过物理内存总和”的问题。 一个固定区: 存放最活跃的程序段固定区中的程序段在运行过程中不会调入调出 若干覆盖区: 不可能同时被访问程序段可共享一个覆盖区覆盖区中的程序段在运行…

MySQL慢查询的原因与解决方案

一、前言 在数据库系统中,慢查询是一个常见的问题。特别是在MySQL中,由于其复杂的查询结构和大量的数据,慢查询可能会导致系统性能下降,甚至影响整个应用的运行。本文将详细介绍MySQL慢查询的原因,并提供一些有效的解…

基于springboot实现火车订票管理系统项目【项目源码+论文说明】计算机毕业设计

摘要 本论文主要论述了如何使用JAVA语言开发一个火车订票管理系统 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述火车订票管理系统的当前背景以及系统开发的…

免备案域名 DNS解析

1、注册购买域名地址(免备案) Name.com | Domain Names, Registration, Websites & Hosting 注意国家选中国区才可以使用支付宝,信息填写完之后创建账号,邮箱填写自己的邮箱 2、注册完登录账号进去找到Domain Name 搜索自动…

SOLIDWORKS® 2024 新功能 - 3D CAD

1、 先前版本的兼容性 • 利用您订阅的 SOLIDWORKS,可将您的 SOLIDWORKS 设计作品保存为旧版本,与使用旧版本 SOLIDWORKS 的供应商无缝协作。 • 可将零件、装配体和工程图保存为新版本前两年之内的SOLIDWORKS 版本。 优点: 即使其他用户正…

信息系统项目管理师第四版学习笔记——高级项目管理

项目集管理 项目集管理角色和职责 在项目集管理中涉及的相关角色主要包括:项目集发起人、项目集指导委员会、项目集经理、其他影响项目集的干系人。 项目集发起人和收益人是负责承诺将组织的资源应用于项目集,并致力于使项目集取得成功的人。 项目集…

Lego Studio打开solidworks零件/装配体 (sw另存obj文件)

solidworks 2020 Lego studio / part designer 截至2023-10-13🎂最新版 文章目录 操作步骤1) solidworks 开启 ScanTo3D 功能2) 零件 / 装配体 保存至stl格式文件3) 以SanTo3D网格文件方式打开stl4) 将打开的stl另存为…

港联证券:三季报亮相 盈利拐点来了?

10月12日,跟着黄山胶囊宣布深市2023年首份三季报,以及华辰装备宣布创业板首份三季报,第一批宣布三季报的A股公司增至5家。 Wind数据闪现,到10月12日记者发稿时,A股共有208家上市公司宣布了本年三季度成果预告&#xf…

基于 ACK Fluid 的混合云优化数据访问(五):自动化跨区域中心数据分发

作者:车漾 前文回顾: 本系列将介绍如何基于 ACK Fluid 支持和优化混合云的数据访问场景,相关文章请参考: -基于 ACK Fluid 的混合云优化数据访问(一):场景与架构 -基于 ACK Fluid 的混合云优…

用wpf替代winform 解决PLC数据量过大页面卡顿的问题

winform 由于不是数据驱动, 页面想刷新数据必须刷新控件, wpf则不用. 可以利用wpf 的数据绑定和IOC, 页面中的消息传递, itemscontrol 实现大量数据刷新, 上位机页面不卡顿 代码如下: <Windowx:Class"NavTest.Views.NewMainView"xmlns"http://schemas.micr…

Linu:【Kafka四】集群介绍与单机搭建

目录 环境简介 一、搭建kafka集群 1.1、复制出两个kafka的配置文件 1.2、修改配置文件中的如下属性 二、启动kafka集群 三、可校验kafka三个节点是否均启动成功 四、查看集团中主题的分区和副本 4.1、新建一个包含了分区和副本的主题 4.2、查看该主题的详细信息 五、…

EDI入门讲解——一篇文章告诉你EDI是什么

知行软件从2008年开始做EDI解决方案&#xff0c;多年来帮助国内企业建立起与交易伙伴的EDI连接&#xff0c;在国内市场已有较高的市场份额。 我们在国内有自己的研发、实施和运维团队。如果您在产品使用过程中有任何问题、有任何功能上的需求、或者在我们产品中发现了错误&…

Talk | SIGGRAPH‘23 Best Paper 秦颖思:分罗曼三维显示器—各点独立变焦显示技术

本期为TechBeat人工智能社区第537期线上Talk。 北京时间10月12日&#xff08;周四&#xff09;20:00&#xff0c;卡耐基梅隆大学博士生—秦颖思的Talk已准时在TechBeat人工智能社区开播&#xff01; 她与大家分享的主题是: “分罗曼三维显示器—各点独立变焦显示技术”&#xf…

C++入门1

C入门1 1.前言2.命名空间1.C语言对于命名空间方面的缺陷2.命名空间的语法特性1.域作用限定符2.命名空间的可嵌套性 3.声明与定义分离的命名空间4.命名空间的展开5.多个命名空间中命名冲突6.对于命名空间的推荐写法 3.iostream1.cout和endl2.cin 3.缺省参数1.缺省参数的形式2.缺…

从零开始学习调用百度地图网页API:二、初始化地图,鼠标交互创建信息窗口

目录 代码结构headbodyscript 调试 代码 <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><meta name"viewport" content"initial-scale1.0, user-scalable…

进阶JAVA篇- Math 类和 System 类和 Runtime 类的常用API(三)

目录 API 1.0 Math 类的说明 1.1 Math 类中的 abs() 方法 1.2 Math 类中的 ceil () 方法 1.3 Math 类中的 floor () 方法 1.4 Math 类中的 round () 方法 1.5 Math 类中的 max() 和 min() 方法 1.6 Math 类中的 pow(double a , double b) 方法 1.7 Math 类中的 random&a…

案例|美创科技守护健康“一盘棋”,医共体整体数据安全建设实践

以医共体之“通”&#xff0c;破解看病之“痛”。在县域组建医疗共同体&#xff0c;逐步实现区域内医疗资源共享&#xff0c;推动形成基层首诊、双向转诊、急慢分治、上下联动的分级诊疗模式&#xff0c;是实现“首诊在基层、大病不出县”&#xff0c;更好地为全县人民群众服务…

生产环境中常用Linux命令

太简单的我就不讲解啦,浪费时间,直接将生产中常用的 文章目录 1.总纲2.整机 top3.CPU vmstat3. 内存 free4. 硬盘: df5. 磁盘IO iostat6. 网络IO ifstat7: 内存过高的情景排查 1.总纲 整机:topcpu:vmstat内存:free硬盘:df磁盘io: iostat网络io:ifstat 2.整机 top 首先们要查…

阿里云服务器10M带宽收费价格表

阿里云服务器10M公网带宽收费价格表&#xff0c;地域不同带宽价格不同&#xff0c;阿里云百科以华东2&#xff08;杭州&#xff09;地域为例&#xff0c;阿里云10M带宽一年85折优惠价格5355元&#xff0c;10M带一个月525元&#xff0c;阿里云百科aliyunbaike.com分享阿里云服务…