当前位置: 首页 > news >正文

60 # http 的基本概念

什么是 HTTP?

通常的网络是在 TCP/IP 协议族的基础上来运作的,HTTP 是一个子集。http 基于 tcp 的协议,在 tcp 的基础上增加了一些规范,就是 header,学习 http 就是学习每个 header 它有什么作用。

TCP/IP 协议族

协议简单来说就是通信规则,例如:通信时谁先发起请求,怎样结束,如何进行通信。把互联网相关的协议统称起来称为 TCP/IP

协议分层

OSI (Open System Interconnection 开放式系统互联参考模型)定义了网络互连的七层模型:

  • 物理层:管理通信设备和网络媒体之间的互联互通。
  • 数据链路层:提供介质访问和链路管理。
  • 网络层:IP选址及路由选择。
  • 传输层:数据通信。
  • 会话层:创建、管理和维护会话。
  • 表示层:数据编码、格式转换、数据加密。
  • 应用层:为应用程序或用户请求提供各种请求服务。

如下图所示:

实现的时候一般分层四层:

  • 链路层(物,数):网络连接的硬件部分
  • 网络层:IP 选择传输路线(通过 ip 地址和 mac 的地址)(使用 ARP 协议凭借 mac 地址进行通信)
  • 传输层:TCP 协议(可靠),UDP 协议,数据传输(HTTP -> TCP,DNS -> UDP)
  • 应用层(会,表,应):HTTP,FTP,DNS(与其他计算机进行通讯的一个应用服务,向用户提供应用服务时的通信活动)

访问页面过程 TCP/IP 通信协议:

  • 通过 DNS 协议解析域名获取对应的 ip 地址
  • 通过 HTTP 协议传输数据,生成针对目标 Web 服务器的 HTTP 请求报文
  • 为了方便通信,通过 TCP 协议会将 HTTP 请求的报文分割成报文段,按序号分为多个报文段,把每个报文段可靠的传给对方
  • 通过 IP 协议搜索对方的地址,一边中转一边传送
  • 通过 TCP 协议从对方那里接收到的报文段,在重组到达的报文段,按序号以原来的顺序重组请求报文
  • 通过 HTTP 协议对 web 服务器请求的内容处理

HTTP 特点

创建一个服务器必须要有一个特定的 ip 地址,一个端口号,客户端给服务器发的 request 对象,服务端给客户端发信息 response 对象。

  1. 默认无状态:http 是不保存状态的协议,可以使用 cookie 来管理状态
  2. http(1.1) 使用 keep-alive:不会断开连接保持链接,防止每次请求都会造成无谓的 tcp 链接建立和断开
  3. 默认管线化:以前发送请求后需要等待并收到响应,才能发下一个,现在都是管线化的方式,可以并发请求

HTTP 缺点

  • 通信采用明文
  • 不验证通信方的身份
  • 无法验证内容的完整性(内容可能被篡改)(可使用 https 处理)

HTTP 方法

请求方法:

  • GET:通过 url 传递数据
  • POST:请求体传递数据

工具

  • postman:(可视化请求工具)
  • curl:需要安装 git (命令行)

RESTFUL 风格:不是规范,就是根据不同的请求的方法来实现对服务器的资源进行操作

  • get:请求数据
  • post:增加数据
  • delete:删除数据
  • put:修改数据
  • options:预检请求(跨域默认情况下就有可能发 options 请求)

简单请求:get 和 post 就是简单请求

复杂请求:get 和 post 如果加了自定义 header,会变成复杂请求。其他的方法都是复杂请求。如果发送的是复杂的请求默认会先发送 options 请求。

跨域:协议、域名、端口号有一个不相等都是跨域。

解决跨域的常见方式:

  • cors(服务端解决跨域,添加跨域头)
  • jsonp
  • nginx(反向代理)
  • websocket

不常见的解决跨域方式:

  • iframe
  • postMessage
  • window.name
  • document.domain
  • location.hash

