首页 > 其他分享 >HTTP协议与框架设计

HTTP协议与框架设计

时间:2023-12-26 11:32:59浏览次数:23  
标签:协议 HTTP 请求 框架 中间件 响应 服务器


HTTP协议

超文本传输协议(Hypertext Transfer Protocol ),它定义了浏览器怎样向万维网请求万维网文档,以及怎样把万维网服务器文档传送给浏览器。

HTTP协议使用URL(Uniform Resource Locator)来定位互联网上的资源。URL由协议类型、服务器地址、端口号和资源路径组成。例如,http://www.example.com/index.html一个URL,其中http是协议类型,www.example.com是服务器地址,index.html是资源路径。

HTTP是一种无状态协议,服务器不会在两个请求之间保留任何数据(状态)。

HTTP遵循经典的客户端-服务器模型,客户端打开连接发出请求,然后等待直到收到响应。客户端发送一个HTTP请求到服务器,请求可以是获取某个资源、提交表单数据等。服务器接收到请求后,根据请求的内容进行处理,并返回一个HTTP响应给客户端。响应包含一个状态码、响应头和响应体。状态码表示请求的处理结果,响应头包含一些元数据信息,响应体则是实际的数据内容。

HTTP协议中常见的方法:

HTTP4

HTTP协议还支持缓存、Cookie、会话管理等功能,可以通过请求头和响应头来进行配置和控制。此外,HTTP协议还可以使用HTTPS进行加密传输,以保证数据的安全性。

为什么需要协议?

协议是用来描述进程之间信息交换数据时的规则术语。在计算机网络中,两个相互通信的实体处在不同的地理位置,其上的两个进程相互通信,需要通过交换信息来协调它们的动作和达到同步,而信息的交换必须按照预先共同约定好的过程进行。总之,通过约定协议,确保数据的可靠传输,实现数据的交换与共享。

协议里都有什么?

HTTP3

HTTP协议的请求流程

  1. 业务层:在业务层,应用程序需要发送HTTP请求来获取或提交数据。这些请求通常由应用程序的业务逻辑触发,例如用户在浏览器中点击链接或提交表单。应用程序构造HTTP请求,并将其发送到服务治理层/中间件层。
  2. 服务治理层/中间件层:在服务治理层/中间件层,HTTP请求可能会经过一系列的中间件组件,用于处理请求的前置和后置逻辑。这些中间件组件可以包括身份验证、授权、日志记录、缓存等功能。它们可以对请求进行预处理、校验、转发等操作,以提供额外的功能和增强性能。
  3. 路由层:在路由层,HTTP请求需要被路由到正确的目标服务器。这通常由负载均衡器或路由器来完成。负载均衡器根据预定义的策略,将请求转发到多个后端服务器中的其中一个。这样可以实现请求的分发和负载均衡,以提高系统的可伸缩性和性能。
  4. 协议编解码层:在协议编解码层,HTTP请求的数据需要进行编码和解码。编码将请求的各个部分转换为字节流,以便在网络上传输。解码将接收到的字节流转换回原始的请求格式,以便服务器能够理解和处理。这个过程通常由HTTP客户端和服务器的库或框架来处理。
  5. 传输层:在传输层,HTTP请求使用TCP/IP协议进行传输。TCP/IP协议负责将请求数据分割成小的数据包,并在网络上进行传输。这些数据包在网络中经过路由器、交换机等设备,最终到达目标服务器。一旦到达服务器,TCP/IP协议将数据包重新组装成完整的请求。

HTTP框架的设计

分层设计

HTTP框架采用分层设计,各层之间通过 API 通信,这样提高了代码的复用性和拓展性。

  • 应用层——提供合理的API,确保可理解性、简单性、冗余性、兼容性、可测性和可行性
  • 中间件层——对请求进行预处理和后处理
  • 路由层——为 url 请求匹配相应的Handler处理函数
  • 协议层——抽象出合适的接口,在连接上读取数据
  • 传输层——为网络I/O提供了一个可移植的接口,包括TCP/IP、UDP、域名解析和Unix域套接字

标签:协议,HTTP,请求,框架,中间件,响应,服务器
From: https://blog.51cto.com/LowellHere/8980720

