简明HTTP协议

Windows 2003无法访问HTTPS网站解决方案(补丁) Windows 2003无法访问HTTPS网站解决方案(补丁) 解决服务器不支持证书问题! 立即下载

简明HTTP协议

简明HTTP协议WEB与HTTP协议背景WEB基础——3项重要的技术WEB常用的结构组件——5项重要的组件HTTP的发展——协议版本HTTP协议简介HTTP传输过程浏览器访问资源的过程HTTP报文格式结构报文结构请求起始行与请求方法响应起始行与响应状态码首部(header)请求首部响应首部实体首部主体(body)更多的主题TCP/IP协议簇无状态HTTP的解决方案网络攻防与HTTPS参考书目

WEB与HTTP协议

背景

1989 年 3 月, CERN(欧洲核子研究组织)的蒂姆 • 伯纳斯 - 李(Tim BernersLee)博士提出了一种能让远隔两地的研究者们共享知识的设想。最初设想的基本理念是:借助多文档之间相互关联形成的超文本(HyperText),连成可相互参阅的 WWW(World Wide Web,万维网),这就是WEB的雏形。每一项重大的发明后,就会带来巨大的市场和激烈的竞争。自WEB发明后,由于用户需要使用浏览器访问WEB资源,微软公司、网景通信公司、Mozilla 基金会推出自家的浏览器抢占市场。浏览器供应商之间的竞争导致程序员在写 HTML 页面时,必须考虑各种各样的兼容性。不过事有两面,对用户而言可供选择的浏览器也很多。现在市面上主流的浏览器有Chrome、Internet Explorer 、Firefox 、Netscape Navigator 、Opera、Safari

WEB基础——3项重要的技术

  • HTML 作为页面的文本标记语言的 HTML(HyperText Markup Language,超文本标记语言),目前HTML语言已发展到HTML5,未来我将写一篇简明介绍HTML5的文章。

  • URI 指定文档所在地址的 URI(Uniform Resource Identifier,统一资源标识符),URI分为URL和URN两种,可以看看我写的简明URI。

  • HTTP 作为文档传递协议的 HTTP(HyperText Transfer Protocol,超文本传输协议),这里可以将协议理解为一种大家约定好的规则;现在 HTTP 协议从0.9已经发展到2.0,并且已经超出了 Web 这个框架的局限,被运用到各种场景中。

WEB常用的结构组件——5项重要的组件

  • 代理,HTTP代理服务器位于客户端与服务器之间,是实现WEB安全、应用集成、性能优化的重要模块。由于WEB流量经过代理服务器转发,因此相当于一个中介,由于所有WEB流量内容都会经过代理,于是代理服务器可以通过内容过滤、转发等手段实现WEB安全保障、应用集成和优化。

  • 缓存,其实也是一种特殊的HTTP代理服务器,一般将代理过程中传送的文档、数据保存起来,当客户端再次访问可以直接交付给客户端,减少了网络中转和服务器压力。

  • 网关,是一类特殊服务器,主要解决的协议适配与转换的问题。例如浏览器请求文件时,当客户机以HTTP协议访问网关时,网关可以将协议转换为FTP协议去访问FTP服务器,实现静默无感知的协议转换。

  • 隧道,用于保证客户机和服务器全通讯,常用与HTTPS协议中的SSL安全传输。

  • 客户端代理,浏览器就是最常见的客户端代理软件,同时网络爬虫、无头浏览器等也属于客户端代理。

HTTP的发展——协议版本

  • HTTP 0.9 这个协议有很多严重的设计缺陷,只应该用于与老客户端的交互。HTTP/0.9只支持 GET 方法,不支持多媒体内容的 MIME 类型、各种HTTP首部,或者版本号。HTTP/0.9定义的初衷是为了获取简单的HTML对象,它很快就被HTTP/1.0取代了。

  • HTTP 1.0 虽说是初期标准,但该协议标准至今仍被广泛使用在服务器端,它集合了一系列最佳实践。正式作为标准被公布是在 1996 年的 5 月,版本被命名为 HTTP/1.0,并记载于 RFC1945。

  • HTTP/1.1 是目前主流的 HTTP 协议版本。包括许多特性,包括持久的Keep-alive连接,虚拟主机支持、代理连接支持等。当初的标准是 RFC2068,之后发布的修订版 RFC2616 就是当前的最新版本,于1997年公布。

  • HTTP/2.0 新一代 也成为了HTTP NG,NG是Next Generation的缩写。它关注性能的大幅提升以及逻辑远程执行框架,不过要达到较高的使用覆盖率,仍需假以时日。

