如果被问到 HTTP 协议,你真的能讲清楚吗?

前段时间,在和许久未见的老同学聊天时,突然被问到 http 协议到底是什么?脑海里面第一时间想起来的就是 request 请求、response 响应之类的词汇,但是这样讲他真的能知道是什么吗?我反问自己,于是找了相关的资料攻读一番。其实,大多数程序员经常都是在每天努力的搬砖,我相信,很少有人认真的研究过 http 协议到底是什么?

用官方的话来形容 http 协议又被称之为 超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议,它是网络互联的基础。我们通常知道 http 协议,说白了只是知道其如何使用在编程中,但其实 http 协议的底层实现极其复杂,它是通过网络七层架构或者说是网络五层架构通过一层一层的延伸到最上层的应用层协议。网络架构不是我们所研究的重点,但是起码得知道 tcp 协议的基本原理,为什么这里又提到了 tcp 协议,因为 tcp 协议也是属于应用层的一种协议,并且 http 协议就是对 tcp 协议的一种封装。

接下来,我们看看 http 协议是怎么工作的。一个 http 请求在发送到服务端之后,首先会建立一个 tcp 的套接字连接,紧接着服务端会收到来自客户端的请求报文、服务端对报文完成解析、就是知道这个请求想干什么,然后服务端将其客户端请求所需要的的内容信息返回给客户端、同时也会返回 tcp 的连接状态等信息,客户端拿到信息之后进行解析,在此之前响应也已经完成、相应的连接也会得到释放。注意:如果是对域名进行请求,在 tcp 套接字建立之前还会先进行域名服务器的访问完成域名解析。

下面用几个有趣的图来说明一下( 图片引用自:博客园 | 作者:爱文飞翔 ),通过图片说明 http 协议的请求过程。

在这里插入图片描述
在这里插入图片描述

上面两个有趣的图反映了 http 协议大致的请求过程。

另外,http 协议是一种无状态的协议。也就是说,http 协议自身不对请求和响应之间的通信状态进行保存、不做持久化的处理,在完成了一次请求、响应操作之后会断开连接。

在日常的编码中,http 请求主要定义了八种执行请求的方法。也就是朋友在问起时我脑海里面想到的关于 http 请求的 POST、GET、PUT、DELETE 等,这些内容只是 http 请求过程可以用于操作服务器资源的方法而不是 http 请求的概念或者原理性的东西。
更多精彩前往老王说编程>>>
在这里插入图片描述

posted @ 2021-03-08 20:03  Python集中营  阅读(77)  评论(0编辑  收藏  举报