浅谈HTTP协议的作用过程

简介: 本文将来介绍一下http的作用过程,适合小白或者未完全弄懂http的人阅读。

HTTP定义


HTTP叫做超文本传输协议,是一个客户端与服务器端通信交互的协议,它是一种基于请求和与响应、无状态的、应用层的协议,默认端口是80


好的我知道这么说,特别的抽象,接下来是我们日常举例子环节。


  • 客户端与服务器端通信交互的协议


这句话意思就好比两个国家有仇,然后见面就要打架。突然两个国家准备交谈协商一些事情,他们需要签一份友好合作的协议,这样两个国家才敢进行交谈。


在这个例子中,


两个国家就相当于客户端和服务器端


两个国家见面就要打架,无法交谈就相当于客户端与服务器端本无法通信


两个国家通过签订了友好合作协议,于是才能进行交谈协商就相当于客户端与服务器端依靠HTTP协议才进行了通信


  • 基于请求和与响应


我们都知道,客户端与服务器端通信,就是客户端先发送请求给服务器端,然后服务器端接收到了请求,并响应返回数据给客户端。这就是HTTP协议为客户端和服务器端之间通信完成的最基本的工作。


  • 无状态的


什么是状态呢?当客户端向服务器端发送了请求,他们建立了通信,这时他们处于通信状态,但是当服务器响应发送数据给客户端后,通信的任务就完成了,这时就需要断开他们之间的通信,此时他们就不存在任何状态了。这就是HTTP无状态的概念。


  • 应用层


HTTP

规定了交换的报文类型,如请求报文和响应报文;

规定了各种报文类型的语法,如报文中的各个字段公共详细描述;

规定了字段的语义,即包含在字段中信息的含义;

规定了进程何时、如何发送报文及对报文进行响应;

这就是应用层的概念。


这里有很多专业名词,大家先做个大概的了解,在下面还会提到这些名词。


  • 默认端口是80


我们都知道一个url地址是由协议+域名+端口+请求参数组成的,像一个默认的HTTP请求,是这样的 http://www.baidu.com,这里省略了80端口,实际应该是这样的 http://www.baidu.com:80


HTTP完整的请求过程


我们先来简单看一下一个完整的HTTP请求的过程是怎样的


域名解析 =>

与服务器建立连接 =>

发送http请求给服务器 =>

服务器接收http请求并响应返回数据给客户端 =>

客户端接收到服务器返回的数据,通过浏览器解析数据并渲染在浏览器上呈现给用户 =>

客户端与服务器端断开通信


以上就是一个完整的HTTP请求过程,接下来我们逐个讲解


(1)域名解析


域名就是类似 baidu.com 这样的 url 的一部分。其实服务器就是一台电脑,那么每台电脑都对应一个 公网ip 地址, 我们需要访问这台电脑就需要输入这台电脑的公网 ip 地址,类似于这样的 109.22.10.1 ,域名其实就是通过一种方式将这个 ip 地址换了一个名字。例如访问 http://www.baidu.com 就相当于访问了 http://109.22.10.1


这就是域名解析的概念。


(2)与服务器建立连接


在上面讲到HTTP定义的时候,我们说了客户端与服务器端通信建立连接就是依靠HTTP协议,那么是到底怎么建立连接的呢?其实HTTP协议是配合着TCP协议一起使用的,那么什么是TCP协议呢?因为本篇文章是浅谈,我们就用最简单的方式去理解:

现实生活中两个人(A和B)隔得很远,在他们俩距离的中点有另一个人(C),C既能听到A讲的话,又能听到B讲的话,但是A和B却想互相交流,这时就需要借助C帮他们传话给对方。


在这个例子中,A和B就相当于客户端和服务器端,C就相当于这个TCP协议,而A和B要对对方说的话,就相当于A和B之间发送的数据。TCP协议就保证了数据的安全可靠的发送给对方。


这就是简单的理解TCP协议,同时也理解了客户端与服务器建立连接这一概念。


(3)发送http请求给服务器


