OSI网络七层模型和TCP/IP模型

举报
Java李杨勇 发表于 2022/08/31 20:46:15 2022/08/31
【摘要】 如果你是计算机专业毕业或者学习过网络通信,那你一定听知道OSI模型OSI 是Open System Interconnection 的缩写,译为“开放式系统互联”。OSI模型把网络通信的工作分为7层,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。但是它的缺点是分层太多,增加了网络工作的复杂性,所以没有大规模应用。后来人们对 OSI 进行了简化,合并了一些层,最终只...

如果你是计算机专业毕业或者学习过网络通信,那你一定听知道OSI模型OSI 是Open System Interconnection 的缩写,译为“开放式系统互联”。
OSI模型把网络通信的工作分为7层,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
但是它的缺点是分层太多,增加了网络工作的复杂性,所以没有大规模应用。
后来人们对 OSI 进行了简化,合并了一些层,最终只保留了4层,从下到上分别是接口层、网络层、传输层和应用层,这就是大家熟悉的TCP/IP模型。

OSI 7层
image.png

TCP/IP 4层
image.png

这个网络模型究竟是干什么呢?简而言之就是进行数据封装的。

我们通常使用的程序(或软件)通常通过应用层访问网络,程序生成的数据将逐层向下传输,直到最终的网络接口层,然后通过网线发送到互联网。每次数据向下一层时,它都将被该层的协议包装。当它被发送到互联网时,比原始数据多了四层包装。整个数据封装过程就像一个俄罗斯套娃医院。

当另一台计算机接收到数据包时,它将从网络接口层传输到上层。每个传输层将被解包。直到最后一个应用层,将获得最原始的数据,即程序将使用的数据。

打包数据的过程实际上是在数据的头中添加一个标志(数据块),以指示数据已经通过该层,并且我已经对其进行了处理。解包数据的过程正好相反,即移除数据头的标记,让其逐渐显示其原始形状

你看,在互联网上传输一段数据是多么复杂,但我们感觉不到。这就是网络模型的威力。我们只需要在代码中调用一个函数,就可以让所有的网络层为我们工作。

大家熟悉的socket编程,是站在传输层的基础上,所以可以使用TCP/UDP 协议,但是不能做访问网页事情,因为访问网页所需要的http协议位于应用层。

当两台计算机通信时,必须遵守的原则:

  • 必须是同一层次进行通信,比如,A 计算机的应用层和 B 计算机的传输层就不能通信,因为它们不在一个层次,数据的拆包会遇到问题。
  • 每一层的功能都必须相同,也就是拥有完全相同的网络模型。如果网络模型都不同,那不就乱套了,谁都不认识谁。
  • 数据只能逐层传输,不能跃层。
  • 每一层可以使用下层提供的服务,并向上层提供服务。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。