| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 看懂Http协议,向计算机网络迈进一步~ -> 正文阅读 |
|
[网络协议]看懂Http协议,向计算机网络迈进一步~ |
在最近的工作中,涉及接口的开发比较多,其中就要经常和前端传过来的数据打交道,一方面我只需要在Controller层直接接好参数,做后续处理就够了,也不需要管前端请求内部很多细节组成是怎么样的,更不用管中间Http传递过程是怎么样的;但是作为一个半路出家的码农,一定要有刨根问底的精神,于是我抱着“到底啥是HTTP”这个疑问开始了一步步的探索和总结; ????在探索之前,我先做个比喻,两个网络就像两个人,一个张三一个李四;张三想要联系上李四:要借100块钱;于是张三要完成这件事一定要清楚几件事并且按照“借钱协议”来填表,表格长这样:
好,可以开始这次的话题了: ? 一????什么是HTTP协议? ????官方解释: ??? HTTP 协议一般指 HTTP(超文本传输协议)。 超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,所有的 WWW 文件都必须遵守这个标准。 HTTP 是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。 ??? HTTP 是一个基于 TCP/IP 通信协议来传递数据的(HTML 文件、图片文件、查询结果等)。 ????我不知道别人看官方定义是不是可以一眼就懂,反正我是一看到官方定义就晕,还是得一边看一边脑补自己的理解: ????两个服务之间需要通讯,就需要根据HTTP协议来生成针对另一个Web服务器的HTTP请求报文,生成的报文是符合协议标准的,就可以完成通讯(理论上还需要其他很多条件,如TCP3次握手啥的,先一个一个来,避免劝退); ? ??二??? HTTP报文长啥样--Request请求报文: ? (图片来自度娘) 第一眼看还是有点蒙,分割一下: ?????2.1?HTTP报文格式(可以类比为张三和李四的借钱协议表格)
? ?这个报文就有点像张三写给李四的欠条,说清楚谁借钱,借多少,找谁借钱等等信息:
????我粗糙的类比一下,这样理解,学习好像一点也不枯燥了呢;另外不要纠结例子哈,我只是想通过举例加深理解和提升学习乐趣; ????2.2?HTTP 报文起始行格式: 换成表格对照一下:
????2.3 说明 ??? 1.请求方法:GET,POST,PUT,DELETE等,表示对资源的操作方式,比如借钱--GET;还--PUT(皮一下很开心); ??? 2.请求目标:通常是一个URI,说明请求方法需要请求操作的资源; ??? 3.版本号:表示报文使用的HTTP协议版本; 三 HTTP报文长啥样--Resonse响应报文: (图片来自度娘) ? 3.1:格式同上,不做详述; 3.2 响应报文起始行: ? 换成表格对照一下:
(李四:你的借钱(GET)需求我知道啦,OK(200)没问题啦;) ??3.3 说明: ??? 1.版本号:表示报文使用的HTTP协议版本; ??? 2.状态码:表示处理请求的状态,常用200-OK,404 Not Found等; ??? 3.相应信息:返回的状态码对应的信息,或者异常信息; 四 关于HTTP ?补充工作中需要的注意点: ????4.1 HTTP头字段说明: ????头部字段是key-value键值对形式,key和value之间用“:”分割,比如前后端分离时候经常需要用的,要和后端传输的数据类型:
??? HTTP 头字段很灵活,不仅仅可以使用标准里的Host,Connection等已经存在的头字段,也可以任意添加自定义的头字段,这就给HTTP带来了可拓展性,比如我自己在业务中就会添加头信息来传输数据;
????4.2 头字段使用注意事项:
五?常用的HTTP状态码及含义: 状态码的类别:
????至于每一个状态码是什么意思,每次碰见想不起来百度一搜就好了,用多了就都记住了;反正我最喜欢200和500,懂得都懂; 六?小结: ????关于HTTP小结到这,下一期预计会更HTTPS协议; ????其实关于HTTP,一直在更新迭代,原来是1.0,现在比较多是1.1;而目前随着发展,1.1有时候也满足不了需求,也就有了后来的2.0,技术在更新,在不断淘汰以前的,夯实底层知识和提升自主学习能力才是王道呀; 笨鸟慢飞,一个半路出家的码农,在不断夯实专业基本功的路上慢慢努力; ? |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 7:38:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |