共计 894 个字符,预计需要花费 3 分钟才能阅读完成。
如果你是计算机专业毕业或者学习过网络通信,那你肯定听晓得 OSI 模型 OSI 是 Open System Interconnection 的缩写,译为“开放式系统互联”。OSI 模型把网络通信的工作分为 7 层,从下到上别离是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。然而它的毛病是分层太多,减少了网络工作的复杂性,所以没有大规模利用。起初人们对 OSI 进行了简化,合并了一些层,最终只保留了 4 层,从下到上别离是接口层、网络层、传输层和应用层,这就是大家相熟的 TCP/IP 模型。
OSI 7 层
TCP/IP 4 层
OSI 7 层 和 TCP/IP 4 层 比照图
这个网络模型到底是干什么呢?简而言之就是进行数据封装的。
咱们通常应用的程序(或软件)通常通过应用层拜访网络,程序生成的数据将逐层向下传输,直到最终的网络接口层,而后通过网线发送到互联网。每次数据向下一层时,它都将被该层的协定包装。当它被发送到互联网时,比原始数据多了四层包装。整个数据封装过程就像一个俄罗斯套娃医院。
当另一台计算机接管到数据包时,它将从网络接口层传输到下层。每个传输层将被解包。直到最初一个应用层,将取得最原始的数据,即程序将应用的数据。
打包数据的过程实际上是在数据的头中增加一个标记(数据块),以批示数据曾经通过该层,并且我曾经对其进行了解决。解包数据的过程正好相同,即移除数据头的标记,让其逐步显示其原始形态
你看,在互联网上传输一段数据是如许简单,但咱们感觉不到。这就是网络模型的威力。咱们只须要在代码中调用一个函数,就能够让所有的网络层为咱们工作。
大家相熟的 socket 编程,是站在传输层的根底上,所以能够应用 TCP/UDP 协定,然而不能做拜访网页事件,因为拜访网页所须要的 http 协定位于应用层。
当两台计算机通信时,必须恪守的准则:
必须是同一档次进行通信,比方,A 计算机的应用层和 B 计算机的传输层就不能通信,因为它们不在一个档次,数据的拆包会遇到问题。
每一层的性能都必须雷同,也就是领有完全相同的网络模型。如果网络模型都不同,那不就乱套了,谁都不意识谁。
数据只能逐层传输,不能跃层。
每一层能够应用上层提供的服务,并向下层提供服务。