Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >应用程序的通信成本

应用程序的通信成本

作者头像
netkiller old
发布于 2018-03-05 07:47:42
发布于 2018-03-05 07:47:42
99200
代码可运行
举报
文章被收录于专栏:NetkillerNetkiller
运行总次数:0
代码可运行

应用程序的通信成本

什么是通信

一个程序中两个以上功能相互传递信号或数据叫做通信。

什么是成本

这是是指时间成本与空间成本。 时间就是传递数据所花费的时间。空间是指传递过程耗费容量大小。

都有哪些通信方式

  1. 全局变量
  2. 线程间通信
  3. 共享内存
  4. 共享文件
  5. 管道
  6. Socket
  7. 硬件(串口,USB) 等等

全局变量

全局变量是成本最低通信方法,通过设置全局变量,在程序运行时过程中均可操作该变量,用户信号传递,数据传输。

线程间通信

线程间通信也是采用全局变量方式,通常线程库会提供一套完善的API供用户使用,它可以实现共享,锁,互斥等机制。

共享内存

共享内存是在内存中申请开辟一个区域,用于数据共享存储。

共享文件

数据存储在文件中,供多线程,多进程访问,文件可以上锁与解锁,这种方式性能最差,但对于初级开发者非常适合。 通过将文件存储在tmpfs或shm 文件系统中,可以获得不错的性能。

管道

管道是字符设备,通常是fifo(先进先出)单向通信,如果需要双工可能使用两个管道。

Socket

Socket分为 unix socket 与 tcp/udp socket. 前者只能在unix like 系统中使用。 Socket 分为阻塞与非阻塞通信。 其中tcp/udp Socket 可以跨服务器传输数据。

硬件

例如串口通信,使用串口连接两台电脑,通常速率为 9600bps,115200bps A电脑中运行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat /dev/ttyS0

B电脑运行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat /etc/passwd > /dev/ttyS0

可以将/etc/passwd文件从A电脑传递到B电脑。

不再本文讨论范围,这里不多述。

现在我们已经清楚了各种通信方式,这些通信方式适用于不同场景,由此出现了很多种使用方式,甚至多种方式同时使用。

服务器池概念

互联网时代的特点是,服务器不在单一一种,而是各种异构系统,我们经常会看到一个网站有多个服务器组成,因此我们将应用分布在不同的服务器上运行。 例如 Web服务器,应用服务器,缓存服务器,数据库服务器各司其职。就应用服务器还可能分成很多种类,例如搜索,内容管理,用户中心,等等。 问题来了,你会发现你的每个团队开发出一个产品,都需要一个服务器运行,每个团队都在做独立系统。不同团队开发出的功能与其他产品并不兼容,于是有了接口这种东西。 运维的问题也来了,每个应用一个服务器不太现实,但每个项目都不想与其他项目公用一个服务器资源,于是有了虚拟机

于是我们见到的系统是这样了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
               +--------+
               | C 应用 |
               +--------+
                ^  ^  ^
                |  |  |
+--------+ <-----+  |  +-----> +--------+
| A 应用 | <--------+--------> | B 应用 |
+--------+ <-----+  |  +-----> +--------+
                 |  |  |
                 V  V  V
               +--------+
               | D 应用 |
               +--------+

A 应用 运行中会与其他三个服务器产生通信,一次操作建立三次连接,这样的通信成本是非常高的,如果任何一个节点出现故障都出现阻塞。 从运维角度这种配置也极其繁琐,每个节点都要配置与其他连点连接,防火墙ACL 维护也非常繁琐。 出现故障,排查也非常困难,还会消耗大量的排查时间。

进一步优化

我们将公共调用部门放在一处,然后将所有资源都放在服务器上。通过负载均衡分发调用,高可用技术解决公用接口单点问题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
               +----------+
               | 公共接口 |
               +----------+
                 ^  ^  ^
                 |  |  | 
    +------------+  |  +------------+
    |               |               |
    V           V               V
+--------+      +--------+      +--------+
| A 应用 |      | B 应用 |      | C 应用 |
| B 应用 |      | C 应用 |      | A 应用 |
| C 应用 |      | A 应用 |      | B 应用 |
+--------+      +--------+      +--------+

这样的好处显而易见,服务器节点充分使用,既有高可用,又有负载均衡,保障7*24小时无故障运行。部属也方便。 注意上面:每个节点的 A,B,C 应用 加权值不同。

耦合与解耦

