当前位置: 首页 > news >正文

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

如果你是计算机专业毕业或者学习过网络通信,那你一定听知道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 计算机的传输层就不能通信,因为它们不在一个层次,数据的拆包会遇到问题。
  • 每一层的功能都必须相同,也就是拥有完全相同的网络模型。如果网络模型都不同,那不就乱套了,谁都不认识谁。
  • 数据只能逐层传输,不能跃层。
  • 每一层可以使用下层提供的服务,并向上层提供服务。

相关文章:

  • 猿创征文|Linux环境Redis部署及最佳实践
  • 猿创征文|C++来时路 _ 重温经典之C++类和对象 | 三大特性之一 - 封装 | 腾讯面试题
  • VueJS面试常见的300道题(英文版)
  • CREO:CREO软件之零件【渲染】之对三维零件实现渲染图文教程之详细攻略
  • Java数据结构之数组的增删改查
  • 函数栈桢原理
  • JSP面试题(重要)
  • 华为FreeBuds pro2大风场景下降噪差原因
  • 网课搜题接口对接教程
  • ORM基本操作
  • 数据结构-压缩软件核心-C++(利用哈夫曼树进行编码,对文件进行压缩与解压缩)
  • SSM学生成绩管理系统毕业设计-附源码070942
  • springboot宴会预定平台毕业设计-附源码231718
  • springboot大学新生小助手小程序毕业设计-附源码060917
  • LeetCode50天刷题计划(Day 35—不同路径II (8.00-9.20)
  • [笔记] php常见简单功能及函数
  • 【Linux系统编程】快速查找errno错误码信息
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • extjs4学习之配置
  • Go 语言编译器的 //go: 详解
  • java中具有继承关系的类及其对象初始化顺序
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 基于Android乐音识别(2)
  • 前端学习笔记之观察者模式
  • 前言-如何学习区块链
  • 我这样减少了26.5M Java内存!
  • 一个JAVA程序员成长之路分享
  • 一文看透浏览器架构
  • Mac 上flink的安装与启动
  • 正则表达式-基础知识Review
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (差分)胡桃爱原石
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十三)Maven插件解析运行机制
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (四)模仿学习-完成后台管理页面查询
  • (一)appium-desktop定位元素原理
  • (转)linux 命令大全
  • .cn根服务器被攻击之后
  • .gitignore文件设置了忽略但不生效
  • .net core webapi 大文件上传到wwwroot文件夹
  • .Net MVC4 上传大文件,并保存表单
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • [20150629]简单的加密连接.txt
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [Android]使用Retrofit进行网络请求
  • [BUUCTF 2018]Online Tool(特详解)
  • [C++]命名空间等——喵喵要吃C嘎嘎