HTTP 状态码

  • 101:websocket
  • 2xx
    • 200:成功
    • 204:成功了但没有响应体
    • 206:断点续传(返回部分数据)curl -v --header Range:bytes=0-1024 www.baidu.com
  • 3xx
    • 301:永久重定向
    • 302:临时重定向
    • 304:服务器缓存
    • 307:重定向(不会把 POST 转为 GET)
  • 4xx
    • 400:客户端参数不正确
    • 401:没有权限,没登录
    • 403:没有权限,登陆了没权限
    • 404:找不到
    • 405:服务器不支持此方法 not allowed method
  • 5xx
    • 500:服务端的问题
    • 502:负载均衡出现问题
    • 503:服务端报错

报文

请求的报文

  • 请求行:包含请求方法、请求路径(不包括 hash)、http 的版本号(可以通过传参)
  • 请求头:也可以传递数据,自定义的 header
  • 请求体:可以放数据,传递数据二进制…

响应的报文

  • 响应行:http 的版本、状态码、响应短语
  • 响应头:自定义响应信息
  • 响应体:返回给浏览器的内容

相关文章:

60 # http 的基本概念

什么是 HTTP? 通常的网络是在 TCP/IP 协议族的基础上来运作的,HTTP 是一个子集。http 基于 tcp 的协议,在 tcp 的基础上增加了一些规范,就是 header,学习 http 就是学习每个 header 它有什么作用。 TCP/IP 协议族 协…...

云计算迎来中场战役,MaaS或将成为弯道超车“新赛点”

科技云报道原创。 没有人能预见未来,但我们可以因循常识,去捕捉技术创新演进的节奏韵脚。 2023年最火的风口莫过于大模型。 2022年底,由美国初创企业OpenAI开发的聊天应用ChatGPT引爆市场,生成式AI成为科技市场热点&#xff0c…...

最新基于Citespace、vosviewer、R语言的文献计量学可视化分析技术及全流程文献可视化SCI论文高效写作方法

文献计量学是指用数学和统计学的方法,定量地分析一切知识载体的交叉科学。它是集数学、统计学、文献学为一体,注重量化的综合性知识体系。特别是,信息可视化技术手段和方法的运用,可直观的展示主题的研究发展历程、研究现状、研究…...

Hive调优集锦(2)

3.8 Join 优化 Join优化整体原则: 1、优先过滤后再进行 join 操作,最大限度的减少参与 join 的数据量 2、小表 join 大表,最好启动 mapjoin,hive 自动启用 mapjoin, 小表不能超过25M,可以更改 3、Join on的条件相同的…...

一文谈谈Git

"And if forever lasts till now Alright" 为什么要有git? 想象一下,现如今你的老师同时叫你和张三,各自写一份下半年的学习计划交给他。 可是你的老师是一个极其"较真"的人,发现你俩写的学习计划太"水&…...

嵌入式数据库之SQLite

1.SQLite简介 轻量化,易用的嵌入式数据库,用于设备端的数据管理,可以理解成单点的数据库。传统服务器型数据 库用于管理多端设备,更加复杂。 SQLite是一个无服务器的数据库,是自包含的。这也称为嵌入式数据库&#x…...

idea下tomcat运行乱码问题解决方法

idea虚拟机选项添加-Dfile.encodingUTF-8...

人工智能TensorFlow MNIST手写数字识别——实战篇

上期文章TensorFlow手写数字-训练篇,我们训练了我们的神经网络,本期使用上次训练的模型,来识别手写数字(本期构建TensorFlow神经网络代码为上期文章分享代码) http://scs.ryerson.ca/~aharley/vis/conv/ 0、插入第三方库 from PIL import Image# 处理图片 import tensorf…...

Vue 本地应用-计数器

逻辑是在点击按钮的时候执行&#xff0c;那么要为按钮绑定点击事件&#xff0c;整体语法如下&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>首页</title><link href"" type"text/c…...

深入了解HTTP代理在网络爬虫与SEO实践中的角色

随着互联网的不断发展&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;成为各大企业和网站重要的推广手段。然而&#xff0c;传统的SEO方法已经难以应对日益复杂和智能化的搜索引擎算法。在这样的背景下&#xff0c;HTTP代理爬虫作为一种重要的工具&#xff0c;正在逐渐被…...

使用docker搭建nacos

使用docker搭建nacos docker搭建最新版nacosMySQL下简历nacos配置数据表拉取镜像创建挂载目录启动容器访问nacos docker搭建nacos 2.0版本 docker搭建最新版nacos 最近想在自己服务器上搭建一个nacos服务&#xff0c;以前一直在本地的windows上使用&#xff0c;而且使用着naco…...

flask中的常用装饰器

flask中的常用装饰器 Flask 框架中提供了一些内置的装饰器&#xff0c;这些装饰器可以帮助我们更方便地开发 Web 应用。以下是一些常用的 Flask 装饰器&#xff1a; app.route()&#xff1a;这可能是 Flask 中最常用的装饰器。它用于将 URL 路由绑定到一个 Python 函数&#x…...

SQL基础语法 | 增删改查、分组、排序、limit

Shell命令框和Navicat联合使用 一、数据库层面 创建数据库 postgres# CREATE DATABASE runoobdb;查看数据库 postgres# \l选择数据库 postgres# \c runoobdb删除数据库 postgres# DROP DATABASE runoobdb;二、表格层面 创建表格 CREATE TABLE table_name(字段名称 字段数据类型…...

QT: 用定时器完成闹钟的实现

闹钟项目&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> #include <QTime> #include <QDebug> #include <QTextToSpeech> #include <QMessageBox> #include <QTimer>QT_BEGIN…...

Boyer-Moore 投票算法

这里先贴题目&#xff1a; Boyer-Moore 投票算法&#xff1a; 通俗点来讲&#xff0c;就是占领据点&#xff0c;像攻城那样&#xff0c;对消。 当你的据点有人时对消&#xff0c;无人时就占领。 这道题使用该算法可实现时间复杂度为O(n),空间复杂度为O(1)&#xff0c;接下来看…...

C# 翻转二叉树

226 翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 示例 2&#xff1a; 输入&#xff1a;root [2,1,3] 输出&#xff1a;…...

RocketMQ教程-(5)-功能特性-消费者分类

Apache RocketMQ 支持 PushConsumer 、 SimpleConsumer 以及 PullConsumer 这三种类型的消费者&#xff0c;本文分别从使用方式、实现原理、可靠性重试和适用场景等方面为您介绍这三种类型的消费者。 背景信息​ Apache RocketMQ 面向不同的业务场景提供了不同消费者类型&…...

Kafka原理剖析

一、简介 Kafka是一个分布式的、分区的、多副本的消息发布-订阅系统&#xff0c;它提供了类似于JMS的特性&#xff0c;但在设计上完全不同&#xff0c;它具有消息持久化、高吞吐、分布式、多客户端支持、实时等特性&#xff0c;适用于离线和在线的消息消费&#xff0c;如常规的…...

word怎么转换成pdf?分享几种转换方法

word怎么转换成pdf&#xff1f;将Word文档转换成PDF文件有几个好处。首先&#xff0c;PDF文件通常比Word文档更容易在不同设备和操作系统上查看和共享。其次&#xff0c;PDF文件通常比Word文档更难以修改&#xff0c;这使得它们在需要保护文件内容的情况下更加安全可靠。最后&a…...

基于XDMA 中断模式的 PCIE3.0 QT上位机与FPGA数据交互架构 提供工程源码和QT上位机源码

目录 1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案图像产生、发送、缓存数据处理XDMA简介XDMA中断模式图像读取、输出、显示QT上位机及其源码 5、vivado工程详解6、上板调试验证7、福利&#xff1a;工程代码的获取 1、前言 PCIE&#xff08;PCI Express&#…...

解密Qwen2VLImageProcessor:从RGB转换到时空补丁的完整预处理流水线

解密Qwen2VLImageProcessor&#xff1a;从RGB转换到时空补丁的完整预处理流水线 在计算机视觉与多模态模型融合的前沿领域&#xff0c;图像预处理流水线的设计质量直接影响着模型性能的天花板。Qwen2VLImageProcessor作为专为Qwen2-VL模型设计的预处理引擎&#xff0c;其独特之…...