耦合级别有变量级别、函数级别、方法级别、类级别、包级别、协议级别、语言级别、数据流级别、缓存级别、数据库级别、以及业务级别。 你需要根据当时场景适当耦合或解耦。例如理论上软件运行速度是在同一个实体机上运行效率最高,有时可能将其设计为分布式才能体现效率。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Netkiller 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
最好用的内网穿透工具合集
在渗透过程中,我们需要快速实现内网穿透,从而绕过网络访问限制,直接从外网来访问内网。今天,我们来推荐几款非常好用的内网穿透工具,如有其它推荐,欢迎补充和指正。
Bypass
2020/09/08
8K1
最好用的内网穿透工具合集
内网渗透测试:隐藏通讯隧道技术
上一节中,我们讲解了网络层的隧道技术(IPv6 隧道、ICMP 隧道)和传输层的隧道技术(TCP 隧道、UDP 隧道、常规端口转发)。现如今,TCP、UDP 通信大量被防御系统拦截,传统的Socket隧道也已经濒临淘汰,DNS、ICMP、HTTP/HTTPS 等难以被禁用的协议已经成为了攻击者控制隧道的主要渠道。在这一节中,我们将对应用层的隧道 SOCKS 代理技术进行实验性的讲解,由于小编能力太菜,很多东东也是现学现卖,应用层的DNS隧道我会在未来专门写一个专题进行讲解。
FB客服
2020/07/13
2.3K0
内网漫游之SOCKS代理大结局
在实际渗透过程中,我们成功入侵了目标服务器。接着我们想在本机上通过浏览器或者其他客户端软件访问目标机器内部网络中所开放的端口,比如内网的3389端口、内网网站8080端口等等。传统的方法是利用nc、lcx等工具,进行端口转发。
Ms08067安全实验室
2019/09/24
2.3K0
内网漫游之SOCKS代理大结局
内网隐藏通信隧道技术——EW隧道
在研究人员的渗透测试中,EW很好用,体积小,Linux为30kb左右,windows为56kb左右。EW是一套便携式的网络穿透工具,具有SOCKS v5服务架设和端口转发两大核心功能,可以在复杂的网络环境下完成网络穿透。
FB客服
2021/08/24
2.1K0
安全攻防 | EarthWorm 代理
EW(Earthworm)是一套便携式的网络穿透工具,具有SOCKS v5服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透。
安全小王子
2021/03/16
8660
【内网渗透】关于内网代理转发技术
有如下图所示测试环境,外网服务器拥有双网卡,既可与公网进行通信,也可以与内网服务器进行通信。
一名白帽的成长史
2020/07/20
2.8K0
【内网渗透】关于内网代理转发技术
推荐几款实用的内网穿透工具
本文以渗透的视角,总结几种个人常用的内网穿透,内网代理工具,介绍其简单原理和使用方法。
Java团长
2022/02/10
9K1
推荐几款实用的内网穿透工具
内网渗透之隐藏通信隧道技术
前段时间读了读徐哥的《内网安全攻防》,并复现了部分知识点,写篇文章记录下学习内容。
FB客服
2021/07/03
1.8K0
内网渗透之隐藏通信隧道技术
常见内网穿透工具,收好了!
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/04/18
1.4K0
常见内网穿透工具,收好了!
安排几款实用的内网穿透工具+教程
本文以渗透的视角,总结几种个人常用的内网穿透,内网代理工具,介绍其简单原理和使用方法。
民工哥
2021/11/26
1.3K0
内网建立传输通道
参考:http://www.0-sec.org/Tools/Cobalt%20Strike/32.html
渗透攻击红队
2020/05/25
1.4K0
内网建立传输通道
代理与转发常用工具汇总
自己对内网渗透搭建链路上很不熟练,乘着出差路上测试一下,有不当之处多多指正。好久不发文了,居然有付费阅读了,借此机会测试一下,内容比较粗糙,后期在全文发。相关工具在后台回复“01代理转发”可以获取下载链接。
用户5878089
2021/03/11
2.9K0
内网渗透之隐藏通信隧道 -- sock5
SOCKS是一种代理服务,可以简单地将一端的系统连接另一 端。 SOCKS支持多种协议,包括HTTP、FTP等。SOCKS分为SOCKS 4和SOCKS 5两种类型: SOCKS 4只支持TCP协议;SOCKS5不仅支持TCP/UDP协议,还支持各种身份验证机制等,其标准端口为1080.SOCKS能够与目标内网计算机进行通信,避免多次使用端口转发。
Gh0st1nTheShel
2021/11/23
5.5K0
常见内网穿透工具,收好了!
目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……)。
网络工程师笔记
2023/09/09
1.4K0
常见内网穿透工具,收好了!
内网渗透基石篇-- 隐藏通信隧道技术(上)
在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异样,就会对通信进行阻断。那么什么是隧道呢?这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上。
顾翔
2021/05/17
2.6K0
内网渗透基石篇-- 隐藏通信隧道技术(上)
基于百香果内网安全沙盘的SOCKS学习·上篇
上周斗哥给大家介绍来“百香果”内网安全沙盘的构建,主要用于学习内网渗透的基础环境,那么内网渗透中最基础的就是内网通信隧道了,本期给大家带来内网通信隧道中SOCKS的学习。
pensar
2021/01/08
9340
内网渗透常用端口转发与代理工具枚举
lcx.exe是一个端口转发工具,有Windows版和Linux版两个版本,Windows版是lcx.exe,Linux版为portmap,
字节脉搏实验室
2020/04/24
3.1K0
一款多平台网络穿透工具EW
该工具能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道,直达网络深处,用蚯蚓独有的手段突破网络限制,给防火墙松土。
七夜安全博客
2018/08/16
1.2K0
一款多平台网络穿透工具EW
基于百香果内网安全沙盘的SOCKS学习·下篇
上周斗哥给大家介绍了在“百香果”内网安全沙盘中SOCKS的4款工具的基本使用,模拟了在实战情况下Socks工具的使用,掌握在通信隧道中基本的网络结构,本期将继续给大家带来内网通信隧道中SOCKS代理更为复杂的实战环境的模拟。
pensar
2021/01/08
6980
【红蓝对抗】内网代理转发
转发目标主机的3389远程桌面服务端口到本地的8888,使用linux中的rdesktop连接本地的8888端口。
鸿鹄实验室
2021/12/01
2.4K0
【红蓝对抗】内网代理转发
推荐阅读
相关推荐
最好用的内网穿透工具合集
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验