利用光纤实现物理单向传输

简介:

  最近做了一个非常有意思的事情,就是利用光纤实现物理上的数据单向传输。其实这个东西已经有不少公司都已经做过了,但了解的人貌似并不多,我也是第一次做这样的事情。由于自己对这方面知识的匮乏,还导致系统设计上出现了偏差,实在惭愧,所以特别把自己的经验拿出来与大家分享一下。

    首先陈述几个概念:
    1. 光纤本身只能做单向的数据传输,光数转换需要有相应的光网卡。这里注意一下,如果想组成一个双向链路,那么就需要两根光纤了。
    2. 另外,光纤分单模和多模的,价格差的也非常大,区别主要在实际可有效传输的距离上,单模可以到几公里,但多模只有几米,当然实际传输距离也和光强度有关系。
    3. 光传输有个特点,就是可以利用棱镜(也就是分光器)把光分成两个一模一样的信号,但是强度也会按分光比例削弱。常见的分光器有5:5的,2:8的等等。
    4. 市面上有带光网口和普通网口的交换机,当然也有带光网卡的服务器,这个就按需选购吧。

    上图就是一个最简单的一个实现方案。这里Send Server是个带光网卡的服务器,它与Ftp Server用两个光纤进行连接,这样就可以实现TCP的连接了,他们之间的通讯可以走tftp协议,实现文件的上传功能。在发送通道上接了一个分光器,这样Receive Server就同样可以收到上传的文件,当然这里要写一个网卡级的还原程序。这样的物理结构就真正的实现数据传输的单向性,其实也挺简单的。



本文转自passover 51CTO博客,原文链接:http://blog.51cto.com/passover/509258,如需转载请自行联系原作者

相关文章
|
SQL 关系型数据库 MySQL
Python 数据库访问与ORM框架——打造高效开发利器
Python 作为一门广泛使用的编程语言,其在数据库访问方面也有着较为成熟的解决方案,其中ORM框架更是成为了开发者们的首选。本文将介绍 Python 中数据库访问和 ORM 框架的基本概念,以及如何使用 SQLAlchemy 这一优秀的 ORM 框架进行开发。
|
前端开发 JavaScript 程序员
基于React Hooks封装的验证码组件
基于React Hooks封装的验证码组件
1705 1
|
Oracle Java 关系型数据库
如何判断jdk版本是32位还是64位?
如何判断jdk版本是32位还是64位?1、这个主要是在 cmd 下输入 java -version来查看,如果没有标明是多少位的,默认一般是32位的。2、看你在oracle官网下载的jdk文件原名:刚下载的JDK文件名后面标注了x64代表是64位的JDK,若没有标注,则都是32位的JDK(必须保证是官网下载的文件原名哦);当然此只是官网下载的文件,不包括手动更改的文件名。 比如: jdk-8u102-windows-i586是什么32位还是64位?没有标注x64,就说明是32位的。 64位后面都会带x64标识;不带就是32位的;
7057 0
如何判断jdk版本是32位还是64位?
|
7月前
|
Java 数据库 数据安全/隐私保护
Spring 微服务和多租户:处理多个客户端
本文介绍了如何在 Spring Boot 微服务架构中实现多租户。多租户允许单个应用实例为多个客户提供独立服务,尤其适用于 SaaS 应用。文章探讨了多租户的类型、优势与挑战,并详细说明了如何通过 Spring Boot 的灵活配置实现租户隔离、动态租户管理及数据源路由,同时确保数据安全与系统可扩展性。结合微服务的优势,开发者可以构建高效、可维护的多租户系统。
647 127
|
SQL 索引 Python
Pandas中DataFrame合并的几种方法
Pandas中DataFrame合并的几种方法
2440 1
|
监控 Java 应用服务中间件
SpringBoot3 快速入门及原理分析
SpringBoot3 快速入门及原理分析
|
监控 Linux
Zabbix 5.0 LTS的agent服务部署实战篇
文章介绍了如何在CentOS 7.6操作系统上部署Zabbix 5.0 LTS版本的agent服务,包括配置软件源、安装agent、修改配置文件、启动服务,并在Zabbix web界面添加监控。
630 4
Zabbix 5.0 LTS的agent服务部署实战篇
|
机器学习/深度学习 自然语言处理 Ubuntu
OpenVoice一键部署
OpenVoice一键部署
1527 0
|
存储 安全 算法
C 函数怎么实现复用
在 C 语言中,函数复用主要通过定义、调用、使用头文件、参数化及库的使用来实现。定义一个函数完成特定任务,并在需要的地方调用它,避免重复代码。将函数声明放在头文件中,供多个源文件包含,进一步提升复用性。参数化使函数能处理不同输入,增强灵活性。将常用函数编译成库,在多个项目中引用,提高代码可维护性和可读性。