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

osi模型,tcp/ip模型(名字由来+各层介绍+中间设备介绍)

目录

网络协议如何分层

引入

osi模型

tcp/ip模型 

引入

命名由来

介绍 

物理层

数据链路层

网络层

传输层

应用层

中间设备 


网络协议如何分层

引入

我们已经知道了网络协议是层状结构,接下来就来了解了解下网络协议如何分层

  • 常见的网络协议分层模型是OSI模型 和 TCP/IP模型

osi模型

  • osi模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范
  • 包含七个层次,它提供了一个框架,完善地描述了在网络通信中各层次的逻辑功能

tcp/ip模型 

引入

虽然osi模型很好,但是在实际工程中,我们发现了许多问题

  • 我们本来是要把网络功能直接写在内核里的  (因为我们每台电脑都要联网,并且要保证使用统一的标准,所以干脆将网络协议整合到操作系统中,这样就不会出现因为协议不同而导致无法通信的问题了)
  • 但是在实操中,发现会话层和表示层不好在os中实现
  • 于是这两层并没有实际落地,而是将这两层统一看作应用层,在应用层的协议中实现这两层
  • 所以,在实际实现时只剩下了五层

命名由来

  • 站在os角度,最重要的两层是网络层和运输层(因为最终只有这两层被实际写在了os内)
  • 而他们两个最具有代表性的协议分别是ip协议和tcp协议,所以这五层网络协议栈也被叫做tcp/ip协议栈
  • 由于物理层我们考虑的比较少,因此很多时候也可以称为 tcp/ip四层模型

介绍 

物理层
  • 确保了数字数据实际的传输介质之间的互换,包括将数字数据转换为适合传输介质的信号(光/电信号),以及从接收到的信号还原为数字数据
  • 比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等,这些都属于物理层的概念
  • 物理层的能力决定了最大传输速率、传输距离、抗干扰性等属性
  • 集线器(Hub)工作在物理层
数据链路层
  • 主要负责两个功能:帧的封装/解析和链路管理
  • (数据帧 -- 在数据链路层传输数据的一种结构化格式)
  • 负责将从网络层接收到的数据封装成帧,将收到的帧解析后传递给网络层:
  • 下图很详细 -- 来源于https://www.cnblogs.com/caijinghong/p/15887860.html
  • 协调多个设备之间的数据传输(包括帧的流量控制、错误检测和纠正、以及数据链路层的访问控制),检查帧中的地址信息,以确定这个帧是否是发给当前设备的
  • 有以太网、令牌环网, 无线LAN等标准(也就是协议)
  • 交换机(Switch)工作在数据链路层
网络层
  • 负责地址管理和路由选择
  • 例如,在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路
  • 路由器(Router)工作在网路层
传输层
  • 负责两台主机之间的数据传输
  • 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机
  • 没有特定的物理设备与传输层直接对应,传输层主要工作在os中,提供一些协议和机制,以确保应用程序之间的有效通信
应用层
  • 负责应用程序间沟通
  • 如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等
  • 我们的网络编程主要就是针对应用层

中间设备 

随着网络功能的复杂,需要更多的设备来支持,所以会增加一些中间设备,来辅助网络功能的实现

  • 比如路由器,交换机,集线器,网卡等等

这些设备会具备各自层次的功能,但不仅仅只有这个功能

在实际网络中,它们经常需要相互协作以提供综合的网络服务

  • 例如,路由器不仅进行网络层的路由,还可能包括数据链路层的交换功能
  • 交换机虽然主要是数据链路层的设备,但在实现VLAN时可能涉及到网络层的信息

相关文章:

  • Mysql索引学习
  • Unity(第十七部)Unity自带的角色控制器
  • 数据结构与算法:堆
  • Carla自动驾驶仿真九:车辆变道路径规划
  • 基于ssm江苏融汇房地产营销策划有限公司的宣传网站
  • 蓝桥杯算法题汇总
  • mysql使用连接池
  • 6、wuzhicms代码审计
  • 【JSON2WEB】07 Amis可视化设计器CRUD增删改查
  • 把简单留给用户,把复杂交给 AI
  • 新形势下第三方支付公司如何盈利
  • 小白学视觉 | 详解遗传算法 GA(Python实现代码)
  • 软件测试测试文档编写
  • 多线程(进阶四:线程安全的集合类)
  • 【JavaSE】时间类相关API以及使用
  • Angular 响应式表单之下拉框
  • Druid 在有赞的实践
  • ECMAScript入门(七)--Module语法
  • PhantomJS 安装
  • Puppeteer:浏览器控制器
  • React as a UI Runtime(五、列表)
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • supervisor 永不挂掉的进程 安装以及使用
  • vue-router 实现分析
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 从重复到重用
  • 基于遗传算法的优化问题求解
  • 如何学习JavaEE,项目又该如何做?
  • 原生Ajax
  • 智能合约Solidity教程-事件和日志(一)
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • # 透过事物看本质的能力怎么培养?
  • #include到底该写在哪
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • (09)Hive——CTE 公共表达式
  • (10)STL算法之搜索(二) 二分查找
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (七)理解angular中的module和injector,即依赖注入
  • (三)Honghu Cloud云架构一定时调度平台
  • (转) Face-Resources
  • (转)Linq学习笔记
  • (转)visual stdio 书签功能介绍
  • (转)用.Net的File控件上传文件的解决方案
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Reactor简单使用教程
  • .NET 使用 XPath 来读写 XML 文件
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .NET性能优化(文摘)
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [1]-基于图搜索的路径规划基础
  • [BZOJ2208][Jsoi2010]连通数