Protocol概观
协议是在是太多,最近打算好好整理一下,在豆瓣阅读上发现了一个叫做协议森林的系列文章。笼统的介绍了各种协议之间个关系和内容。本文就根据协议森林的内 容再做一番自己的解释。
协议(Protocol)
最简单同时也最复杂的协议就是我们的语言。如果你不懂英文,当你看到hello这串字符的时候。他对你是没有任何意义的。但是当你懂英文这个协议的时候。你就知道他的意思是 [Hello is a salutation or greeting in the English language. It is first attested in writing from 1826.] 但同时你作为一名华人,当然拥有[中文协议],所以你可以知道Hello在中文里是问好的意思。
在计算机的世界里也是一样的,每一台服务器,每一台Client,都是需要通信的。而通信作为一种双向的交流,当然是需要各种懂对方在说什么。这个时候就需要协议。
计算机的协议可以简单的分为5层,你也可以看看维基百科上更详细的层次。每个层里都有大把大把的协议。
- 物理層
- 连接层
- 网络层
- 传输层
- 应用层
物理層
物理层就是指光纤,电缆之类的传输了。光信号和电压信号如何产生协议?由于计算机底层只需要处理0/1的数据,所以电压的高电压和低电压就足以达成这个协议了。针对各种媒介,计算机都有相应的借口来接受信号。把电压,光波转化成0/1信号。
连接层
0/1可以和人类交流吗?完全不能。所以连接层的工作就是把杂乱的0/1分割成帧(frame)。连接层还规定了帧的格式。比如一个帧里面有收信地址和送信地址,还有校验错误的序列。还有最重的数据。但是帧的传输只能是局域网内的。最具代表性的连接层的协议就WiFi了。如果需要将数据传送的局域网外部地址。我们还需要更高层的协议。
网络层
网络层顾名思义,就是让各种局域网连接在一起。 刚才我们已经说过连接层的数据只能在局域网种传送,如果要传送到世界各地,就必须在连接层的数据里包含IP地址。当计算机联网的时候,我们都连接路由器。路由在接收到连接层的帧的时候,会根据帧里的IP地址来判断该数据是否需要传送的别的路由,如果只是局域网内的数据,就在局域网内转送,如果IP地址不属于局域网,就传送给局域网外的路由器,再由后继的路由继续传送,知道传达指定的局域网。
传输层
有了之前的3层,数据已经可以在服务器之间传送了,但是一台电脑,服务器上面跑的可不是一个程序,就好比公司里有财务部,HR,IT,这份数据到底应该给哪一个部门处理。传输层具有代表性的协议是TCP和UDP,通过端口(port)来识别’公司的部门‘。
应用层
应用层其实可以继续细分为更多的层。比如Web应用的HTTP协议,用于文件传输的FTP协议。