

突然记起来好久没更新基础篇的知识了,最近也在做其它的事情,没更新,那今天就写篇基础篇的知识吧。

一.HTTP协议
之前讲到了TCP和UDP协议,今天写的是HTTP协议。那这么多协议,到底有啥关系,这就得去看看计算机网络的知识。TCP是传输层的协议,HTTP是应用层的协议,TCP比HTTP更加底层。通俗点,TCP负责在下面一层建立传输通道,只是传输字节流;而上面一层的HTTP按照规则发数据、解析。
HTTP(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。它的一个最典型的工作流程:客户端计算机向服务器发出请求,然后服务器发送响应消息。你玩电脑,访问某个网址(实质向服务器发送请求),然后服务器监听(默认80端口)到了你的需求,精准解析,然后返回一个状态表示:“ok,我收到了”,并且返回给你相应的内容。
再联系到上边的HTTP协议,你就明白:奥,这个发送请求肯定有要求的,不然怎么解析、返回。
yes,发送和返回(术语:请求和响应)都有相应的结构,这才建立了全网通用的数据通信协议。
二. 请求消息的结构
点明结构:请求行 + 请求头 + 空行 + 请求体
这个结构你就把它当作一个完整的人,理论少一块都不行,但是最后一块可以少
,接下来就是一个个的介绍了。
1. 请求行。它位于结构的最前面,位于请求消息第一行,来告知服务器请求方式、请求资源、协议版本。
这玩意还得俄罗斯套娃一样,它内部也有结构:请求方法 + 请求URI + 协议版本。
请求方法:你也许听过,就是那些GET、POST...
请求URL:理解为你向哪里发送请求,‘哪里’的资源路径。
协议版本:这个直观理解就是HTTP的协议版本。
2. 请求头。它紧随请求行之后,是你玩电脑向服务器传递的环境与请求配置信息。
你是不是会猜这玩意是不是也有套娃,哈哈,这个没有,这个就是纯信息说明,比如传达你这边的可支持数据类型、设备标识等。
3. 空行。字面理解,就是空行。固定分隔符,标志请求头结束、请求体即将开始,是HTTP消息的必备格式规范,不可省略。
4. 请求体。现在到身体部分了,身体肯定是体量最大的,用于携带客户端向服务器提交的核心数据。
诶,这个请求体得分两类。
回到上面的请求方法,有GET...。
在这些方法里面,第一类:POST和PUT必须携带使用请求体,这是标准规范;但是还有第二类:GET和DELETE,一律不使用请求体。
那你可能疑惑,第二类不用请求体,那消息咋发过去? 答案就是,信息拼到请求URL里面了,直接由URL承接。
三、响应消息的结构
点名结构:状态行 + 响应头 + 空行 + 响应体
ok,上面费了点笔墨,说完了请求消息的结构。现在你玩电脑,把请求消息发过去了(比如请求访问网页),你就能看到你想看的东西了? 天真了哈
,必须得由服务器响应之后,你才能看到你想看的内容。
响应消息的结构跟请求消息的结构,简直是对称的。
1. 状态行。一样位于最前面,告知请求处理结果。
欸,这玩意一样有套娃,它内部的结构为:协议版本 + 状态码 + 状态描述。
协议版本:请求行里面介绍过了哦。
状态码:三位数字核心标识,200成功、404资源不存在,你访问网页多少碰到过404的情况。
状态描述:状态码的解释、注释,就是个辅助信息。
2. 响应头。紧随状态行之后,传递服务器配置、响应数据的相关参数。这个,跟请求消息里面的请求头作用一样,只不过传达的多是服务器这边的信息标识。
3. 空行。作用同请求消息的空行。
4. 响应体。服务器最终返回给客户端的有效数据和资源内容。
响应体这玩意也是非必须的,可有可无,不是所有响应都要求返回业务数据。没有响应体,但是状态行里面的状态码是200,表示响应成功,你就可以进行访问。
ok,介绍得差不多了,就这样吧。
总结:今日我们学习了Python基础篇-网络编程-HTTP协议与消息结构。HTTP 是应用层通用数据通信协议,依托TCP协议、80默认端口实现客户端与服务器一问一答的通信模式。HTTP消息分为请求与响应两类,结构对称统一:请求消息由请求行、请求头、空行、请求体组成,负责提交客户端指令与数据;响应消息由状态行、响应头、空行、响应体组成,反馈请求处理结果与目标资源。在Python基础篇,后续我们将持续学习Python基础知识,介绍各种算法,祝每一位study er学习愉快。

