Shawn's Blog

一个伪程序员的伪技术博客

0X00 什么是网桥

普通的桥就是连接本来不通的路的基础设施,网桥就是用来本来不通的网的设备。但是这里介绍的不是真正意义上的物理设备,而是在 Linux 上创建的虚拟设备。Linux 上不仅可以创建虚拟网卡,也可以创建虚拟网桥,所以说我们在 Linux 环境下学习网络知识确实是一个不错的选择(除非你有钱买一堆物理设备🤣)。

桥接器(英语:network bridge),又称网桥,一种网络设备,负责网络桥接(network bridging)。桥接器将网络的多个网段在数据链路层(OSI模型第2层)连接起来(即桥接)。 – Wikipedia

0X01 网桥有什么用

网桥的本质就是将互不连通的网卡接到一起,原则上只有这么简单的功能,具体在这个功能之上能做什么事就看我们自己了。

如果用过 Docker 的话可以看一下自己本地的网络拓扑,实际上 Docker 的容器间通信和外网访问也是用到了 bridge 的。

最直观的一种操作就是:用一台双网卡机器串在两台主机之间,用来监听甚至修改数据包。乍一看这好像是搞坏事要用的技术手段呐,的确。如果有人拿一个双网卡的小机器(比如树莓派)串在了你的光猫和路由器之间,那么连接到路由器的所有外网请求都会经过这台小机器。如果你的流量不加密,比如用http协议或者ftp协议这种,那别人是可以看到中间的所有内容的,包括登录的密码之类的。所以这也是“不要随便连接来路不明的 Wi-Fi” 一大理由。

当然也不只是做坏事,现在的好多 WAF(Web Application Firewall)都是可以支持 “透明模式部署” 的,也就是说把这种安全软件所在的机器串在你的网关和 web 服务器之间,就可以在不破坏网络拓扑的情况下做到安全防护。

如果你想用这种方式来做软路由、绕开学校的网络共享限制,或是做流量分析都是可以实现的。

阅读全文 »

0X00 前言

一年前的这个时候还在想,2020 年这个年号听起来很科幻,然而 “科幻” 这个词还是还是太瞧不起 2020 了,这一年简直是“魔幻”。

最近这几年来,过得最不舒服的应该要数今年的前两个月了,疫情刚刚爆发,武汉封城,人也不出门,就在家里当咸鱼。本来就焦虑的人们每天看到的新闻也只能让大家更加焦虑,每天看到的都是 “口罩、防护服没有了”,“武汉封城”,“急寻密切接触者”….

不过好在也有火神山雷神山这种好消息,也有后面武汉解封的振奋,还在今年的最后一天还看到了“国产疫苗批准上市,免费接种”这种令人愉悦的消息。如果要真是像🇺🇸️那么搞,真不知道还有没有命在这儿写 2020 年度总结了😵

0X01 2020 年度计划

时间管理.png

  • ❗️ 写 30 篇博客完成率:63%
  • ❕️ 欣赏 50 部电影完成率:82%
  • ✅️ 坚持 5 个小习惯完成率:100%
  • ✅️ 阅读 20 本书完成率:100%
  • ✅️ 了解 4 个新领域完成率:100%
  • ✅️ 提升 5 个专业技能点完成率:100%
  • ✅️ 减重 15 斤到 150 斤 完成率:100%
  • ✅️ 换一份新工作完成率:100%

其实总结下来看的话,这个年度计划表我还算是完成度比较高的了。疫情期间所有计划都是完全停止的,一点进展没有,甚至“减重 15 斤以达到 150 斤”这事儿难度还加大了,毕竟成天在家里坐着,想吃什么还自己做来吃,不胖才怪😅。虽然后面想起来疫情其实并没有直接影响到我计划表里的任何一项,但是当时整个人都是晕糊糊的,所以那两个月也就这么晕糊糊得过去了。

阅读全文 »

0X00 前言

假设有这么一个银行(肯定要假设,如果真有这么蠢的话这银行也早就倒闭了)的网上银行站点,他提供了一套的 API,通过GET https://api.xxbank.com/transfer?amount=3000&to=shawn可以向 shawn 转账 3000 块。虽然用 GET 来修改数据是挺蠢的但是好像也没什么大问题是吧。

好的,现在你正在这个银行的网站上沉迷于数自己余额的零,这时候我给你发来了一个链接。你开开心心的看完了发给你的页面,然后关掉了它,回过头来发现自己账户少了 3000 块钱!!!怎么回事呢?

其实是我发给你的链接有“毒”,页面里所有的图都是<img src="https://xxx.xxx.xxx/xxx.jpg"/>,但是有一张图裂了你没发现,裂了的那张图是<img src="https://api.xxbank.com/transfer?amount=3000&to=shawn" />。这里有两个问题需要注意,第一个就是这个 url 并不是图片,所以图片必然会裂掉;第二个就严重了:因为是 img 标签,所以浏览器会去 GET 回来,这一 GET 没拿到图不要紧,却发起了我预谋的转账请求,你的钱就没得喽。

当然如果你多刷新几次,每次刷新就是 3000 块钱,嘿嘿嘿

阅读全文 »

0X00 前言

这篇博文概述了一次查询从一条 SQL 到拿到数据的过程,是掌握了基础的 CRUD 后想要进阶 MySQL 的一条必经路(当然我是说这个只知识是必经路,并不是我这篇文章)。如果有兴趣的话就继续看下去吧~

我们首先看一下下面这张图,其实并不复杂。我们很多人都已经知道了其中的一部分,比如缓存、存储引擎、数据这些。

图源自:高性能 MySQL

我们先来看一下粗略的流程

  1. 首先客户端发送一条查询给服务器;
  2. 服务器检查缓存,如果命中缓存则直接返回;否则继续执行;
  3. 服务器解析 SQL、预处理、由优化器生成执行计划;
  4. MySQL 根据执行计划,调用存储引擎 API 执行查询;
  5. 将结果返回给客户端;

虽然每一条都比上面描述的、比我们想象的要复杂得多。但是因为这里只是基础篇,所以我们只是了解一下基础流程和原理就好,如果需要深入了解某部分的细节的话,可以查阅更详细更深层的资料。

阅读全文 »

0X00 概述

我们经常想要简单测试一下某个页面的性能,或者 REST API 的性能,用 postman 这种程序虽然可以很快的模拟请求出来但是并不方便发送大量请求;自己写脚本虽然自定义程度很高,但是写起来总归还是有点麻烦,而且并不能很方便得输出我们需要的一些常用数据。那这种时候一般就需要找些专业的工具来做这种专业的事情了。下面两个就是平时比较常用的性能测试工具,可以针对某个/某些 url 做性能测试,并且输出相对完整的报告。

软件具体怎么装就自己想想办法吧,毕竟 Linux/macOS/windows 之间都不太一样,而且 Linux 上还有 apt/dnf/pacman 巴拉巴拉一堆包管理器,用法都不一样,没必要一个个找出来贴上。需要了解 API 性能的人肯定能很轻松装上这些工具了~

阅读全文 »
0%