关于 Alice 和 Bob 通信的故事
通信和网络传输数据和像,都是传输数据,所以用通信做类比,方便理解和记忆。
应用层
比如 Alice 找苍老师的种子,向种子网站 Bob 要(pull)。这种通信的方式就是我问,你答,也就是 HTTP 方式。
再比如 Alice 和 Bob 是一个人写信,一个人收,也就是说 Alice 向 Bob 发信息(push),Bob 接收,这个交流方式,就是 SMTP。
应用层是为用户提供的接口,定义了用户之间的交流方式。
表示层
既然是交流,就要解决语言的问题,总不能一个讲英语,一个讲汉语,这个就是编码。
表示层解决编码、加密等问题。
会话层
既然两个人要通信,如何开始?过了一段时间,不想继续通信了,如何结束?这些都是会话层要处理的。
会话层控制两台电脑之间的链接。
传输层
两个人要通信了,由于传输途径的限制,一封信会被切割为一个一个段落(segment)。那么其中一个段落传丢了怎么办?要不要重传?每个段落,要顺讯到达吗?这些就是 TCP/UDP 的区别。传输层用来解决这些问题。
传输层解决主机间的数据传输(可以是不同网络)和传输质量的问题。
网络层
通信前,选好了对话的姿势(应用层),有了传输内容的表示形式(表示层),传输的质量有了保证(传输层)。
那怎么标识 Bob 呢?当然是地址了,比如 xxx 市 xxx 小区 : 100-505 室。
也就是小区 :门牌号,小区好比主机,小区的地址就是 IP ,门牌号就是端口号。
有了地址,选择怎样的路径呢?
一个地方到另一个地方的方式有很多种。比如深圳到北京,可以先从深圳 - 广州 - 北京,
也可以是 深圳 - 郑州 - 北京。
有远有近,有快有慢,要走哪条路的事情。既路由(routing)和传输控制(subnet traffic control)。
网络层解决的是不同网络间数据传输问题。
数据链路层
我们知道了,从深圳到北京,可以在广州中转。但北京传到深圳的信息是正确的吗(error detect)?不正确怎么更正error correct)?这些问题,都由数据链路层解决。
数据链路层接解决直接相连的两个节点(node)数据传输的问题。
物理层
物理硬件和物理硬件有是怎么连接的呢?网线是什么?频率等物理特性是什么,这些都是物理层所要解决的。
参考
OSI 7-Layer Model and the role of each layer
The OSI Model's Seven Layers Defined and Functions Explained
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。