漫话:如何给女朋友解释什么是HTTP

伪距单点定位算法原理以及利用最小二乘法计算实例 即该公式:建立下列代价函数满足最佳估值的条件为:即:可解得未知参数 X 的最佳估值由于每个可见卫星观测量的精度可能不一样,这时,需要对不同观测量赋予一个权重系数,称为加权。 阅读详情

漫小画

擅长漫话

640 640

程小员

擅长编程


本文来源公众号:漫话编程   作者:漫话编程

一篇文章讲解了HTTP相关的知识点,如果对HTTP还不太熟悉的同学,建议阅读!

周末一大早,我正在电脑前面浏览一些技术网站,突然女朋友大喊起来:哇,杭州又下大雪啦,快来看啊。我并没有理她,于是她跑过来拉我。

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg
 图,雪后杭州

640?wx_fmt=jpeg

640?wx_fmt=jpeg

上次杭州下雪的时候,[给女朋友介绍了什么是RPC],这次下雪将要介绍的HTTP和RPC也有点关系,都是通信方式。

什么是HTTP协议

HTTP是HyperText Transfer Protocol的缩写,中文翻译为超文本传输协议。他是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。

说的简单点,其实HTTP协议主要就是用来进行客户端和服务器之间进行通信的标准协议。HTTP主要规定了客户端如何与服务器建立链接、客户端如何从服务器请求数据、服务器如何响应请求,以及最后连接如何关闭。

当我们在浏览器中输入一个url,如http://www.taobao.com ,然后按下回车,一直到页面显示淘宝网的首页的过程就是一次HTTP的网络通信。

这次通信过程中,我们查看淘宝使用的电脑就是客户端,而搭建淘宝网的那些计算机机器就是服务器。

640?wx_fmt=png
 这个过程有点像老板通过电话给员工下达命令。当我们在浏览器输入网址并按下回车之后,共发生了以下四件事:

1、建立连接:老板拨通手下员工的电话 

2、进行请求:老板提出自己的要求 

3、响应:员工应答老板的请求 

4、关闭连接:挂断电话

建立连接

老板找出自己公司的总机电话号并拨通,员工接听电话的过程就是建立连接。

根据用户输入的URL地址,通过DNS、负载均衡等技术找到一台服务器,客户端与服务器的80端口建立一个TCP链接。

进行请求

电话被接通之后,老板可能要求某个具体员工来进行接听,并且会对该员工下达一些命令,比如帮他取个快递,帮他预订个酒店,帮他收购一家公司等。这个过程就进行请求(request)。

客户端向服务器发送消息,请求URL中指定的页面,要求执行指定的操作。

老板对员工下达的命令中,可以分为很多种,比如有些命令只是简单的事情询问、而有些命令则要求员工执行某些决定,如收购公司等。

同样的,HTTP的请求方法也有很多种,主要的有GET、POST、HEAD等。

响应

员工在接收到老板下单的命令后,需要对该命令做出回应。比如直接告知老板他接下来的行程,帮老板预订好酒店后告诉他已经预订成功等。这个过程就是响应(response)

服务器向客户端发送响应。响应以状态码开头。常见的状态码有:200、302、404、500等。

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:

分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误

关闭连接

老板在下达完命令,并且员工给予响应之后,双方会挂断电话。这个过程就是关闭连接。

客户端或服务端都可以关闭连接。每个请求都是用一个单独的网络连接。

特别的是:服务器不回记忆前面一次连接或者其结果,这种不记忆过去请求的协议被称为无状态(stateless)协议。

640?wx_fmt=jpeg

 上图就是一次淘宝网的HTTP请求的过程。其中显示了request(请求)和response(响应)的所有信息。

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

HTTP协议的迭代

前面我们把HTTP通信比喻成打电话,严格一点来说,HTTP/2更像是现在的打电话。HTTP协议主要的版本有3个,分别是HTTP/1.0、HTTP/1.1和HTTP/2。

HTTP/1.0

1996年5月,HTTP/1.0 版本发布,为了提高系统的效率,HTTP/1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。

这种方式就好像我们打电话的时候,只能说一件事儿一样,说完之后就要挂断,想要说另外一件事儿的时候就要重新拨打电话。

HTTP/1.0中浏览器与服务器只保持短暂的连接,连接无法复用。也就是说每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。

我们知道TCP连接的建立需要三次握手,是很耗费时间的一个过程。所以,HTTP/1.0版本的性能比较差。