刚才我们讲了一个A与B讲话的例子, 这时假设A要跟B问个问题, 因为A跟B离得远,需要C来传话,那么为了方便,A需要把他要说的所有话都准备好(例如你明天干什么去?和谁一起?),一次性的告诉C,再让C把话带给B。


在这个例子中,客户端已经与服务器端建立好了通信了, 那么A将自己要跟B说的所有话都打包起来 就相当于列了一份清单,上面写满了交代给B的事情,这份清单就叫做请求报文


形象的了解了请求报文的概念,我们接下来就具体的看一下请求报文是什么样的。


6620d6d03616540bcffb25143bf626d7.png


请求报文就是有一个个的名/值对的形式(例如Connection:keep-alive)展示出来的。大家有没有感觉这请求报文特别眼熟?没错,他就是我们平时在浏览器的开发者工具里看到的请求文件的一些信息。


请求报文由请求行 、请求头部 、空行 、请求数据四个部分组成,这里我从网上扒了个请求报文的模板图来给大家看一下

df37ae1697e6481badc372fe15a40a03.png


这里先放上一张请求报文的图,接下来我们就来逐一解释请求报文的四个部分:


0e20a125f5f656999809673f2294ea29.png


  • 请求行


请求行主要包含的内容就是三个,即请求方法 、请求地址 、协议版本

在我们这张图中,第一行就是请求行,表示我们的请求方法为get ,请求的地址为 http://39.108…… ,协议为 HTTP的1.1版本


  • 请求头部


在图中第2行到第10行都是请求头部,请求头部里主要的内容有这几个:host 主机地址 、User-Agent 客户端详细信息 、Referer 、cookie 等等,下面放上一张图,里面是常见的请求头部参数及其含义


2749a01dafd52a785d9f12d47053f5e7.png


  • 空行


这个就没啥好讲的了,就是图中的第11行,纯粹的空一行


  • 请求数据


在图中的第12行本应该有个请求数据的,但是因为我们这是GET请求,我们知道,GET请求的数据会被放到请求地址的最后面,所以在这里就显示一个空行;当请求方式为POST的时候,第12行就会显示POST请求时,提交的参数数据了。


(4)服务器返回数据给客户端


再回到我们举的A把要与B说的话打包好,一次性告诉C,让C转达给B的例子中。当C把A要转达的话全部告诉B后,B要根据A要对他说的话,进行一些回应,B也将他要对A说的话打包好,一次性告诉C,再让C转达给A,这时A也会收到一份清单,这份清单就是B针对A做出的回应。在这里,这份清单就叫做 响应报文


我们来看一下响应报文长什么样


b3f1a0ffdfbd3988af3ae1c2aff8b2b5.png


这我们也可以在浏览器的开发者工具里找到


68c35ba602961c6c432602e1001414ad.png


响应报文跟请求报文差不多,也都是一个个的名/值对形式,这里同样扒了一张响应报文的模板图


cfb1dd8f384ca596af72cb8a34ef1ca7.png


同样的这里先放上一张响应报文的图,接下来我们就来逐一解释响应报文的四个部分:


458e6332c348a0fd3114fc9e32eac21a.png


  • 状态行


状态行,也就是图中的第一行,它包含了三个内容。即HTTP的协议版本 、状态码(200 、404 、500等等) 、状态码的描述(OK或者ERR)


可能有人不知道状态码是什么, 其实状态码就是一个三位的数组,表示服务器接收请求后处于的状态。


f72ac8a92f3ce85dc098810cb8b34afa.png


像我们常见的有200(正常) 、404(无法找到该网页资源) 、304(跳转页面) 、500(服务器错误)。其实还有很多很多的状态码,他们都有不同的含义,例如还有301、302、201…… 想详细了解的小伙伴可以百度 HTTP状态码 自行了解。


  • 响应头部


在图中第14行到第20行都是响应头部,响应头部里主要的内容有这几个:Set-cookie 用于创建cookie 、Location 网页跳转的地址 、Connection 等等,下面放上一张图,里面是常见的响应头部参数及其含义