HTTP协议简介

HTTP传输过程

一条(从客户端发往服务器的)请求命令和一个(从服务器发回客户端的)响应结果组成了一个HTTP事务 请求和响应都被称为HTTP报文(HTTPmessage),这是一种格式化后的数据块。报文流入源端服务器,工作完成之后,会流回用户的客户端.

浏览器访问资源的过程

当我们使用浏览器访问一个网站时,会使用到DNS协议查询主机IP信息,传输的数据经过由高层向下层协议流动,由下层TCP协议将数据包将按大小拆分为多个片段并控制数据包的完整性,由IP协议进行数据传输,当到达服务器资源后又会逐层解包合并。 通过层次划分与抽象,高层协议不需要关心底层逻辑,简化了复杂的通讯逻辑。层次化、模块化是计算机架构中的最常用和最有效的思维。

HTTP报文格式结构

报文结构

HTTP报文是按协议格式进行组装的。无论是客户端的请求还是服务器的响应都是一条HTTP报文。它们由三个部分组成:分别是起始行、头、体。具体点就是:对报文进行描述的起始行(start line)、包含属性的首部(header)块、包含数据的主体(body)部分。

起始行(start line)

所有的HTTP报文都以一个起始行作为开始。请求报文的起始行说明了要做些什么。响应报文的起始行说明发生了什么。

请求起始行与请求方法

请求起始行或称为请求行,包含了一个方法和一个请求 URL,这个方法描述了服务器应该执行的操作,请求 URL描述了要对哪个资源执行这个方法。请求行中还包含HTTP的版本,用来告知服务器,客户端使用的是哪种HTTP。请求方法为 GET,请求 URL为/test/hi-there.txt,版本为HTTP/1.1。

HTTP规范中的7种请求方法,以及其含义,见下表。

  • GET 是最常用的方法。通常用于请求服务器发送某个资源。。

  • HEAD 方法与 GET 方法的行为很类似,但服务器在响应中只返回首部。不会返回实体的主体部分。这就允许客户端在未获取实际资源的情况下,对资源的首部进行检查,例如查看对象是否存在或者被修改。

  • PUT 方法会向服务器写入文档。有些发布系统允许用户创建Web页面,并用 PUT 直接将其安装到Web服务器上去。

  • POST 方法起初是用来向服务器输入数据的。实际上,通常会用它来支持HTML的表单。表单中填好的数据通常会被送给服务器,然后由服务器将其发送到它要去的地方。

  • TRACE 方法允许客户端在最终将请求发送给服务器时,看看它变成了什么样子。用于诊断工具,可以用来查看代理和其他应用程序对用户请求所产生效果请求会在目的服务器端发起一个诊断。服务器会弹回一条响应,并在响应主体中携带它收到的原始请求报文。这样客户端就可以查看在所有中间HTTP应用程序组成的链路上,原始报文是否,以及如何被毁坏或修改过。

  • OPTIONS 方法请求Web服务器告知其支持的各种功能。

  • DELETE 方法所做的事情就是请服务器删除请求 URL所指定的资源。但是,客户端应用程序无法保证删除操作一定会被执行。

响应起始行与响应状态码

称为响应行。响应报文承载了状态信息和操作产生的所有结果数据,将其返回给客户端。包含了响应报文使用的HTTP版本、数字状态码,以及描述操作状态的文本形式的原因短语。图中,HTTP版本为HTTP/1.0,状态码为200(表示成功),原因短语为 OK,表示文档已经被成功返回了。状态码和原因短语是成对出现的。原因短语是状态码的可读版本,应用程序开发者将其传送给用户,用以说明在请求期间发生了什么情况。

100-199是信息状态码,其复杂性和感知价值存在一些争议。客户端应用程序只有在避免向服务器发送一个服务器无法处理或使用的大实体时,发送的HTTP头会带有一个值为100Continue 的Expect首部的请求,服务器会用100Continue 响应。

200-299是成功状态码,分别对应于不同类型的请求。

