HTTP协议深入

news2024/11/16 16:34:51

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.coloradmin.cn/o/1892270.html

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

相关文章

sideloadly 苹果自签和sidestore手机续签ipa记录

sideloadly 地址:https://sideloadly.io/#download 直接安装对应系统软件,然后吧ipa 拖到里面续签,缺点每7天需要电脑续签 如果续签保留数据需要对应的位置开启 enable file sharing 勾选 和 bundle id 修改 注意的地方需要电脑和手机appi…

DPDK概述

文章目录 1. DPDK概述1.1 DPDK 内存管理Mbuf单帧结构:1.2 DPDK内核驱动 igb_uio驱动1.3 DPDK源码下载方式1.4 pktgen源码下载方式1.5 DPDK相关名词解释 1. DPDK概述 Intel DPDK全称Intel Data Plane Development Kit,是Intel提供的数据平面开发工具集,为…

万界星空科技QMS系统:重塑质量管理新纪元

万界星空科技QMS(Quality Management System)质量管理系统是一套全面、高效的质量管理工具,旨在帮助企业提升产品质量、优化生产流程、降低质量成本。该系统具备多个具体功能模块,以下是对其主要功能模块的详细介绍: 一…

STM32远程烧录程序

目录 简介 不同的程序下载方式 ICP:In-Circuit Programming ISP:In-System Programing IAP:In-Application Programming BootLoader Bootloader 是什么? STM32的启动方式 存储器组织 存储器映像 嵌入式SRAM 嵌入式FL…

LVS负载均衡群集部署之——DR模式的介绍及搭建步骤

一、LVS-DR集群介绍1.1 LVS-DR 工作原理1.2 数据包流向分析1.3 LVS-DR 模式的特点1.4 LVS-DR中的ARP问题1.4.1 问题一1.4.2 问题二二、构建LVS-DR集群2.1 构建LVS-DR集群的步骤(理论)1.配置负载调度器(192.168.80.30)(…

UnityUGUI流动效果轻松实现:告别复杂Shader,一招搞定动态背景

引言 在Unity开发过程中,我们常常会遇到这样一个需求:将一张简单的图片通过平铺效果进行展示,以此来减少图片的大小。这个操作非常简单,只需将Image的Type设置为Tiled,然后调整RectTransform的尺寸即可。但有时候&…

Git 操作补充:cherry-pick、变基

1. 挑选提交合并 git cherry-pick 对于多分支的代码库,将代码从一个分支转移到另一个分支是一种常见的需求,这可以分成两种情况:一种情况是,你需要另一个分支的所有代码变动,那么就采用 git merge;另一种情…

mybatis mapper.xml 比较运算符(大于|小于|等于)的写法: 转义和<![CDATA[]]>

文章目录 引言I 使用xml 原生转义的方式进行转义II 使用 <![CDATA[ 内容 ]]>引言 应用场景:查询时间范围 背景:在 *.xml 中使用常规的 < > = <= >= 会与xml的语法存在冲突 <![CDATA[]]> 比 转义符 来的繁琐 <![CDATA[]]> 表示xml解析器忽略…

HTML CSS 基础复习笔记 - 列表使用

用于自己复习 自定义列表 示例代码 <!DOCTYPE html> <html> <head><title>Definition List Example</title> </head> <body><h1>古诗</h1><dl><dt>静夜思</dt><dd>床前明月光&#xff0c;疑…

AI大模型本地简易搭建方式

AI大模型本地简易搭建方式 前言步骤下载Ollama安装Ollama修改Ollama中下载模型的位置检查Ollama是否安装成功下载模型尝试与模型对话使用API访问模型下载Docker&#xff08;后续补充Docker运行OpenWebUI方式&#xff09;总结 前言 朋友想要实现一个本地ChatGPT风格的对话功能&…

Golang基础问题

Go基础 文章目录 Go基础● Go有那些关键字&#xff1f;● Go方法与函数的区别&#xff1f;● Go函数返回局部变量的指针是否安全&#xff1f;● Go函数参数传递是值传递还是引用传递&#xff1f;● defer关键字的实现原理&#xff1f;● 内置函数make和new的区别&#xff1f;●…

Linux内网端口转公网端口映射

由于服务商做安全演练&#xff0c;把原先服务器内网的端口映射到外网端口全都关闭了&#xff0c;每次维护服务器特别麻烦&#xff0c;像数据库查询如果用原生的mysql 去连接&#xff0c;查询返回的结果乱了&#xff0c;非常不方便。 查了服务还是可以正常访问部分外网的&#x…

数据脱敏方案(doc)

数据脱敏工作不仅要确保敏感信息被去除&#xff0c;还需要尽可能的平衡脱敏所花费的代价、使用方的业务需求等多个因素。因此&#xff0c;为了确保数据脱敏的过程、代价可控&#xff0c;得到的结果正确且满足业务需要&#xff0c;在实施数据脱敏时&#xff0c;应从技术和管理两…

JAVA 实现拍卖框架及拍卖详情流程介绍(包含代码示咧)

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

宏景eHR sduty/getSdutyTree SQL注入漏洞复现

0x01 产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化、协同化、流程化、战略化需求的软件。 0x02 漏洞概述 宏景eHR /servlet/sduty/getSdutyTree 接口处存在SQL注入漏洞,,未经身份验证的远程攻击者通过利用SQL注入漏洞配合数据库xp_c…

Mybatis-01 原理

一. JDBC式编程 在 jdbc 编程中&#xff0c;我们最常用的是 PreparedStatement 式的编程&#xff0c;我们看下面这个例子&#xff1b; Connection conn null; PreparedStatement ps null; ResultSet rs null;try {// 1. 注册驱动Class.forName("com.mysql.jdbc.Drive…

【MySQL】数据类型{tinyint/bit/float/decimal/char/varchar/date/enum/set}

文章目录 1.数据类型分类2.数值类型2.1tinyint 1字节2.2bit 0-64位2.3浮点类型float 4个字节decimal 3.字符串类型char开多少空间为多大varchar开多少是上限 存多少占多大空间日期和时间类型enum和setenum&#xff1a;枚举&#xff0c;“单选”类型&#xff1b;set&#xff1a;…

从一次 SQL 查询的全过程了解 DolphinDB 线程模型

1. 前言 DolphinDB 的线程模型较为复杂&#xff0c;写入与查询分布式表都可能需要多个类型的线程。通过了解 SQL 查询的全过程&#xff0c;可以帮助我们了解 DolphinDB 的线程模型&#xff0c;掌握 DolpinDB 的配置&#xff0c;以及优化系统性能的方法。 本教程以一个分布式 …

Python基于卷积神经网络分类模型(CNN分类算法)实现时装类别识别项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 在深度学习领域&#xff0c;卷积神经网络&#xff08;Convolutional Neural Networks, CNNs&#xff0…

python拉取gitlab项目以及拉取报错处理

问题解决 问题1、unable to access https://gitlab.dome.com/web-dome/dome.git/: SSL certificate problem: self signed certificate 解决&#xff1a;打开本地git bash输入下面代码 git config --global http.sslVerify false; 问题2、Authentication failed for https:…