首页 > 其他分享 >深入理解通信模型

深入理解通信模型

时间:2024-09-06 11:14:32浏览次数:10  
标签:协议 IP 通信模型 TCP OSI 传输 MAC 理解 深入

深入理解通信模型

OSI七层模型

主要目的

OSI七层模型的主要目的是为解决不同网络互连时所遇到的兼容性问题,通过七个层次化的结构模型使不同的系统、不同的网络之间实现可靠的通信

主要功能
  1. 物理层:单位比特,定义物理连接和电信号传输,如电缆、连接器等

  2. 数据链路层:单位帧,分MAC子层和LLC子层,负责网络节点之间的数据传输和错误检测,如帧的封装、发送和接收等

    • MAC子层:帧的封装与解封装、识别MAC地址、内置协议确保数据的有序传输,主要对接物理层

    • LLC子层:使不同类型的网络协议能够在同一物理介质上进行通信,将不同的网络协议数据封装到同一个数据链路帧中,通过一定的机制(如确认应答、超时重传等)来确保数据的可靠传输、分段重组较大的数据包,主要对接网络层

      目的MAC地址 源MAC地址 T/L(Type/Length) 数据 FCS
      DMAC SMAC 协议类型(IP/ARP等) DATA 帧校验序列
      T/L>=1536 Ethernet_II帧
      T/L<=1500 IEEE802.3帧
  3. 网络层:单位包,将数据包从源节点传输到目标节点,通过路由选择实现数据包在网络中的传输

  4. 传输层:单位段,负责端到端的数据传输和可靠性保证,如TCP和UDP协议

    • UDP用户数据报协议:无连接、不可靠,不顾死活,支持一对一,一对多,多对多
    • TCP传输控制协议:面向连接、可靠,只支持点对点
  5. 会话层:建立和维护会话,确保通信双方之间的会话过程畅通

  6. 表示层:负责数据格式的编码和解码,确保数据在传输过程中的一致性和可理解性

  7. 应用层:负责网络应用的实际运行,如HTTP、FTP等协议

最大优点

将服务、接口和协议这三个概念明确地区分开来,使得各层之间具有很强的独立性

使网络的不同功能模块(不同层次)可以分担起不同的职责,从而简化问题、便于管理和维护

主要优点
  1. 独立性:各层之间相对独立,便于技术更新和维护
  2. 灵活性:允许使用不同的协议和技术组合,以满足不同的网络需求
  3. 维护性:故障定位更容易,因为可以逐层排查
主要缺点

层次较多,对服务定义和协议极其复杂,难以实现,有些功能重复出现(例如编址、流量的控制和差错的控制)增加系统的延迟和开销


TCP/IP四层模型

主要目的

简化OSI模型使之更容易实现,为网络提供一套统一的通信协议,以实现不同计算机之间的数据传输和通信

主要功能

  1. 网络接口层:负责数据在物理网络上的传输,如以太网帧的发送和接收
  2. 网络层(网际层):负责数据包的选路和转发,主要协议为IP协议
  3. 运输层:提供端到端的通信服务,主要协议为TCP和UDP
  4. 应用层:负责网络应用的实际运行,如HTTP、FTP、TELNET等协议
最大优点

相对OSI七层模型更为简洁,减少了层次和复杂度,提高了处理效率

主要优点
  1. 简洁性:层次较少,处理过程相对简单
  2. 效率:由于层次少,减少了数据传输的延迟和开销
  3. 广泛应用:TCP/IP协议族已经成为互联网的标准协议,得到了广泛应用
主要缺点

在某些方面可能不如OSI七层模型细致和灵活,如错误检测和纠正机制可能不如OSI七层模型完善

但TCP/IP协议族通过其他机制(如TCP的确认应答、超时重传等)来弥补这些不足

标签:协议,IP,通信模型,TCP,OSI,传输,MAC,理解,深入
From: https://www.cnblogs.com/Iwakura-Lain/p/18399865

相关文章

  • 【C++ 关键字】谈谈你对volatitle、extern 关键字的理解
    文章目录1.volatitle的概念2.volatitle的作用3.1.volatitle的概念......
  • 《深入理解 C++中的右值引用:开启高效编程新篇章》
    在C++的编程世界中,右值引用是一个强大而又富有特色的特性,它为程序员提供了更高效的资源管理方式和更灵活的编程手段。本文将带你深入探讨C++中的右值引用,揭示其独特的特点和强大的功能。一、标题背后的意义C++中的右值引用究竟有何特殊之处?为何它成为了C++编程中的热点......
  • python中*args和**kwargs的理解
    python中*args和**kwargs的理解打包(pack):*args是把多个位置参数打包成元组,**kwargs是把多个关键字参数打包成字典。拆分(unpack):*args是把打包了的参数拆成单个的,依次赋值给函数的形参,**kwargs是把字典的键值拆成单个的,依次赋值给函数的形参。#*args,*作用,有两个:打包参数和拆分......
  • 深入探索Spring Security:保护你的应用免受威胁
    目录1.引言2.什么是SpringSecurity?3.核心概念认证(Authentication)授权(Authorization)过滤器链(FilterChain)异常处理4.核心组件SecurityContextHolderUserDetailsServiceAuthenticationManagerAccessDecisionManager5.配置SpringSecurity6.最佳实践7.结论1.引......
  • 分块式内存管理理论理解
    一,引入             分块式内存管理是一种内存管理策略,它将内存划分为若干个大小相等的块(称为“分区”、“段”或“块”),然后为不同的程序分配这些块。这种策略可以有效地解决内存碎片问题,提高内存利用率。分块式内存管理通常有两种实现方式:固定大小块和可变......
  • 【鸿蒙开发笔记】如何理解 UIAbility 组件以及它的生命周期
    UIAbility组件是一种包含了UI的应用组件,主要用于和用户交互。UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口,一个应用可以有多个UIAbility组件。每一个UIAbility组件实例都会在最近任务列表中显示为一个对应的任务。那么就存在两种场景:如果要在任务......
  • 深入浅出:理解Python中的上下文管理器
    在Python编程中,上下文管理器是一个强大的工具,它允许我们更优雅地处理那些需要设置和清理的资源。本文将从概念入手,逐步深入到实现层面,帮助读者更好地理解和使用Python中的上下文管理器。什么是上下文管理器?上下文管理器是通过__enter__()和__exit__()方法来实现的类或......
  • 深入解析 Docker exec 命令
      目录Dockerexec命令详解常用选项示例注意 Docker容器允许你在隔离的环境中运行应用程序,这样可以确保应用运行所需的环境是一致的,无论是在开发、测试还是生产环境中。当需要在Docker容器中执行命令时,通常会用到dockerexec命令。下面是对dockerexec命令......
  • 深入了解Vite:依赖预构建原理
    前言前面我们有提到Vite在开发阶段,提倡的是一个no-bundle的理念,不必与webpack那样需要先将整个项目进行打包构建。但是no-bundle的理念只适合源代码部分(我们自己写的代码),vite会将项目中的所有模块分为依赖与源码两部分。依赖:指的是一些不会变动的一些模块,如:node_modules中的第......
  • 怎么理解cpu内核&多核
    References:cpu多核的来历,cpu性能与核心数的联系如何理解处理器、CPU、多处理器、内核、多核?内核/逻辑处理器/线程/多线程/多CPU/多核CPUCPU相关概念:物理cpu数、核数、逻辑cpu数,12核20线程实例分析Multi-CoreonChipArchitecture*doc-IKsingle-corevsmulti-core......