相关文章

  •  鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Toggle开关组件
     鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Toggle开关组件编辑一、操作环境操作系统: Windows10专业版、IDE:DevEcoStudio3.1、SDK:HarmonyOS3.1二、Toggle开关组件接口Toggle(options:{type:ToggleType,isOn?:boolean})参数参数名参数类型必填默认值参数描述typeToggleType......
  • 静态HTTP与HTTP/2:提升Web性能的新途径
    你是否曾经遇到过这样的场景:你迫不及待地点击一个链接,然后开始等待,等待,再等待。这种等待的痛苦,我们称之为“Web慢病”。幸运的是,随着技术的进步,我们有了一种新的“药物”来治疗这种病症——HTTP/2。让我们先回顾一下“Web慢病”的病因。其实,大部分的锅要由HTTP协议来背。作为Web的......
  • 秒懂流媒体协议 RTMP 与 RTSP
    秒懂流媒体协议RTMP与RTSP  RTMP与RTSP是比较常见的两种流媒体协议,那么什么是RTMP?什么是RTSP?它们两之间有什么区别?使用的时候应该如何选择?今天瑞哥就用人话好好和大家聊聊,如果觉得对您有帮助,可以收藏。 什么是流媒体协议?TCP和UDPTCPUDPTCP与UD......
  • 静态HTTP的未来:探讨新技术趋势
    在Web的世界里,静态HTTP一直是个不可或缺的角色。它就像一个尽职尽责的邮递员,确保数据安全、准确地送达目的地。但随着时代的发展,邮递员也需要跟上潮流,不断学习和进步。那么,静态HTTP的未来会是怎样的呢?让我们一起来探讨一下。首先,我们要明白,静态HTTP并不是要被淘汰的“老古董”。事......
  • 使用Go语言编写基本的HTTP服务器
    你是否曾经想过自己动手编写一个Web服务器?那种可以接收来自全世界的请求,然后回应一些“Hello,World!”之类的消息的服务器?如果你有这个想法,那么Go语言就是你的最佳伙伴。让我们一起踏上这段奇妙的探险之旅吧!首先,你需要安装Go语言环境。这就像给你的电脑安装一个魔法水晶球,让它拥有......
  • 使用Go处理HTTP GET请求
    你是否曾经想过,当你点击一个链接或在浏览器中输入一个网址时,背后发生了什么?其实,这是一个小小的数据冒险之旅。而今天,我们将使用Go语言作为我们的冒险伙伴,一起去探索如何处理HTTPGET请求的神秘世界!首先,我们要告诉Go语言,我们要处理的是HTTPGET请求。在Go中,我们可以使用net/http包来......
  • 使用Go处理HTTP POST请求
    在Web开发的世界里,HTTPPOST请求就像是一艘冒险船,载着客户端的请求数据,穿越网络的大海,最终到达我们的服务器。而今天,我们将使用Go语言作为我们的航海工具,一起去探索如何处理这些勇敢的探险家们!首先,要处理HTTPPOST请求,我们需要了解它的结构。POST请求通常包含一个请求体(requestbod......
  • 在Go中解析HTTP请求中的表单数据
    想象一下,你收到了一封神秘的信件,信上写着:“在HTTP请求的表单数据中,隐藏着一座宝藏,等待勇敢的冒险者前来寻找。”你知道,这封信正是冲着你来的!今天,我们将使用Go语言作为我们的寻宝地图,一起去探索如何解析HTTP请求中的表单数据!首先,为了解析HTTP请求中的表单数据,我们需要从请求中获取......
  • Unity3D MVC框架和MVVM框架优缺点详解
    Unity3D是一款非常流行的游戏开发引擎,它为开发者提供了强大的工具和功能,使得开发者能够轻松地创建各种类型的游戏。在Unity3D中,使用模型-视图-控制器(MVC)框架和模型-视图-视图模型(MVVM)框架可以更好地组织和管理游戏的逻辑和界面。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱......
  • 分布式协议详解
    目录1.分布式理论1.1拜占庭将军问题1.2CAP理论1.3BASE理论2.分布式算法协议3.分布式事务协议3.12PC3.23PC3.3TCC3.4本地事务表3.5MQ事务消息3.6最大努力通知1.分布式理论1.1拜占庭将军问题1.2CAP理论1.3BASE理论2.分布式算法协议3.分布式事务协议参考七......