首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算机世界的“协议”指的是什么

计算机世界的“协议”指的是什么

作者头像
震八方紫面昆仑侠
发布2020-07-23 14:31:17
7700
发布2020-07-23 14:31:17
举报

经常听一些技术牛人演讲,张嘴闭嘴就是某某协议。各种协议成百上千种,小白听了一脸懵,又不敢多问。协议像只能意会不能言传的东西。介绍具体协议的资料通篇生硬的描述,只有本来就懂的人才能看懂。

本文不解读具体协议,仅用通俗的话谈谈对计算机世界“协议”的理解。一句话,协议就是法律,这个法律规定了不同的系统之间交换信息时如何解读信息。

如果一个人看一篇没有标点符号的文章,他可以根据常识,对文章进行断句,能大概分辨标题、作者、正文,以及文章表达了什么。但计算机系统不是人,不能对接受的一串信息进行智能的断句。所以要硬性的规定,第几个字到第几个字是标题,第几个字到第几个字是作者,......第几个字到第几个字是故事正文。有了这个规定,即使盲人也能将标题、作者、正文准确的提取出来了,一个一个数就可以了呀。当然这是最简单的规定,复杂的也可以用空格,回车,空行,关键字,特殊符号,标签等来区分信息要素。这些规定就是计算机世界的法律,被称作协议。这些协议保证了计算机各个系统可以正确的交换信息。生活中的法律有多种,适用不同的情况。同理计算机世界协议几百上千种。浏览网页有http协议,传输文件有ftp协议,发邮件有smtp协议。程序员按规定的接口(函数长什么样子)实现代码,这也是在遵守一种协议,否则不同人开发的代码没法成功互相调用。

有的大公司自己有内部协议,也可能被叫做报文格式。如果你参与开发这类公司的系统,还要遵守这些内部协议,否则内部系统之间就没法交流了。

上图是http协议的格式规定,所有用来浏览网页的客户端和服务端,无论用什么语言开发,什么架构,都要按照上图的样子发送数据和解析接收到的数据。如果你违背了这个协议,比如你发送数据没按上面的格式拼,所有网页都打不开。服务器接收数据没按照上面的格式解析,那就完全不知道对方在请求什么了。

下面wireshark抓包工具,抓取访问中国日报cn.chinadaily.com.cn的http数据为例,说明浏览器是严格按照http协议要求发送请求的。

下面的红框表示数据流是http协议的。在上面红框处,右键->追踪流->http,查看http数据如下

对照抓包数据和http请求的协议规定的格式,方法是GET ,URL是/image/2016/p-19.jpg,协议版本是HTTP/1.1,后面都是头部字段名:值回车换行的格式了。这些格式都是浏览器按照规范拼装的,所有浏览器无论具体实现差异多大,发送出的数据都是这个模子的。

大家可能听说过RFC文档,编号都不知道到多少了。这些文档规定了很多互联网数据格式。例如RFC2821,RFC2822对电子邮件数据格式做了规定。其中一条是,邮件头和邮件体之间必须要有一个空行,假设你用Python写发送邮件的功能,拼装的邮件数据缺少这一空行,很可能这封邮件是发送不出去的。说很可能是因为有的邮件服务器没有严格遵守协议,或者就是个bug,用这个邮件服务器对应的邮箱是能成功发送邮件的。但是为了保证用任何邮件服务器都能成功,大家开发相关功能时最好严格遵守相关协议。

通信领域的各种协议也是一样的道理,不管各家公司具体怎么实现,只要最后的数据拼的符合协议,信号符合规定,就完成了功能。

总之,协议就是法律,做哪个领域的工作,就遵守那个领域的法律。遇到大牛说协议不用慌,找到对应文档一句一句读,读完你比他都熟悉这个协议了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MySQL从删库到跑路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档