WPF Chart控件实战:构建高性能实时数据监控曲线

1. WPF Chart控件基础入门 第一次接触WPF Chart控件时&#xff0c;我也被它强大的功能震撼到了。这个控件就像是一个神奇的画板&#xff0c;能够将枯燥的数据变成直观的曲线图。在工业监控系统中&#xff0c;我们经常需要实时显示温度、压力等参数的变化趋势&#xff0c;这时候…...

如何在Ozon产品测款?用CaptainAI精准锁定爆款潜力款

做Ozon运营&#xff0c;测款是店铺长期盈利的关键——选对款能事半功倍&#xff0c;测错款则会积压库存、浪费成本&#xff0c;中小卖家资金精力有限&#xff0c;盲目铺货测款易陷入“高投入、低回报”困境。很多卖家测款常踩坑&#xff1a;凭感觉跟风选热门款&#xff0c;竞争…...

[双重嵌入架构]:实现高精度人脸生成的AI解决方案

[双重嵌入架构]&#xff1a;实现高精度人脸生成的AI解决方案 【免费下载链接】IP-Adapter-FaceID 项目地址: https://ai.gitcode.com/hf_mirrors/h94/IP-Adapter-FaceID 1. 技术原理&#xff1a;双重嵌入架构的创新突破 1.1 并行特征处理机制 IP-Adapter-FaceID Plus…...

Umi-OCR深度指南:离线OCR技术的架构解析与全场景实战

Umi-OCR深度指南&#xff1a;离线OCR技术的架构解析与全场景实战 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件&#xff0c;适用于Windows系统&#xff0c;支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/GitHu…...

大语言模型,视觉模型,全模态模型,语音模型和向量模型的区别和使用

1. 大语言模型&#xff08;Large Language Model, LLM&#xff09;定义&#xff1a;以文本为输入&#xff0c;生成文本的模型。特点&#xff1a;输入输出都是自然语言&#xff08;或包含少量结构化的 prompt&#xff09;。擅长对话、写作、推理、代码生成等任务。在 LangChain …...

群晖NAS人脸识别功能解锁指南:让旧设备焕发AI新活力

群晖NAS人脸识别功能解锁指南&#xff1a;让旧设备焕发AI新活力 【免费下载链接】Synology_Photos_Face_Patch Synology Photos Facial Recognition Patch 项目地址: https://gitcode.com/gh_mirrors/sy/Synology_Photos_Face_Patch 为何老款群晖NAS需要AI能力升级&…...

从手机照片同步到数据去重:用C++ STL set/map搞定‘两个数组交集’背后的真实业务逻辑

从手机照片同步到数据去重&#xff1a;用C STL set/map搞定‘两个数组交集’背后的真实业务逻辑 每次换新手机时&#xff0c;最头疼的莫过于照片和联系人的迁移——那些重复的截图、相似的风景照、多年前的证件照&#xff0c;究竟该如何高效筛选&#xff1f;这背后隐藏的正是计…...

捉妖雷达Web版:如何解决游戏数据实时同步的技术挑战?

捉妖雷达Web版&#xff1a;如何解决游戏数据实时同步的技术挑战&#xff1f; 【免费下载链接】zhuoyao_radar 捉妖雷达 web版 项目地址: https://gitcode.com/gh_mirrors/zh/zhuoyao_radar 捉妖雷达Web版是一个开源的游戏辅助工具项目&#xff0c;旨在为捉妖游戏玩家提供…...

【C++ 面试突击 · 07】大厂高频面试题:从菱形继承到const与constexpr的博弈深度解析

目录 1. 什么是菱形继承&#xff1f;怎么解决菱形继承&#xff1f; 2. 如何定义一个只能在堆上&#xff08;栈上&#xff09;生成对象的类&#xff1f; 3. C 强制类型转换运算符有哪些&#xff1f; 4. C 中的类型推导&#xff08;auto&#xff09;是如何工作的&#xff1f;…...