HTTP协议深入

1.了解web和网络基础

  • 有客户端和服务端双方参与交互

  • 客户端发送请求:request

  • 服务端根据请求给出响应:response

  • 请求通过URL来指定要获取都得资源

  • 响应内容可以是HTML网页,或者用json表示的数据或者其他二进制文件内容

  • Web使用一种名为HTTP的协议作为规范,完成从客户端到服务端的一系列运作流程,而协议是指定规则的约定。Web是建立在HTTP协议上的通信。

1.1 web万维网和HTTP协议

1.1.1 www万维网诞生

诞生于:1989年3月,蒂姆·伯纳斯-李 博士的一篇论文,提出了让远隔两地的研究者们共享知识的设想。

最初的理念:借助多文档之间的相关联形成超文本(HyperText),连成可互相参阅的WWW(World Wide Web,万维网)。

HTTP:HyperText Transfer Protocol,超文本传输协议。 HTML:HyperText Markup Language,超文本标记语言。 URL:Uniform Resource Locator,统一资源定位符。

1.2 HTTP的历史和版本

1.3 当下http协议的使用现状

  • 场景:除了网页,承载更多的互联网应用场景

  • 前端:不再依赖浏览器,可以是手机app,客户端或者一另个服务器

  • 传输方式:Ajax的兴起改变了原本的同步请求模式

  • 传输内容:HTML网页,二进制文件以外也可以依靠Json表示更广泛的内容

  • 数据安全:HTTP+SSL组成HTTPS协议,同时扩展更多的密码学能力

2.与http相关的的协议

2.1 TCP/IP协议族

2.1.1 IP网际协议

  • IP(Internet Protocol)协议位于网络层,负责将数据包递给对方。

  • 任何一个参与到网络上的设备都会用到IP协议,为系统分配对应的IP地址。

  • IP协议和IP地址不是一回事,IP地址是表明网络中每个设备的标签。

  • IP地址需要转换成网卡的物理地址(MAC地址)才能真正完成数据通信。实际上网络中数据传输是异常复杂的,没有人能够完全跟踪整个传输过程,网络中大小网络、广域网、城域网、局域网等嵌套,需要路由才能真正传输到目的地。

  • IP地址目前分为 IPV4 和 IPV6两个版本。

2.1.2 TCP协议

  • TCP位于传输层,提供可靠的字节流服务。

  • 将大的数据分割成报文段,并将数据可靠的传输给对方。

  • 保证可靠----三次握手策略

2.2DNS协议

让IP地址更容易被记住的DNS协议

  • DNS(Domain Name System)域名服务,与HTTP一样,位于TCP/IP分层的应用层的协议,它负责提供域名到IP地址的解析服务。

  • 域名:www.baidu.com, pic.baidu.com, sports.sina.com.cn

  • 根域名: com cn com.cn org tech info me

  • 级域名:baidu.com sina.com.cn qq.com 163.com 12306.cn

  • 子域名:pic.baidu.com sports.sina.com.cn news.qq.com

  • 如果要使用域名完成网络通讯,必须先从域名服务器获取域名对应的IP地址。

相关网络协议---各协议之间的关系图

2.3SSL,HTTPS协议

HHTP协议安全性不足

  • 公开。HTTP是一个公开的协议,任何人都可以随时了解协议的细节,并可以模仿、模拟、伪造HTTP请求获取服务端资源。

  • 网络。HTTP是为网络数据传输而生的,根本职责就是传输数据,那么网络上任何一个 传输节点,包括代理、网管、路由器等都可以随时知道HTTP传输的内容。

  • 明文。HTTP/1.1协议本身没有加密规则,所以整个报文体都是明文在网络上流转。

HTTP协议安全性的解决办法

SSL/TSL安全传输
  • SSL(Secure Socket Layer) 安全 套接层

  • TSL(Transport Layer Security)安全传输层协议

  • HTTP与SSL或TSL组合使用,建立安全通路

    • SSL+HTTP = HTTPS

    • HTTPS(HTTP Secure)超文本传输安全协议

  • SSL通路与TCP一样,为了安全和完整性都牺牲了一些效率

加密报文体

  • HTTP协议的报文分为:报文头、报文体

  • 针对报文体的明文内容,结合密码学相关技术

  • 只将报文体的内容进行加密,保证数据安全

  • 这种方式需要客户端、服务端单独支持,提高了系统实现的复杂度

  • 而密钥和加密算法可以完全私有化,安全性相对较高

实际应用中,已经更多采用两种方式结合,即加密通讯又加密报文体

3.HTTP协议

HTTP是什么?

