Http 协议, 前后端交互理解

本文涉及的产品
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: Http 协议, 前后端交互理解

HTTP协议引入

http超文本传输协议, 是基于 TCP/IP协议处理传输细节   的应用层协议

传输数据类型:

  1. html文本文件  text/html
  2. 图片文件
  3. 响应内容

HTTP的特征

http协议,以及从前后端交互角度去理解

http传输协议是基于 (C-S架构)双向的传输协议, C客户端发送请求, S服务器响应请求


客户端一般就是web浏览器, 服务器一般就是web服务器.  


浏览器表示前端, web服务器表示后端, 这也算是一个前端跟后端的典型交互实例了


前端浏览器像后端服务器通过URL进行全局的资源定位请求网页内容,  后端服务器接收解析请求。响应内容,响应数据.后端服务器任务: 为前端提供数据支撑, 计算支撑. 服务支撑.   服务器还可能需要连接请求第三方服务器. 通常也叫做上游服务器 (mysql,redis等)

无状态

无状态, 代表着无记忆能力. 对于历史请求没有任何的信息的记录. 历史重复的请求到来, 还是需要从新建立连接, 还是需要SSL验证, 新的请求需要用到之前的一些信息, 也必须进行一个重传, 这样对于新的连接需要传输更多的数据, 但是服务器不需要记录信息. 可以加快应答速率. 也可以降低服务器的压力.

无连接

此处的无连接并不是实际意义上的不用建立连接, 连接时需要建立的, 只不过连接仅仅支撑一次响应请求., 也就是说客户端向服务器发送一次请求. 服务端完成响应,  然后服务器确认收到客户端的ACK确认应答包.  随即断开连接

无连接的含义是限制每次连接只处理一个请求

客户端请求消息

客户端发送一个 HTTP 请求到服务器的请求消息包括以下格式:请求行(request line)、请求 头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式

服务器接收缓冲区接收到一整个缓冲区信息, 然后如何解析的. 按照行进行解析, 行分割\r\n.  回车换行进行分割   (报文规定, 协议, 双方的约定)

服务器响应消息

HTTP 响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文

简易版本的http服务器书写实现, 我们是在http协议的基础上遵循协议规则. 封装报文结构. 传输. 双方都按照头部中的协议信息进行解析,按照http协议规则解析即可.    


我们做的仅仅只是按照协议格式一行一行的解析客户端的请求 + 请求正文. 然后对于解析出来的请求进行一个响应即可. 响应正文也要按照这个协议规则格式进行封装. 就有点像写信的意思

HTTP 请求方法(常用款)

GET : 请求页面,并且需要返回页面正文 (实体)

HEAD: 几乎和GET请求一致,只不过它不需要返回实体,仅仅返回报头

POST:像服务器上传数据, 比如上传一个网页.

HTTP 响应头信息 (常用款)

Content-Length:表示正文内容长度

Content-Type:正文内容的文档类型

Content-Type:服务器名称

Content-Encoding:文档的编码方式

HTTP 状态码 (常用款)

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并 显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header) 用以响应浏览器的请求。

HTTP 状态码的英文为 HTTP Status Code。

下面是常见的 HTTP 状态码:

404  Not Found  没有找到资源(网页), URL不存在

500 Internal Server Error 服务器内部错误,无法完成请求

501 Not Implemented 服务器不支持请求的功能,无法完成请求

简单的写一个minihttp

(思路源头源于奇牛教育B栈http服务器开发, 我觉得思路讲的相当清楚,初学者友好)

相关文章
|
19天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
46 4
|
15天前
|
域名解析 缓存 网络协议
揭秘DNS协议:从'http://www.example.com'到IP地址的奇幻旅程,你不可不知的互联网幕后英雄!
【8月更文挑战第4天】在互联网的广袤空间里,每台设备都有唯一的IP地址,但记忆这些数字组合并不直观。因此,DNS(域名系统)作为关键桥梁出现,将易记的域名转换为IP地址。DNS协议工作于应用层,支持用户通过域名访问资源。DNS系统包含多级服务器,从根服务器到权威服务器,共同完成域名解析。查询过程始于客户端,经过递归或迭代查询,最终由权威服务器返回IP地址,使浏览器能加载目标网页。
46 12
|
7天前
|
安全 算法 网络协议
【在Linux世界中追寻伟大的One Piece】HTTPS协议原理
【在Linux世界中追寻伟大的One Piece】HTTPS协议原理
20 2
|
10天前
|
网络协议
Web基础与HTTP协议
【8月更文挑战第10天】
23 2
|
10天前
|
API 开发者 微服务
RPC和 HTTP协议
【8月更文挑战第8天】RPC(远程过程调用)使程序能像本地调用般请求远程服务,简化网络通信细节。其优点包括高效的数据传输及严格的类型定义,适合微服务间的高效通信。HTTP(超文本传输协议)则是用于万维网数据传输的通用协议,以文本为基础,易于理解和调试,并被广泛支持。两者各有侧重,RPC偏高速服务通信,HTTP则更适用于多样化的网络场景。选择时需根据具体需求决定。
|
19天前
|
缓存 网络协议 算法
(二)Java网络编程之爆肝HTTP、HTTPS、TLS协议及对称与非对称加密原理!
作为一名程序员,尤其是Java程序员,那必须得了解并掌握HTTP/HTTPS相关知识。因为在如今计算机网络通信中,HTTP协议的作用功不可没,无论是日常上网追剧、冲���、亦或是接口开发、调用等,必然存在HTTP的“影子”在内。尤其对于WEB开发者而言,HTTP几乎是每天会打交道的东西。
45 10
|
20天前
|
数据采集 JSON API
HTTP协议实战演练场:Python requests库助你成为网络数据抓取大师
【7月更文挑战第30天】在网络数据抓取中,Python的`requests`库凭借其简洁的API和强大功能脱颖而出。首先确保已通过`pip install requests`安装库。实战演练包括:发送GET请求获取数据(如`requests.get(url)`),处理JSON响应(利用`.json()`方法解析),添加请求头以绕过反爬虫机制(如设置`User-Agent`),以及发送POST请求提交数据。掌握这些技能的同时,务必遵守法律法规和网站政策。
41 6
|
20天前
|
数据采集 缓存 安全
http proxy 协议的工作原理与常见用途
在这篇博客文章中,我们将深入探讨HTTP代理协议的工作原理,揭示它如何在客户端和服务器之间传递HTTP请求和响应,并讨论它在各种应用场景中的常见用途。
http proxy 协议的工作原理与常见用途
|
3天前
|
网络协议
Web中的HTTP协议
Web中的HTTP协议

热门文章

最新文章