HTTP/1.1

为了解决HTTP/1.0存在的缺陷,HTTP/1.1于1999年诞生。相比较于HTTP/1.0来说,最主要的改进就是引入了持久连接。所谓的持久连接即TCP连接默认不关闭,可以被多个请求复用。

由于之前打一次电话只能说一件事儿,效率很低。后来人们提出一种想法,就是电话打完之后,先不直接挂断,而是持续一小段时间,这一小段时间内,如果还有事情沟通可以再次进行沟通。

客户端和服务器发现对方一段时间没有活动,就可以主动关闭连接。或者客户端在最后一个请求时,主动告诉服务端要关闭连接。

HTTP/1.1版还引入了管道机制(pipelining),即在同一个TCP连接里面,客户端可以同时发送多个请求。这样就进一步改进了HTTP协议的效率。

640?wx_fmt=png
 也就是说,现在打电话,一个电话里面可以吩咐多件事儿了。但是对于执行者来说,还是需要按照顺序,先执行完一件事儿以后再执行另外一件事儿。

有了持久连接和管道,大大的提升了HTTP的效率。但是服务端还是顺序执行的,效率还有提升的空间。

HTTP/2

HTTP/2 是 HTTP 协议自 1999 年 HTTP 1.1 发布后的首个更新,主要基于 SPDY 协议。

HTTP/2 为了解决HTTP/1.1中仍然存在的效率问题,HTTP/2 采用了多路复用。即在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应。能这样做有一个前提,就是HTTP/2进行了二进制分帧,即 HTTP/2 会将所有传输的信息分割为更小的消息和帧(frame),并对它们采用二进制格式的编码。

也就是说,老板可以同时下达多个命令,员工也可以收到了A请求和B请求,于是先回应A请求,结果发现处理过程非常耗时,于是就发送A请求已经处理好的部分, 接着回应B请求,完成后,再发送A请求剩下的部分。A请求的两部分响应在组合到一起发给老板。

640?wx_fmt=jpeg
 而这个负责拆分、组装请求和二进制帧的一层就叫做 二进制分帧层 。

除此之外,还有一些其他的优化,比如做Header压缩、服务端推送等。

Header压缩就是压缩老板和员工之间的对话。

服务端推送就是员工事先把一些老板可能询问的事情提现发送到老板的手机(缓存)上。这样老板想要知道的时候就可以直接读取短信(缓存)了。

目前,主流的HTTP协议还是HTTP/1.1 和 HTTP/2。并且各大网站的HTTP/2的使用率也在逐年增加。

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

HTTP-over-QUIC

据国际互联网工程任务组(The Internet Engineering Task Force,简称 IETF )消息,HTTP-over-QUIC 实验性协议将被重命名为 HTTP/3,并有望成为 HTTP 协议的第三个正式版本。

QUIC (Quick UDP Internet Connections)是 Google 推出的一个项目,旨在降低基于 TCP 通讯的 Web 延迟。QUIC 非常类似 TCP+TLS+SPDY ,但是基于 UDP 实现的。

这种通信方式有点像现在我们使用的微信语言,在通话之前,老板和下属之间并没有直接的建立可靠连接,即不需要拨通电话,而是拿起微信,直接通过语音直接下达了命令。

640?wx_fmt=gif
 HTTP/3使用UDP代替了TCP ,UDP是一个非连接的协议,传输数据之前源端和终端 不建立连接 。 UDP信息包的标题很 短 ,对系统资源的要求比TCP要低。并且UDP是使用最大努力交付,即 不保证可靠交付 。

我们经常使用的“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包, 如果数据包是否到达的消息及时反馈回来,那么网络就是通的。

至于,这种基于QUIC的HTTP协议究竟未来发展如何,目前只能拭目以待了。

下面是一张大图,通过图解来介绍HTTP/1.0、HTTP/1.1、HTTP/2.0(SDPY)和HTTP over QUIC(HTTP/3)

640?wx_fmt=png


640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

HTTPS

HTTPS是Hypertext Transfer Protocol Secure的缩写,翻译为超文本传输安全协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。

HTTPS就像是加密电话,通过一些手段来加密通话内容的。他是基于普通电话的,但是又不是普通的电话,更不是普通电话的升级版。

所以,HTTP和HTTPS是两个不同的协议。

HTTP的URL是由“http://”起始与默认使用端口80,而HTTPS的URL则是由“https://”起始与默认使用端口443。

