共享介质与非共享介质:网络通信的两种模式

简介: 共享介质与非共享介质:网络通信的两种模式

共享介质与非共享介质:网络通信的两种模式

引言

网络通信中,共享介质和非共享介质是两种常见的数据传输模式。这两种模式各有优缺点,适用于不同的场景。本文将深入探讨这两种模式的工作原理、优缺点以及控制方式。

共享介质:定义与特点

定义

共享介质(Shared Medium)是一种多个设备共享一个通信介质的网络模式。在这种模式下,设备之间使用同一个载波信道进行数据的发送和接收。

特点

  • 半双工通信(Half-Duplex Communication):在大多数情况下,共享介质采用半双工通信。
  • 访问控制(Access Control):由于多个设备共享同一介质,因此需要一种机制来控制哪个设备可以使用介质。

缺点

  • 网络拥堵(Network Congestion):由于多个设备共享同一介质,容易导致网络拥堵。

共享介质的控制方式

争用方式(Contention-Based)

争用方式,也称为CSMA(Carrier Sense Multiple Access),是一种先到先得的方式。

优点与缺点
  1. 优点:简单,易于实现。
  2. 缺点:容易发生数据冲突(Data Collision)。

令牌传递方式(Token Passing)

令牌传递方式是通过一个特殊的报文——令牌(Token)来控制数据传输

优点与缺点
  1. 优点:不会发生冲突,每个站都有平等的机会。
  2. 缺点:利用率不高。

非共享介质:定义与特点

定义

非共享介质(Dedicated Medium)是一种每个站点直连交换机,由交换机负责转发数据帧的网络模式。

特点

  • 全双工通信(Full-Duplex Communication):在非共享介质中,通常采用全双工通信方式。

总结与扩展

方式 优点 缺点 适用场景
共享介质 简单,成本低 容易拥堵 小型局域网
非共享介质 高效,不易拥堵 成本相对较高 大型网络,数据中心

在现实生活中,我们常常面临选择——是否追求独占还是愿意与他人共享。这不仅是一种技术选择,也反映了我们对资源和机会的态度。正如Bjarne Stroustrup在《The C++ Programming Language》中所说:“The most important single aspect of software development is to be clear about what you are trying to build.”

参考代码

// C++ 示例:使用争用方式进行数据传输
void contentionBasedTransmission() {
  // 争用逻辑
}
// C++ 示例:使用令牌传递方式进行数据传输
void tokenPassingTransmission() {
  // 令牌传递逻辑
}

这两种代码示例展示了如何在C++中实现共享介质和非共享介质的数据传输。这些代码可以在GCC编译器的库中找到,具体实现了数据传输的底层逻辑。

结语

在我们的编程学习之旅中,理解是我们迈向更高层次的重要一步。然而,掌握新技能、新理念,始终需要时间和坚持。从心理学的角度看,学习往往伴随着不断的试错和调整,这就像是我们的大脑在逐渐优化其解决问题的“算法”。

这就是为什么当我们遇到错误,我们应该将其视为学习和进步的机会,而不仅仅是困扰。通过理解和解决这些问题,我们不仅可以修复当前的代码,更可以提升我们的编程能力,防止在未来的项目中犯相同的错误。

我鼓励大家积极参与进来,不断提升自己的编程技术。无论你是初学者还是有经验的开发者,我希望我的博客能对你的学习之路有所帮助。如果你觉得这篇文章有用,不妨点击收藏,或者留下你的评论分享你的见解和经验,也欢迎你对我博客的内容提出建议和问题。每一次的点赞、评论、分享和关注都是对我的最大支持,也是对我持续分享和创作的动力。

目录
相关文章
|
9月前
|
JavaScript
Vue中Axios网络请求封装-企业最常用封装模式
本教程介绍如何安装并配置 Axios 实例,包含请求与响应拦截器,实现自动携带 Token、错误提示及登录状态管理,适用于 Vue 项目。
358 1
|
11月前
|
负载均衡 算法 安全
基于Reactor模式的高性能网络库之线程池组件设计篇
EventLoopThreadPool 是 Reactor 模式中实现“一个主线程 + 多个工作线程”的关键组件,用于高效管理多个 EventLoop 并在多核 CPU 上分担高并发 I/O 压力。通过封装 Thread 类和 EventLoopThread,实现线程创建、管理和事件循环的调度,形成线程池结构。每个 EventLoopThread 管理一个子线程与对应的 EventLoop(subloop),主线程(base loop)通过负载均衡算法将任务派发至各 subloop,从而提升系统性能与并发处理能力。
549 3
|
11月前
基于Reactor模式的高性能网络库github地址
https://github.com/zyi30/reactor-net.git
231 0
|
9月前
|
安全 测试技术 虚拟化
VMware-三种网络模式原理
本文介绍了虚拟机三种常见网络模式(桥接模式、NAT模式、仅主机模式)的工作原理与适用场景。桥接模式让虚拟机如同独立设备接入局域网;NAT模式共享主机IP,适合大多数WiFi环境;仅主机模式则构建封闭的内部网络,适用于测试环境。内容简明易懂,便于理解不同模式的优缺点与应用场景。
1267 0
|
11月前
|
缓存 索引
基于Reactor模式的高性能网络库之缓冲区Buffer组件
Buffer 类用于处理 Socket I/O 缓存,负责数据读取、写入及内存管理。通过预分配空间和索引优化,减少内存拷贝与系统调用,提高网络通信效率,适用于 Reactor 模型中的异步非阻塞 IO 处理。
337 3
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
570 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
网络协议 测试技术 Linux
Golang 实现轻量、快速的基于 Reactor 模式的非阻塞 TCP 网络库
gev 是一个基于 epoll 和 kqueue 实现的高性能事件循环库,适用于 Linux 和 macOS(Windows 暂不支持)。它支持多核多线程、动态扩容的 Ring Buffer 读写缓冲区、异步读写和 SO_REUSEPORT 端口重用。gev 使用少量 goroutine,监听连接并处理读写事件。性能测试显示其在不同配置下表现优异。安装命令:`go get -u github.com/Allenxuxu/gev`。
410 0
|
安全 Docker 容器
docker的默认网络模式有哪些
Docker 默认网络模式包括:1) bridge:默认模式,各容器分配独立IP,可通过名称或IP通信;2) host:容器与宿主机共享网络命名空间,性能最优但有安全风险;3) none:容器隔离无网络配置,适用于仅需本地通信的场景。
708 6
|
Docker 容器
【赵渝强老师】Docker的None网络模式
Docker容器在网络方面实现了逻辑隔离,提供了四种网络模式:bridge、container、host和none。其中,none模式下容器具有独立的网络命名空间,但不包含任何网络配置,仅能通过Local Loopback网卡(localhost或127.0.0.1)进行通信。适用于不希望容器接收任何网络流量或运行无需网络连接的特殊服务。
379 0
|
Docker 容器
【赵渝强老师】Docker的Host网络模式
Docker容器在网络环境中是隔离的,可通过配置不同网络模式(如bridge、container、host和none)实现容器间或与宿主机的网络通信。其中,host模式使容器与宿主机共享同一网络命名空间,提高性能但牺牲了网络隔离性。
1078 0