通讯和网络传输数据和像,都是传输数据,因此用通讯作类比,方便理解和记忆。node
好比 Alice 想知道 xxx老师的种子,向种子网站 Bob 要(pull)。这种通讯的方式就是我问,你答,也就是 HTTP 方式。git
再好比 Alice 和 Bob 是一我的写信,一我的收,也就是说 Alice 向 Bob 发信息(push),Bob 接收,这个交流方式,就是 SMTP。github
应用层是为用户提供的接口,定义了用户之间的交流方式。网络
既然是交流,就要解决语言的问题,总不能一个讲英语,一个讲汉语,这个就是编码。网站
表示层解决编码、加密等问题。编码
既然两我的要通讯,如何开始?过了一段时间,不想继续通讯了,如何结束?这些都是会话层要处理的。加密
会话层控制两台电脑之间的连接。htm
两我的要通讯了,因为传输途径的限制,一封信会被切割为一个一个段落(segment)。那么其中一个段落传丢了怎么办?要不要重传?每一个段落,要顺讯到达吗?这些就是 TCP/UDP 的区别。传输层用来解决这些问题。blog
传输层解决主机间的数据传输(能够是不一样网络)和传输质量的问题。接口
通讯前,选好了对话的姿式(应用层),有了传输内容的表示形式(表示层),传输的质量有了保证(传输层)。
那怎么标识 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