HTTP不是安全的,而且攻击者可以通过监听和中间人攻击等手段,获取网站帐户和敏感信息等。HTTPS的设计可以防止前述攻击,在正确配置时是安全的。

640?wx_fmt=jpeg

640?wx_fmt=jpeg

美国民主与技术中心 CDT 首席技术专家 Joseph Hall 表示: "使用 HTTPS,你的互联网服务供应商不会知道你在网站上干了些什么,即使是政府和间谍也不能办到。"

640?wx_fmt=jpeg

所以,目前已经有很多网站都在使用HTTPS协议了,包括全球最大的程序员交友网站:github!我说的是github,不是pornhub哦,虽然他也是https的。

640?wx_fmt=jpeg

以前我写过的HTTP文章:


最后

乐于输出干货的Java技术公众号:Java3y。公众号内有200多篇原创技术文章、海量视频资源、精美脑图,不妨来关注一下!

640?wx_fmt=jpeg

有帮助?好看!转发! 640
学Simulink--基于风力发电系统的场景实例:海上风电场在复杂海况下的动态响应仿真 本实例将创建一个针对海上风电场在复杂海况下的动态响应模型。该模型不仅考虑了不同风速条件的影响,还引入了波浪和水流对风机塔架及基础结构的影响。通过仿真验证系统的有效性,并探索最佳控制参数设置以提高整体性能和稳定性。本教程展示了如何在Simulink中实现一个海上风电场在复杂海况下的动态响应仿真模型,并分析其性能。通过这种方式,我们不仅可以验证所提出的技术手段在提高海上风电场稳定性和效率方面的有效性,还能进一步探索优化参数以适应特定的应用场景。 阅读详情

相关推荐

用树莓派Pico低成本更新USB-C PD控制器固件实战指南

固件更新是嵌入式系统开发与维护中的核心环节,它直接决定了硬件设备的功能、性能与兼容性。其原理通常是通过特定的通信接口(如SWD、JTAG、UART或USB)与设备内部的Bootloader建立连接,将新的程序代码安全写入非易失性存储器。在USB Power Delivery(PD)和Type-C生态中,固件更新技术尤为重要,它能修复协议握手Bug、适配新设备并提升供电策略的灵活性。本文聚焦于一个典型的工程实践场景:如何利用广泛普及且成本极低的树莓派Pico开发板,作为USB-C协议到I²C协议的转换桥,实现

weixin_27869497的博客 458

HTTP是什么

HTTP是什么 HTTP是什么 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP协议是在Web上进行数据交换的基础,是一种“客户端-服务器端”协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。 HTTP请求与响应消息 客户端和服务端通过交换各

qq_46133833的博客 1万+

WGCNA分析中那些没人告诉你的坑:以肺结核差异基因模块筛选为例

本文深入探讨WGCNA分析在肺结核差异基因模块筛选中的七个关键陷阱,包括soft-thresholding选取、样本离群值检测、模块合并阈值调整等。通过实际案例和R代码示例,揭示生信数据挖掘中常被忽视的技术细节,帮助研究者避免常见错误,提升分析结果的可靠性和生物学意义。

weixin_29218509的博客 261

HTTP是什么?

1.什么是HTTP? HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写。包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。最常见的超文本标记语言HTML。 2.什么是URL? URL统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一文档。URL由协议,主机和端口(默认为80)以及文件名三部分构成

m0_53587898的博客 5976

基于航位推算与多传感器融合的高精度避障小车设计

航位推算(Dead Reckoning)是一种在无外部定位信号下通过里程计与惯性测量单元(IMU)持续积分估计位姿的基础导航方法,其核心在于运动学建模、误差累积抑制与多源数据融合。该技术具备低依赖、高实时、强确定性等工程优势,广泛应用于服务机器人、AGV、竞赛无人平台等受限环境下的自主导航系统。结合编码器高分辨率测距与九轴IMU姿态解算,可显著抑制纯里程计漂移,提升短时定位精度至厘米级。本文以全国大学生电子设计竞赛K题为背景,深入实现了一种面向确定性场地的离线建图+航位推算双模协同架构,重点解决嵌入式资源约

weixin_36328210的博客 81

LaTeX小白必看:TeX Live+TeXstudio保姆级安装教程(附清华镜像加速)