HyperText Transfer Protocol ,超文本传输协议

  • 协议

    • 有两个或者多个参与者

    • 定义了交互的约定和规范

  • 传输

    • http是一个专门用来在两点之间传输内容的协议

    • 包括请求方和响应方

  • 超文本

    • http不仅可以传输文本

    • 还可以传输音频、视频、文件

HTPP不是什么?

  • 不是浏览器、不是操作系统

    • http只是浏览器等客户端传输数据时使用的规范

  • 不是HTML

    • http和html经常一起出现但是他们不一样

    • html是超文本的载体,传输的内容

  • 不是编程语言

    • http不是java、python这种编程语言

    • 但是可以用语言来模拟http请求

3.1 URI与URL

URI(Uniform Resource Identifier),统一资源标识符

URL(Uniform Resource Locator),统一资源定位符,也就是网址

3.2 http报文结构

一个例子

3.3 请求方法

3.4 响应状态码

3.5 http请求头

Http首部

重要的HTTP首部参数

3.6 无状态与身份认证

4.HTTP协议总结

HTTP协议特点

  • 灵活可扩展、首部、内容、状态码都可自定义

  • 可靠的传输协议、基于TCP协议

  • 是一个应用层协议,与ftp、smtp相比应用更广泛

  • 采用请求应答通讯模式,客户端和服务端(C/S)

  • 无状态的协议

  • 实体数据可分段、可压缩、支持多语言、灵活编码

HTTP/1.1的优点

  • 简单、灵活、容易扩展

  • 应用广泛、不受编程语言、软件、硬件的约束

  • 无状态减轻服务器的压力、更容易组成服务器集群

  • 明文传输让协议更容易理解、更直观、调试更容易

HTTP/1.1的缺点

  • 无状态需要Cookie技术支持

  • 明文传输让数据毫无隐私可言、不安全

  • 没有客户身份验证、容易伪装、篡改

  • 请求应答模式、对高并发网络传输有挑战

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

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

相关文章

jEasyUI 添加分页组件

jEasyUI 添加分页组件 jEasyUI(jQuery EasyUI)是一个基于jQuery的用户界面插件集合,它为用户提供了一系列的UI组件,如菜单、窗口、数据网格等,以简化Web页面的开发。分页组件是jEasyUI中的一个重要部分,它允许用户在处理大量数据时,将数据分页显示,提高用户体验和数据…

AI与大模型工程师证书研修班报名啦!

人工智能大模型是指拥有超大规模参数(通常在十亿个以上)、超强计算资源的机器学习模型,能够处理海量数据,完成各种复杂任务,如自然语言处理、图像识别等。计算机硬件性能不断提升,深度学习算法快速优化&…

ESP32CAM物联网教学03

ESP32CAM物联网教学03 物联网小车 小智突发奇想:要是我在点灯物联APP中多增加几个按钮,控制小车的行驶方向,不就可以做成遥控小车了吗? 点灯物联控制小车的行驶方向 我们可以重新编辑点灯物联APP中的设备控件界面,如…

自定义控件之动画篇(六)——联合动画的代码及xml实现

在Android中,联合动画(即组合多种类型的动画)可以通过编写Java/Kotlin代码或XML资源文件来实现。这里我们将分别展示如何通过这两种方式来实现一个简单的自定义控件动画,该动画将包含平移和缩放效果。 1. XML 资源文件实现 首先…

AI学习指南机器学习篇-梯度提升树模型应用与Python实践

AI学习指南机器学习篇-梯度提升树模型应用与Python实践 机器学习领域中的梯度提升树(Gradient Boosting Tree)模型是一种非常强大且广泛应用的模型,它在各种数据类型和问题类型上都表现出色。在本篇博客中,我们将介绍如何使用Pyt…

开关电源中强制连续FCCM模式与轻载高效PSM,PFM模式优缺点对比笔记

文章目录 前言一、连续FCCM模式优点:缺点: 二,轻载高效PSM,PFM优点:缺点: 总结 前言 今天我们来学习下开关电源中,强制连续FCCM模式与轻载高效PSM,PFM模式优缺点对比 一、连续FCCM模式 优点: …

mac中如何恢复因为破解脚本导致的IDEA无法启动的问题

问题 为了在mac中安装免费的2024版idea,导致下载了一个脚本,使用这个脚本后,但是发现idea还没有破解,相反导致idea无法启动,每次点击,都会弹出“cannot start IDE…” 问题排查 在访达中点击mac的应用程…

docker -run hello-world超时

主要原因就是尝试拉取库的时候没有从阿里云镜像里拉&#xff0c;所以设置一下就好了 这里使用的是ubuntu系统&#xff08;命令行下逐行敲就行了&#xff09; sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": [&quo…

