侧边栏壁纸
博主头像
术业有道之编程博主等级

亦是三月纷飞雨,亦是人间惊鸿客。亦是秋霜去叶多,亦是风华正当时。

  • 累计撰写 99 篇文章
  • 累计创建 50 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

网络访问那点事儿

Administrator
2023-11-15 / 0 评论 / 0 点赞 / 144 阅读 / 6398 字

写在前面

是否经常遇到你打开一个app或者网页进不去,别人都是好的,然后有人说,你换个wifi试试、用手机移动网络再试试、重启手机再试试等等,当然还有一个比较小众的:你挂个代理试试。诸如此类并不是搪塞你,而是确有其事。

一、什么是网络

简单来说网络是一个数据传输载体。
如果我们人是数据,大马路就是传输载体。出行方式(公交车、自驾、地铁、飞机)就等于传输协议。

以下场景基于tcp/ip协议

当我们要出门时,总会考虑以下要素(缺一不可):

  • 出发点 = 本机网络ip
  • 目的地 = 最终要访问的网络ip
  • 出发时间 = 本机发起访问的时间
  • 到达时间 = 本机获得访问结果的时间(减去出发时间的差值通常叫它网络延时
  • 出行方式 = 使用的协议,如(http、tcp、udp等)
  • 出行人 =传输的数据

当理清楚了这些对应关系后就可以出发了,然而在出行的过程中非常容易发生以下问题:

  • 出行的人太多了,挤来挤去导致跟你一起出行的人走丢了或者你捡到了一个小朋友 = 网络丢包、粘包
    • 感觉网络很卡的时候
  • 交通工具未按时到达(晚点等)= 网络延迟很大(ms值高或者不稳定)
    • 感觉打游戏总是慢半拍
  • 交通工具坏了、要走的路交通管制过不去了、景区关门了 = 访问失败
    • 进不去app或者网页了

以上是正常情况,下面说说不正常的情况。

场景一:

小明要大晚上骑自行车去10公里外的同学家玩,小明老爸听别人说晚上出门不安全,于是不同意小明去,做了一些限制他去同学家的事情,比如:把小明反锁在家、自行车上锁、轮胎放气等等行为。小明最终还是去不了。

这种情况就对应本机设备或者家里路由器&光猫这一段的访问规则,阻止你访问某些网站或者ip地址。跟小明老爸讲晚上出门不安全这事,并且手把手指导他上锁、放气递工具的人,你们应该知道是谁了吧(深信服、奇安信看到了给我打钱哈,虽然粉丝不多,但是广告费还是得有啊)

场景二:

小明要大晚上骑自行车去10公里外的同学家玩,小明老爸没听人说啥,同意他去了,但是半路上出来个人,不由分说把小明给打了一顿,还把他车抢走了,最终小明还是没去成同学家。

这种情况对应sip运营商上级规则限制你访问某些网站或者ip地址,当然还有别的原因。总之,千万不要觉得你马路上走没人看见。咱们都是裸奔的,各个都很吸引眼球,只是裸奔的人太多,一时间看不过来罢了。对于有伤大雅的裸奔行为,打你一顿很合理把。

场景三:

小明要大晚上骑自行车去10公里外的同学家玩,小明老爸没听人说啥,同意他去了,一路上都很顺利心情愉悦,但是发现同学搬家了,还好小明发现了同学给他留了纸条说搬去山的那边了。可是小明发现山上有老虎,没法办原路返回了。

这种场景对应sip线路出海,访问的网站或者ip地址在大内网之外。

一定要遵纪守法,咱们只讨论第一种场景。后面2种场景,按国家政策走,该备案备案,该申请申请就行了。

二、手机是怎么访问一个地址的

我画了个草图来简单表达手机是怎么访问网络的。看不懂直接跳过把
手机访问一个网站的场景

三、鸿雁传书

对于有大佬加持的小明老爸阻挠的情况,访问不了的网络怎么办呢。这时候有个偷梁换柱的方案来了。

场景一

小明要大晚上骑自行车去10公里外的同学家玩,小明老爸说出去打断腿。小明就喊邻居来他家,实际上是帮小明传纸条给他同学,哎,就是鸿雁传书的故事,这个发散性思维要跟上,小明邻居就是鸿雁。小明老爸看他邻居进进出出,小明反正一直在家,判断为无事发生。

这就是网络代理的实现场景,小明邻居充当了小明的消息(数据)传输代理。

场景二

接场景一,小明邻居去给小明同学送信,但是他俩不认识啊,这时候小明邻居穿上小明的衣服,伪装的跟小明几乎一样,实际上在家里的小明不知道他同学伪装成自己的样子在送信。小明同学一眼就认定了这个人是小明,于是送信成功。

这种就是网络代理中的透明代理。

ok,到这了就基本成了,下面说说怎么实现一个网络代理。

四、月老工作

本质上代理是将本地设备的访问通过中间人进行传递,曲线救国。

需要有以下要求:

  • 这个中间人(小明邻居)一定是三方(本地设备=小明、公司网管=大佬加持的小明老爸、访问目标=小明同学)都觉得是可信任的。
  • 中间人(小明邻居)和本地设备(小明)要约定一个靠谱的通讯方式来,让公司网管(大佬加持的小明老爸)觉得他俩接头是很正常的事情。

技术方案

  • 小明邻居:使用nginx stream 模块,或者haproxy(这个不能udp,要注意)iptables等工具,直接配置对应的listener
  • 最基本的通讯方式:tcp、tcp+ssl、http、http+ssl、stocks、stocks+ssl等

比如我要看微博,但是公司把微博禁了。你只需要把微博的域名全部记下来,然后搞一个能够在公司网络下访问到微博的服务器,将前面记下的域名地址全部配置上转发代理(要根据后缀路由转发,静态动态都要转发)或者callback,同时将本地电脑的Hosts文件中增加前面记下来的微博域名,并且ip指向到这台服务器。做完这些之后电脑就可以正常刷微博了。
当然现在这种还不安全容易被公司网管发现,因为你的电脑和服务器现在是当着网管面在传递消息,胆子很肥,容易被打断腿,所以需要把传输的数据加密,目的只是让网管不知道你们在聊什么,加密方法也很多,比如ssl,千万别搞个很另类的加密方式,网管一看这种加密不常见就给打断腿了,浑水摸鱼才是王道。

这是最简单也最好实现的一种方式了,偷偷关注我就行了,千万别说是跟着我学的。不然我就只能删库跑路了。
这是我这么多年写的第一篇网络类的文章,审核好几遍了应该没问题吧。

个人公众号

0

评论区