http 双向通信之port映射
新产品开发了近2-3个月,给到客户做试用的时候,发现一个开发这么久从未考虑到的一个通信问题,mark下,下次开发同类产品的时候长点记性了.
产品由client与服务端两部分组成,client与服务端须要相互通信,协议採用http,两边各开一个port,用于http请求响应.因为开发的时候都在同一个网段进行測试,所以没有发现不论什么产品上的问题.到了客户那边才发现客户环境是部署在不同网段的,这就带来了一系列port映射的问题.
所谓port映射能够理解为路由地址转换(nat),网段A的机子要訪问网段B的机子,中间必需要有个路由装置C(路由器,linuxserver等),C将A机子发给B机子包的源地址和源port替换成自己的地址和port,然后由C跟B通信,B响应请求给C,C又将响应内容还给A. 这就达到了不同网段之间A,B之间的通信.
刚接触到这个问题的时候,心想这也不是产品上的问题,就让客户自己加入port映射呗,由于不同网段避免不了的呀. 客户的反馈是 client向服务端的port影射他们能够自己负责配置,可是服务端向client的映射不给配, 一是太麻烦,二是client不让开port通信. 客户就是上帝,既然这么要求了,我们也没用办法仅仅有改通信方式.之前是client与服务端双向通信,所以跨网段就须要两边都配置port映射. 更改之后就变成单向通信,client仅仅能向服务端发请求并接受服务端响应,服务端不能向client发请求.服务端假设要获取到client的信息,仅仅能通过client不停轮询的向服务端去提供信息.这样就能够保证仅仅有client须要配置port映射,服务端不须要.
总结一下, http双向通信在同一网段内基本没有什么问题,可是在不同网段port映射须要配置两遍比較麻烦(前提是客户介意),採用单向轮询port映射配置会相对轻松点.
http 双向通信之port映射的更多相关文章
- 内网port映射具体解释(花生壳)
关于怎样建立服务器的解答. 一.花生壳的作用 首先,我们先来了解一下花生壳的究竟有什么作用.由于ADSL每次拨号上网所获得的IP地址每次都是不同的,花生壳起到的作用就是方便用户訪问我们的server( ...
- docker--container的port映射
使用nginx为例 先运行nginx [root@localhost ~]# docker run --name web -d nginx Unable to find image 'nginx:la ...
- 外网訪问内网应用实现之无公网IP、多port、固定port、UDP等应用的实现方法
有公网IP时,能够通过路由映射来实现外网訪问内网.然,当没有公网IP时,怎样实现外网訪问内网应用? 硬件路由方法因为无公网不可行,能够使用软件port映射的方法.如开放的NAT123全port映射. ...
- erlang集群IP及port管理
erlang集群是依靠epmd维护的,epmd是erlang集群节点间port映射的守护进程.负责维护集群内的节点连接.提供节点名称到IP地址及port的解析服务. epmd 自己定义port号 ep ...
- Cloud Foundry中DEA与warden通信完毕应用port监听
在Cloud Foundry v2版本号中,DEA为一个用户应用执行的控制模块,而应用的真正执行都是依附于warden. 更详细的来说,是DEA接收到Cloud Controller的请求:DEA发送 ...
- 通过rinetd实现port转发来訪问内网的服务
一. 问题描写叙述 通过外网来訪问内网的服务 二. 环境要求 须要有一台能够外网訪问的机器做port映射.通过数据包转发来实现外部訪问阿里云的内网服务 三. 操作方法 做port映射的方案 ...
- SIP穿越NAT SIP穿越防火墙-SBC
FireWall&NAT FireWall是一种被动网络安全防卫技术,位于网络的边界.在两个网络之间运行訪问控制策略.防止外部网络对内部信息资源的非法訪问,也能够阻止特定信息从内部网络被非法输 ...
- 并发-Java中的Copy-On-Write容器
Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改, ...
- 利用node构建本地服务
利用node构建本地服务 首先安装下node.js,地址为https://nodejs.org/en/,然后安装npm. node.js的中文api地址http://nodeapi.ucdok.com ...
随机推荐
- mysql memcache
http://blog.csdn.net/newjueqi/article/details/8350643
- 解决 MySQL manager or server PID file could not be found! 的方法
[root@centos var]# service mysqld stop MySQL manager or server PID file could not be found! [F ...
- ecshop的模板文件中如何判断用户是否登录
ecshop中对于smarty的运用和改造有很大的值得借鉴的地方,在dwt模板文件中可以直接判断用户是否登录,现在有规定,凡是只展示不销售的电商平台,一律不得展示商品价格,但可以在用户登录后显示. & ...
- [转]Net Framework引路蜂地图开发示例
From:http://www.2cto.com/kf/201207/140421.html 引路蜂地图也提供对.Net Framework平台的支持,可以开发桌面地图应用,由于Mono C#的跨平台 ...
- Productivity Improvements for the Entity Framework(实体框架设计)【转】
Background We’ve been hearing a lot of good feedback on the recently released update to the Entity F ...
- poj - 4045 - Power Station
题意:一棵有n个结点的树,要取其中的一个结点,使得该结点到其他所有结点的距离和dis最小,即损耗I * I * R * dis最小,输出最小损耗和该结点(有多个的话按结点编号从小到大输出)(3 < ...
- C#获取单个字符的拼音声母
public class ConvertToPinYing { /// <summary> /// 汉字转拼音缩写 /// < ...
- mysql数据库日期是varchar类型的时间比较查询
单纯的字符串比较结果不精确. select * from 表明 where times> '2088/12/8 10:02:40' (×) 转换函数如下(数据库为varchar): selec ...
- CAD 致命错误
在用.net进行CAD二次开发的时候,偶尔会出现致命错误,经总结,发现有两点会引起致命错误,在此记下,一来供自己参考,二来与大家分享 : ) 致命错误一: 描述:声明了DBObject对象,但未将对象 ...
- git SSh key多个key对应多个项目
必看 1. 本文不教你怎么生成key,主要解决多个项目对应多个SSH KEY的问题,在csdn code库上遇到的人估计很苦恼,为什么多个项目不能用一个key,为什么添加相同的key就会报重复 2. ...