f7d3c3dcc309157e0076d428fe60531f.png


  • 空行


这个就没啥好讲的了,就是图中的第21行,纯粹的空一行


  • 响应数据


我们都知道客户端向服务器发送请求,就是为了拿到一些数据或者文件, 那么服务器响应返回给客户端的自然是数据或文件。在图中第22行开始往下都是响应数据,大家有没有觉得这个响应数据有点眼熟?没错这就是html文件,说明客户端向服务器发送请求,就是为了获取 html 文件。


(5)客户端与服务器断开通信


到这一步了,客户端与服务器端之间的数据或文件交互就完成了,这时候也不需要任何的通信了,所以他们之间就需要断开通信。用咱们本文中的例子来讲就是A和B要说的话都说完了,他们分别告诉C他们已经完成了对话,这时C就可以走人了,因为A和B都不需要他了。


HTTP的浅谈结束,这知识面真的还很浅,但对于小白了解HTTP协议已经足够了,如果大家想要深入了解HTTP协议的话,可以去查阅相关书籍视频资料。

相关文章
|
4月前
|
数据采集 数据可视化 API
QUIC协议优化:HTTP/3环境下的超高速异步抓取方案
本文介绍了一种基于QUIC和HTTP/3的异步爬虫方案,用于抓取知乎热榜数据并生成趋势图。通过HTTPX与aioquic结合实现高性能连接复用,配合代理IP绕过反爬限制,提取标题、热度等信息。利用Python代码示例展示了异步抓取流程,并借助Matplotlib绘制话题热度变化图表。分析显示突发热点生命周期短,而深度话题热度更稳定。此方案可优化内容运营策略,快速捕捉潜在爆款话题。
160 4
QUIC协议优化:HTTP/3环境下的超高速异步抓取方案
|
2月前
|
缓存 监控 搜索推荐
301重定向实现原理全面解析:从HTTP协议到SEO最佳实践
301重定向是HTTP协议中的永久重定向状态码,用于告知客户端请求的资源已永久移至新URL。它在SEO中具有重要作用,能传递页面权重、更新索引并提升用户体验。本文详解其工作原理、服务器配置方法(如Apache、Nginx)、对搜索引擎的影响及最佳实践,帮助实现网站平稳迁移与优化。
399 68
|
18天前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
242 2
|
2月前
|
存储 网络协议 安全
HTTP 协议及会话跟踪机制详解
本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
214 1
|
1月前
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
326 0
|
2月前
|
XML 安全 网络架构
深度对比SOAP与HTTP协议:详细理解它们的工作原理和差异
在设计服务和系统交云策略时,考虑到上述差异是至关重要的。SOAP适合需要高安全性、可靠性和事务支持的企业级应用。而HTTP适合Web界面浏览、RESTful服务和需要快速响应的轻量级通信。根据具体需求和上下文,开发者可以选择合适的协议以实现最优的系统性能和用户体验。
252 0
|
3月前
|
缓存
HTTP协议深度剖析:常见请求头信息讲解
这就是HTTP请求头背后的工作原理,希望通过比作“邮差”和“标签”,可以让你对这个繁琐技术更有感触,更得心应手。尽管这些信息可能很琐碎,但了解了它们的含义和工作方式,就等于揭开了HTTP协议神秘的面纱,掌控了网络交流的核心。你还等什么,赶快动手尝试一下吧!
116 17
|
2月前
HTTP协议中常见的状态码 ?
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类。常见状态码包括:101(切换协议)、200(请求成功)、302(重定向)、401(未认证)、404(资源未找到)、500(服务器错误)。
248 0
|
3月前
HTTP协议探究:常用方法一网打尽
总的来说,HTTP协议的命令犹如一把钥匙,解锁了互联网世界的大门。它是规则,也是工具,了解了它,就等于掌握了互联网的一把通行证。我们每天都在用,也常常无视它,但是只有深刻理解了它,才能更好地运用它。如此,我们的互联网世界旅程就会变得更加顺畅,更加有趣。
99 14

热门文章

最新文章