300~399是重定向状态码,告知客户端使用资源已经被专用或替代,请客户端移步到响应报文内指定的URL去。浏览器接收后会转入新的URL。302、303和307状态码之间存在一些交叉,HTTP/1.1规范指出,对于HTTP/1.1客户端,用307状态码取代302状态码来进行临时重定向。

400-499是客户端错误状态码,大部分客户端错误都是由浏览器来处理的,甚至不会打扰到你。只有少量错误,比如404,还是会穿过浏览器来到用户面前。

500-599是服务器错误状态码,客户端发送了有效请求,服务器自身却出错了。比如服务器内存溢出。

首部(header)

跟在起始行后面的就是零个、一个或多个HTTP首部字段。注意首部可以有零个或多个字段,每个字段都包含一个名字,后面跟着一个冒号(:),然后是一个可选的空格,接着是一个值,最后是一个 CRLF。首部是由一个空行(CRLF)结束的,表示了首部列表的结束和实体主体部分的开始。首部也同样分为请求首部和响应首部。

请求首部

用于说明是谁或什么在发送请求、请求源自何处,或者客户端的喜好及能力。比如Accept首部就用来告知服务器客户端会接受与其请求相符的文件类型。

请求首部可以增加条件约束,要求服务器响应前确保条件约束为真。 为增强安全性,请求首部会增加身份认证信息,以及增加部分代理信息。这部分和Cookie、Session会话相关,需要进一步讨论。 W

响应首部

为客户端提供了一些额外信息,比如谁在发送响应、响应者的功能,甚至与响应相关的一些特殊指令。这些首部有助于客户端处理响应。

以及面向多种语言支撑的协商首部。 以及面向安全响应首部。 通用首部 既可以出现在请求报文中,也可以出现在响应报文中。比如Date:Tue,3Oct197402:16:00GMT

实体首部

描述对象类型的长度和内容,与实体内容有关的特定信息,以及处理它所需的其他有用信息,以及对资源使用的各种有效的请求方法,实体首部可以告知报文的接收者它在对什么进行处理,以及缓存信息。

主体(body)

HTTP报文的第三部分是可选的实体主体部分。实体的主体是HTTP报文的负荷。就是HTTP要传输的内容。HTTP报文可以承载很多类型的数字数据:图片、视频、HTML文档、软件应用程序、信用卡事务、电子邮件等。

更多的主题

TCP/IP协议簇

HTTP协议在传输中需要用到各种底层协议。因此要弄清全流程,需要对TCP/IP协议簇进一步深入了解。 TCP/IP 协议簇是互联网相关的各类协议簇的总称,一般分为4层或者5层,分为应用层、传输层、网络层、网络接口与链路层,是对ISO/OSI模型的简化和现实标准。HTTP协议是TCP/IP 协议簇的一个子集,HTTP协议依赖下层的TCP协议和IP协议来实现通讯,这2个协议是协议簇的核心,TCP协议负责可靠传输,IP协议负责将数据包传输到目的地。因此我们最好在以后大致了解TCP/IP 协议簇,具体可以看我写的另一篇简明TCP/IP 协议。

无状态HTTP的解决方案

HTTP是无状态的,但是在访问的时候需要保持会话连接,那么HTTP有多种实现方式,包括大家熟悉的Cookie和Session。

网络攻防与HTTPS

HTTP传输过程是明文传输,且对安全性的考虑很少,HTTPS 就是HTTP+加密+认证+完整性保护

参考书目

《图灵程序设计丛书——图解HTTP》

《HTTP权威指南》

https访问问题.zip 1.win2003不能访问https的网站,但http网站能正常访问,需要安装系统的补丁. 2.访问大多数https网站时提示证书错误,查看证书时提示过期,一般是旧证没有删除掉,使用rootsupd.exe工具能够快速删除旧证书,安装新证书 资源中包含补丁和rootsupd工具 立即下载

相关推荐

为自己的网站添加HTTPS访问

作者:yellowlemon,来自原文地址,本文摘录在这里,是为了补充https方面的知识,给大家在搜索https相关文章时,可以看到新的知识点; 最近在看微信小程序时发现小程序必须要https的请求才能支持 正好最近我搭建了一个hexo的博客,那能不能把我的bolg也加上https了??说干就干,申请https的ca证书,还是很方便的,申请一个,半个小时都要不了。 只需要到阿里云的安全里面,有一个证书服务。 (此图片来源于网络,如有侵权,请联系删除! ) 点进去以后,然后购买免费DV SSL云证书就可以了,之后就是域名和一些身份信息的验证,然后你就能拿到你的密匙了。 阿里云这里做的很好,对于

