为什么要规定网络协议,通信双方为什么要用同样的协议?
协议到底是啥意思?为什么要协议
如图。假设你现在开发一个计算服务器和一个计算器。计算器程序每次会把运算符和操作数放到一个数据包里发送给计算服务器进行计算请求。然后服务器返回结果响应。
我们在上述通信过程中,遵循的协议大概如下图所示:
如果没有上述协议的规范化,我们自然就没有办法统一 数据包的格式,也没有办法统一 响应状态码的值。
这种情况下,就相当于两个语言不通的人讲话,自然无法交流。
只有当我们统一了交流语言,也就是统一了 协议 之后,通信才能正常进行,彼此才能知道对方的状态。
在计算机网络中,网络一般分为如下五层:
每一层都有自己的协议,我们一层一层来介绍,为什么要有这样的协议。
应用层
最常见的应用层协议就是访问网站用的HTTP协议了。
试想,如果没有统一的HTTP协议,那么我们访问不同的网站服务器,将是以下情形:
如果用户A(浏览器)用Apache的格式去访问Tomcat服务器,毫无疑问,TomCat无法理解你请求的内容。
也就是说,浏览器得根据不同的服务器类型,发送不同格式的协议数据包。这简直是太麻烦了!
既然都是访问网站,为什么不统一一种数据格式呢?我们每次访问网站就按照这种格式传递数据不就好了嘛?
因此,国际标准化组织提出统一的HTTP协议。
所有的浏览器公司,都要按照HTTP协议的设定,来设计自己的程序。
同样的,所有的服务器公司,也要按照HTTP协议的设定,设计自己的服务器程序。
如此一来,Google浏览器可以用相同的数据格式访问各种服务器,不仅如此,IE, 360都是如此,大家相处和睦,通信不会有问题。
传输层
传输层的代表协议是TCP和UDP。传输层的主要作用就是控制数据传输过程的可靠性。(UDP除外)
一般来讲,传输层的功能都是由操作系统实现了。
试想,如果Windows和Linux实现不同的传输层协议,那么由于数据格式的差异,彼此之间无法通信。
因此,传输层协议的统一性也是必要的。 它使不同操作系统之间也能进行可靠传输
国际标准化组织就提出了TCP和UDP这两个统一标准。
网络层
网络层同理。它要完成寻址的功能,必然要有同种格式的地址才行。那么IP协议应运而生,通过规定IP地址,在网络中唯一标识一台计算机。如果地址格式都不同,那如何寻址?
此外,统一网络层协议,可以让数据包经过不同厂商生产的路由器进行传播。甭管你是华为路由器还是TPLink路由器,只要都服从IP协议,那就可以传输数据包。
数据链路层
数据链路层主要负责一个链路之间信息的传递。
只要你是以太网网卡,那么不管你是哪个公司生产的,都要求是根据以太网协议设计而来,都能识别以太网的首部。因此规定了以太网协议。
物理层
我们都知道,计算机里面都是1010
那么物理传输中,可以用高低电平、光、无线信号等手段模拟二进制来传播。
如果通信双方使用的物理协议都不一致,那么对信息的理解必然会出错: