基础 - 什么是协议

  • 作者:KK

  • 发表日期:2017.9.6


简介

其实就是顾名思义,协议就是协议,也就是大家说好了的协定嘛,经常听说什么停战协议、马关协议、合作协议。可是有些程序员一旦听到HTTP协议就会有点懵,会以为是计算机领域里的特别的东西,不会跟平常理解的协议比较思考。

我们经常听说HTTP协议,它其实也是一套协定,比如它说了“有请求端发请求,就要有接收端进行响应”,又比如说“请求端可以有GET、POST、PUT、DELETE等方法……”,最后还有“响应端必须附带一个响应状态码回来,200表示成功,404表示找不到页面,302表示重定向……”

它就是这么一套啰啰嗦嗦的规则,设定了许多条条框框去规定整个HTTP通讯要遵守什么规则。如果你想形象地看到这个协议长什么样,我可以告诉你,访问《IETF RFC HTTP1.1文档》就可以见到,访问后你会发现里面是一篇“英文文章”,认真看它前面又有目录,像一本书

不管怎样,这整个网页里的内容就是HTTP1.1协议的条条框框内容,至少你应该知道网页是经由浏览器发出HTTP请求给服务器,服务器再响应代码给浏览器的,那浏览器与服务器之间就有了HTTP协议的通讯过程,这个过程就是要遵守这个网页里所描述的规则,而这些规则又多到你根本记不住,所以要正确认识到:我们只要记住常识就好了


违反协议会怎样

如果发送端违反协议,服务端可以判断为非法的请求,不回复发送端期望的数据,反之其实也一样,大家都要站在自己的立场实现协议的相关规则来工作,才能获得对方的数据。

发送端通常就有我们见得到的浏览器,这是各大公司开发出来的,他们开发的浏览器是否遵守了HTTP协议呢?这个我也不好说,至少各个网站都能访问各种网站获取数据,可以说大部分常用的协议规则是遵守了的。而实际上它们又有一些细微的区别,所以也可以看出某些浏览器在协议规则的实现代码上要么有漏洞,要么它不愿意遵守那个规则。

换到接收端来说,很经典的就是如果响应Location: /login.html就是通知浏览器重定向到登录界面吧,而如果响应写成了ocation: /login.html这样出现拼写错误,浏览器自然无法识别这个响应,因为协议里说明了重定向的报头是Location,所以如果接收端不遵守协议,则发送端也不会按照你所想的那样去工作

为了双方能好好合作,互相遵守协议吧

如果你有闲情,完全可以自己写一个程序,根据HTTP协议实现与服务器的通讯(别以为这是叫你写浏览器,这跟写浏览器差老远了哦,只是写一个HTTP协议的网络请求程序)


所以本系列文章主要就是围绕着这些HTTP来回收发的内容中常见的书写、拼写规定,相关的影响效果、效果的注意内容来讲的

个人不是资深的Web程序员,仅凭几年间积累的知识浅显地聊聊,再根据未来的深入接触继续写后面的文章

不过我现在的经验所积累的常见HTTP知识相信已经足够大家应用在日常开发中了,这能帮助你快速理解更多程序,快速调试许多BUG