网站http不可以访问,https却可以

对80端口的盘查,以http请求正常运行

qq_45895929的博客 1万+

android OTA升级之后,apk崩溃无法启动

也就是说,我们这个高低版本是fingerprint相同的情况,这个问题追述到jenkins编译,启动job时会初始化一个BUILD_NUMBER值,这个值正好跟Android的build系统的名称重复,这就导致Android build系统那一套拼接时间戳的值不会走,因为jenkins一启动就会定义该值,而我们jenkins服务器迁移过,这个值又会从1开始累计,导致前后版本都是16,从而导致fingerprint一致。问题背景:系统版本从低版本升级到高版本后,apk崩溃启动失败。硬件平台:QCS6125。

kevin's cache的专栏 1347

IE浏览器只能打开http协议的网站,所有https协议的网站都打不开,而且会重定向到其他页面

经查证及实践发现是由于IE浏览器的参数被更改导致的。 解决办法: 1.打开IE浏览器菜单, 2.打开IE浏览器选项, 3.选择Internet选项中的高级, 4.找到并勾选“使用TSL  1.0”和“使用SSL3.0”这两个选项,保存设置后就可以恢复正常了。 注明:也可以使用IE的“还原高级设置“按钮来解决,但这样会将IE的所有设置恢复为缺省值,部分参数

jl1134069094的博客 5万+

Latex下使用JabRef添加参考文献

文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 Latex可以手动添加参考文献,但文献过多时,使用JabRef软件相对方便。 提示:以下是本篇文章正文内容,下面案例可供参考 一、JabRef安装 网址:http://www.jabref.org 打开网址后,点击“Download” 进入如下页面后,选择 portable (便携版,无需安装),下载后是一压缩包,打开即可使用。 二、使用 1.创建库 ...

sz3076799的博客 3467

基于STM32设计的便携式心电信号监测系统_474

本课题设计并实现了一种基于STM32单片机的便携式心电信号监测系统。系统以STM32F103C8T6为核心控制单元,结合PulseSensor心率传感器,实现对人体心率信号的采集与处理。通过单片机内部ADC模块对传感器输出的模拟电压信号进行采样,并对采集数据进行分析处理,从而计算得到实时心率值。

161

HTTP协议简明介绍

HTTP协议简明介绍     超文本传送协议(hypertext transfer protocol,HTTP)是万维网(world wide web,www,也简称为web) 的基础,本节主要对http协议进行介绍,并分别给出http多线程服务器和客户程序的实例,而不 介绍有关WEB和浏览器方面的知识。  HTTP是一个属于应用层的面向对象的协议,适用于分布式超媒体信息系统。它于

xiaoaide01的专栏 676

【漏洞复现】爱数云盘 Usrm_GetAllUsers 未授权访问漏洞

爱数 AnyShare存在未授权漏洞,未授权的攻击者可以通过该漏洞获取用户名信息。

qq_67810151的博客 3121

Netty与TCP、HTTP、WebSocket协议简明摘要

1.同步阻塞I/O(BIO) NIO 伪异步I/O 异步I/O(AIO) NIO(非阻塞I/O):1个IO线程处理多个客户端连接,非阻塞,同步 同步阻塞IO:一个IO线程处理一个客户端连接,阻塞,同步 伪异步IO:M个线程处理N个客户端连接(其中M≥N),阻塞,同步 异步IO:不需要启动额外的IO线程,被动回调,非阻塞,异步 2.TCP粘包问题TCP基于流的方式进行数据传输,由于底层的TCP无法理解

Auspicious Cloud's View 5285

9、傅里叶变换:连续时间与离散时间信号分析的核心工具

本文深入探讨了傅里叶变换在连续时间和离散时间信号分析中的核心作用,详细介绍了连续时间傅里叶变换(CTFT)和离散时间傅里叶变换(DTFT)的定义、性质及其应用。文章涵盖了傅里叶级数到傅里叶变换的推导过程、常见变换对、系统分析中的关键性质,并讨论了采样后频谱的周期延拓与混叠问题。此外,还展示了傅里叶变换在滤波器设计、通信系统调制解调等实际场景中的应用,最后展望了其在图像处理、生物医学等领域的广阔前景。