什么是生成式人工智能

什么是生成式人工智能 生成式人工智能生成式人工智能的特点生成式人工智能的工作原理生成式人工智能的类型生成式人工智能面临的挑战数据要求训练复杂性控制输出道德问题监管障碍 生成式人工智能 生成式人工智能是指旨在生成书面文本、音频、图像或视频形式的新内容的人工智能…

Adobe Acrobat添加时间戳服务器

文章目录 前言一、Adobe Acrobat添加时间戳服务器1.打开Adobe Acrobat软件2.点击【菜单】→ 【首选项】3.点击【安全性】→【更多】4.点击【新建】5.输入【名称】→【服务器URL】 前言 一、Adobe Acrobat添加时间戳服务器 1.打开Adobe Acrobat软件 2.点击【菜单】→ 【首选项…

模拟退火算法1——简介

模拟退火算法来源于固体退火原理&#xff0c;将固体加温至充分高&#xff0c;再让其徐徐冷却&#xff0c;加温时&#xff0c;固体内部粒子随温升变为无序状&#xff0c;内能增大&#xff0c;而徐徐冷却时粒子渐趋有序&#xff0c;在每个温度都达到平衡态&#xff0c;最后在常温…

[C++][设计模式][访问器]详细讲解

目录 1.动机2.模式定义3.要点总结4.代码感受1.代码一2.代码二 1.动机 在软件构件过程中&#xff0c;由于需求的变化&#xff0c;某些类层次结构中常常需要增加新的行为(方法)&#xff0c;如果直接在基类中做这样的更改&#xff0c; 将会给子类带来很繁重的变更负担&#xff0c…

加密基本知识:密钥、签名、证书

一、密码(clpher) 是一种用于加密或者解密的算法 密码学中的密码&#xff08;cipher&#xff09;和我们日常生活中所说的密码不太一样&#xff0c;计算机术语『密码 cipher』是一种用于加密或者解密的算法&#xff0c;而我们日常所使用的『密码 password』是一种口令&#xff…

数据恢复篇:5 款最佳 Mac 数据恢复软件

说到保护我们的数字生活&#xff0c;数据恢复软件的重要性怎么强调都不为过。无论您是意外删除了假期照片的普通用户&#xff0c;还是面临硬盘损坏的专业人士&#xff0c;随之而来的恐慌都是普遍存在的。幸运的是&#xff0c;数据恢复工具可以缓解这些压力。在Mac用户可用的众多…

搜维尔科技:使用Manus VR手套和ART光学追踪功能实现虚拟场景工业仿真操作

&#xff1a;使用Manus VR手套和ART光学追踪功能实现虚拟场景工业仿真操作 搜维尔科技&#xff1a;使用Manus VR手套和ART光学追踪功能实现虚拟场景工业仿真操作

Android C++系列:JNI中的线程操作

Java中创建线程三种方式: 继承Thread类创建线程类;通过Runnable接口创建线程类;通过Callable和Future创建线程。Native 中支持的线程标准是 POSIX 线程,它定义了一套创建和操作线程的 API 。 我们可以在 Native 代码中使用 POSIX 线程,就相当于使用一个库一样,首先需要包…

android中获取视频的预览图

1.将视频导入raw文件中&#xff08;转为bitmap图像&#xff09; MediaMetadataRetriever 类主要用于从本地文件或者网络上的文件获取元数据信息&#xff0c;例如视频的帧图像、持续时间等&#xff0c;并不支持直接从网络地址获取视频帧 MediaMetadataRetriever retriever new…

zabbix小白入门:从SNMP配置到图形展示——以IBM服务器为例

作者 乐维社区&#xff08;forum.lwops.cn&#xff09;许远 在运维实践中&#xff0c;Zabbix作为一款强大的开源监控工具&#xff0c;被广泛应用于服务器、网络设备和应用程序的监控&#xff0c;成为保障业务连续性和高效运行的关键。然而&#xff0c;对于Zabbix的初学者来说&a…

FactoryBean 原理简介

FactoryBean 首先是一个工厂类&#xff0c;它可以生产指定的Bean&#xff0c;特殊之处在于它可以向Spring容器中注册两个Bean&#xff0c;一个是它本身&#xff0c;一个是FactoryBean.getObject()方法返回值所代表的Bean。通过实现 FactoryBean 接口&#xff0c;你可以控制某个…

线程和进程的区别及应用场景

线程和进程的区别及应用场景 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨计算机中两个重要的概念&#xff1a;线程和进程。这两者在操作系…