本文为LaTeX新手提供了一份详尽的TeX Live和TeXstudio安装指南。通过清华大学镜像站实现高速下载,并详细讲解了从下载、定制化安装到配置优化的每一步,帮助用户快速搭建稳定高效的本地LaTeX写作环境,轻松处理学术文档排版。

weixin_29214559的博客 413

HTTP到底是什么?

HTTP协议是HyperTextTransferProtocol(超文本传输协议)的缩写,是用于从万维网(WWWWorldWideWeb)服务器传输超文本到本地浏览器的传送协议,基于TCP/IP通信协议来传递数据。

qq_48802092的博客 4945

手把手教你配置C6678的SPI启动:从NorFlash烧写到多核加载的完整流程

本文详细介绍了TMS320C6678多核DSP的SPI启动全流程,包括硬件准备、镜像文件生成与转换、NorFlash烧写与验证、多核启动同步机制以及常见问题排查。通过实战演示,帮助开发者高效配置SPI启动模式,解决启动失败、多核同步异常等问题,提升嵌入式系统开发效率。

weixin_27076351的博客 151

http详介绍

HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,H

weixin_43758377的博客 467

龙芯3A5000开发板PMON升级UEFI固件实战指南

固件是计算机硬件与操作系统之间的关键桥梁,负责初始化硬件并引导系统启动。其工作原理是在上电后执行自检、加载引导程序,最终将控制权移交操作系统。在国产化平台中,采用标准化的UEFI固件具有重要技术价值,它能提供图形化配置界面、统一硬件驱动模型,并支持安全启动等现代特性,从而显著提升硬件兼容性与系统管理效率。这一技术广泛应用于PC、服务器及嵌入式设备,尤其在需要运行银河麒麟等主流操作系统的龙芯开发板场景中,将传统PMON固件升级至UEFI,能实现更流畅的系统安装与更稳定的运行体验。本文基于固件升级与UEFI引导

weixin_42664597的博客 562

老N卡福音:GT1030/GTX1050在MacOS Ventura 13.2上的完整驱动指南(附实测截图)

本文详细介绍了如何在MacOS Ventura 13.2上通过OCLP工具链驱动GT1030和GTX1050等老款NVIDIA显卡,涵盖硬件兼容性验证、BIOS设置、OpenCore配置、驱动安装及性能测试全流程。实测数据显示,这些基于Pascal和Maxwell架构的显卡在当代MacOS系统中仍能发挥实用价值,为老N卡用户提供完整解决方案。

weixin_30832143的博客 632

漫话:如何给女朋友解释什么是CDN?

周六晚上七点多,我正在看书呢,突然女朋友跑过来问我她的IPAD去哪了,火急火燎的。她拿到了IPAD之后就不再理我了,不过作为一个程序员,我还是比较好奇这么大的流量虎牙到底...

weixin_43167418的博客 3万+

深入解析.Net中SM2与sm-crypto的跨平台加解密实践

本文深入探讨了在.Net平台与前端sm-crypto库之间实现SM2国密算法跨平台加解密的实践方案。针对对接中常见的密钥格式、密文拼接顺序(C1C3C2与C1C2C3)等核心难点,提供了基于BouncyCastle的完整工具类实现、前后端联调示例及问题排查指南,旨在帮助开发者构建安全、兼容的数据加密通道。

weixin_29322855的博客 370

漫话:如何给女朋友解释什么是负载均衡

点击蓝字加关注,人在江湖不迷路!出处:公众号【漫画编程】来自:漫话编程(微信号:mhcoding)周末晚上,和女朋友去电影院,准备看晚上的DC的海底动作冒险电影——海王。...

Java技术江湖 704

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

云漫圈 | 如何给女朋友解释什么是HTTP

戳蓝字“优快云云计算”关注我们哦!文章转载自漫话编程周末一大早,我正在电脑前面浏览一些技术网站,突然女朋友大喊起来:哇,杭州又下大雪啦,快来看啊。我并没有理她,于是她跑...

优快云云计算 1065

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

漫话:如何给女朋友解释什么是反向代理?

周末,我正在网上搜索简历,准备给团队招聘新人。这时候,女朋友回来了,看起来并不是很高兴。反向代理(reverse proxy):是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。正向代理正向代理(forward proxy):是一个位于客户端和目标服...

weixin_34240520的博客 3120

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: JDBC第三篇【事务、元数据、改造JDBC工具类】(修订版)
下一篇: 这是我看过最好的「机器学习」科普文章了
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值