jump7的博客 67

【AI大模型应用开发】3.2 RAG实战 - RAG应用+UI实现加载本地文件并对话

前面我们实现了RAG基本流程,今天我们在此基础上给它加个UI界面,在浏览器打开,实现上传本地文件、解析,并用大模型实现与该文档的对话。也就是一个阉割版demo版的ChatPDF或知识库对话系统。

同学小张的博客 3054

HTTP协议基础 简明易懂版

导读:   ----   ·内容   -介绍HTTP协议的有关内容,包括:HTTP URL,HTTP请求,HTTP响应和HTTP消息。   ·目的   -绝大多数的WEB开发,都是构建在HTTP协议之上的WEB应用,理解和掌握HTTP协议,将有助与我们更好的学习和掌握SERVLET和JSP技术。   -------------   HTTP简介   ·HTTP(Hy

BBTX-Blog 878

DDR5中的On-Die Termination(ODT)详解:电阻值支持及其背后的秘密

DDR5支持多档ODT电阻值,范围从40Ω到480Ω,均基于240Ω标准参考电阻RZQR_{ZQ}RZQ​。不同电阻档位对应不同的信号负载和功耗需求。校准电压点关键,常用0.8×VDD进行精准调校。CA信号间ODT匹配必须严格控制,保证命令总线稳定。选择合适的ODT值是高速内存设计中不可忽视的细节。

weixin_43199439的博客 2099

5分钟让你搞懂Http和Https协议的区别是什么?

总的来说,HTTPS是在HTTP的基础上添加了安全性层,通过加密和身份验证来保护数据传输的安全性。在处理涉及用户隐私和敏感信息的场景中,强烈建议使用HTTPS,以提供更高级别的安全性和信任

OKCRoss的博客 1135

面向元数据的 SAP UI 中枢:namespace sap.ui.mdc 全景解析

如果把应用前端比作一条数据到交互的装配线,sap.ui.mdc 就是那条线的标准化工装:以 PropertyInfo 描述原料,以 Delegate 定义装配方法,以 p13n 与 VariantManagement 交付面向个体的最终产物;而 Condition Model、Operator 与 ValueHelp 则让输入与筛选的语义落地。与 OData V4 服务与 Fiori Elements 宏构件组合使用时,它能在保持一致体验的同时,给自由式开发者留下足够的可编排空间。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 238

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

http学习笔记(四) HTTP状态码

该文章主要介绍服务端返回的状态码说明。 状态码类别 一共有5种类别,数字中的第一位指定了响应类别,后两位无分类 2XX成功 2XX结果列表如下: 状态码 原因短语 说明 200 OK 从客户端发来的请求在服务器端被正常处理了 204 No Content 服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分 ...

dulei17816的博客 257

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

十分钟搞懂什么是CGI

十分钟搞懂什么是CGI 原文:CGI Made Really Easy,在翻译的过程中,我增加了一些我在学习过程中找到的更合适的资料,和自己的一些理解。不能算是严格的翻译文章,应该算是我的看这篇文章的过程的随笔吧。 CGI真的很简单 在此之前,你或许听说过很多说CGI‘晦涩难懂’的言论。如果你会写最基本的输入输出,那么你就可以写出一...

weixin_33948416的博客 201

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

什么是python爬虫?怎么入门?(附学习资源)

什么是爬虫? 网络爬虫,其实叫作网络数据采集更容易理解。 就是通过编程向网络服务器请求数据(HTML表单),然后解析HTML,提取出自己想要的数据。 归纳为四大步: 根据url获取HTML数据 解析HTML,获取目标信息 存储数据 重复第一步 这会涉及到数据库、网络服务器、HTTP协议、HTML、数据科学、网络安全、图像处理等非常多的内容。但对于初学者而言,并不需要掌握这么多。 想要入门Python 爬虫首先需要解决四个问题 熟悉python编程 了解HTML 了解网络爬虫的基本原理 学习使用pyth

大模型教程的博客 223
下一篇: 学习编程比学开车要简单
悟空学编程
博客等级 码龄12年 32粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟空学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值