

























终于到了我最喜欢的做手工环节了🐷,想当年不提好汉勇,上班第一天做的事情就是:组装电脑(从一堆板卡开始)以及夹网线。不过,2402 年了,大家都是无线网络 WIFI 接入了,谁还夹网线呐?
WIFI 作为接入网络的硬件方式,我们最常见的就是“无线网络名字”和“密码”,如果想要蹭别人的无线网络,就得猜到密码。不过,这个“无线网络名字”和“密码”只是用来防止蹭网的吗?我们还有其他更好的防止蹭网的方式吗?下面介绍以下知识:
WIFI 设置和 MAC 地址
想要防止别人蹭网,最根本的方法就是设置 MAC 地址白名单功能。MAC 的意思是 Media Access Control Address 的意思,也叫物理地址。每个网卡都有一个固定的 MAC 地址,虽然很多网卡现在已经集成到电脑、手机里,你看不见一个“卡”,但是它还是存在的,所以每个能接入 wifi 的设备,肯定有一个无线网卡,同时也会有一个 MAC 地址。这个地址是由生产公司通过全球 IEEE 组织分配得到,然后写在网卡硬件上的,可以说是全球唯一的一个网卡身份证号。
在 wifi 网络这层,并不知道 IP 地址这类东西,它们只知道 MAC 地址,并且对这个地址进行信号传输。Mac 地址长度是 48 位(6个字节),比 IPv4 多 2 个字节,也就是可以多 6 万多倍。不过一般来说 Mac 地址冲突的概率很少,因为两个相同地址的网卡,正好出现在一个局域网里面的可能性非常的小。MAC 地址只用于同一个交换机内部,或者同一个 wifi 网络,这类小范围的网络之间的通信。如果要发数据去更远的地方,一般都会把数据发到路由器上,让路由器去通过更上层的 IP 地址去定位发送了。所以 MAC 地址比较像一栋宿舍楼里面,对于每个房间的“自编号”,它并不关系在邮政系统里面的地址位置,因为宿舍都有传达室,传达室大爷(交换机)知道这些“自编号”对应的房间就可以了。从这个角度看,MAC 的思想其实和 IPv4 的局域网 IP 加上 NAT 功能挺类似的。
所以我们可以在 WIFI 路由器(现在用的应该叫 Wifi AP 能力,AccessPoint)上去配置,只允许已经登记的 Mac 的设备接入我的 Wifi。
WINDOWS 上可以通过“设置-网络-属性”看到自己的 MAC 地址,然后填到配置表里面去。
ARP、以太网,以及混杂模式
现在,我们思考一个问题:我们可以给电脑和手机等设备,都设置 IP 地址(也有用 DHCP 自动获取 IP 地址的),但是,网络上的设备,是如何互相通知对方自己的 IP 地址的呢?特别是,如果在一个局域网中,你如果设置了一个 IP 地址,和另外一个地址冲突了,操作系统会立刻提示。这个过程是怎样发生的呢?
这里我们就需要了解一下 ARP(Address Resolution Protocol) 这个功能了。这个功能就是在一个局域网中,设置和管理 IP 地址的协议。windows 也带了一个同名叫 arp 的命令行工具。我们可以用 cmd.exe 运行一下这个工具看看:
arp -a
他返回了一个列表,里面对应的 IP 地址和 MAC 地址:
里面出现了路由器的 IP 192.168.1.1 以及其他一些 IP,这些都是记录在这台电脑上的 IP 对应 MAC 的列表。当我们 ping 过另外一个 IP 192.168.1.27 (我的另外一台电脑)之后,我们可以看到 arp 的列表里面就有了 192.168.1.27 相关新的信息:
说明在我们发起 TCP/IP 请求的时候,MAC 和 IP 的对应关系,自动的以一种机制被建立起来了,有了这种关系,我们的数据包才能真正的从一台硬件电脑传输到另外一个硬件电脑。但是这一切又是如何发生的呢?
我们用的局域网,现在被称为“以太网” Ethernet,这个网络技术,是 Xerox公司创建的,别看它是个打印机公司,它可牛逼了,GUI 图形用户界面也是它们家发明的。以太网的工作原理是:CSMA/CD 载波侦听多路访问/碰撞检测。这段字看起来很复杂,但实际上道理非常简单,我举个现实的例子来模拟一下这个过程。假设有几个盲人,坐着一个房间里面需要沟通。由于到底有几个人不知道,要讨论什么也不知道,为了避免大家一起说话听不清楚,于是他们约好了一套说话的规矩:
任何人说话之前,要先听一下有没有人在说话。如果有人在说话了,就闭嘴随机等一段时间再说。
任何人说话的时候,也要听着有没有人说话,因为有可能另外一个人走神了,和你一起开始说话了。如果发生这种情况,也闭嘴随机等一段时间再重新说刚刚那句话。
以上情况都没有,就一个人把话说完。
上面这个过程,其实非常简答,也是以太网的工作原理。如果发生了上面的情况1和2,就叫做产生了“冲突”,集线器会专门有一个叫 COL 的指示灯,一旦发生这种情况,就会亮一下。
对于我们常见的双绞线局域网(以前还有同轴线的)来说,如果使用最基本的集线器设备(看起来和交换机一模一样),你可以大概认为,所有的设备,都是被串联到一起的一组装饰灯。
当然,现在的交换机,内部有一些软件,可以减少上面的这种冲突,所以会比集线器贵一点,而且网络的带宽也好很多。
如果有一个设备发送数据,所有的设备都会收到,就好想开关一打开,所有的灯都点亮了一样。数据的 0 和 1,就是在网线上电压的低和高。因此以太网的所有数据都是广播的。而我们从 A 设备发到 B 设备的数据,只不过在发送的内容里面,也带上了 B 的 MAC 地址。就好像我们在房间里说话,会带上:那个谁XXXX,你听好了……。其他设备收到了不是发给自己的数据,就会不予处理。因此,如果要在局域网里面,问一下 IP 地址到 MAC 的关系,只要发一个广播,有设备应对就好了,同样,如果 IP 地址有冲突,也就是一个 IP 有两个 MAC 地址的设备发广播自己是,就会大家都知道了。
因此也有一种黑客的方法(或者叫安全漏洞),叫做 ARP 欺诈:只要有办法物理接入了局域网,我就可以先想办法把原来 IP 的设备弄挂掉,然后自己通过 ARP 协议广播自己的 MAC 代表原来的 IP。对于默认网关的攻击,是最有价值的,马上整个局域网想要往外发送消息,都会先发给这儿黑客的设备!这样黑客就能篡改和伪造各种请求。这么开来,如果蹭WIFI的用户,他们的设备有 ARP 攻击木马,还是挺危险的;同样,蹭别人 WIFI 的用户,可能那个网的网关,也是一个窃取信息的设备哦。很多 WIFI 不设密码,搞不好就是引诱你去用呢!一句话,不要蹭网,不要被蹭。
既然是广播,所以局域网里的任何一个设备,也是可以收到所有其他设备的进、出网卡的数据。我们的网卡,都有一个叫做“混杂模式”,设置为这个模式后,不管网络上的数据包接收地址是不是自己的,它都会收进来。以前一些网络管理和抓包软件就会利用这个功能,同样,如果你的电脑中了木马,十有八九也会把网卡设置为混杂模式,试图窃取同一个局域网的其他设备的数据。因此网吧为什么很容易丢账号,因为有很多人在网吧下载使用外挂。很多外挂本身就是一个木马类的泄密软件。一句话,不要用外挂。
至于混杂模式抓包,由于需要下载安装一些软件,然后还要和电脑的安全系统斗争一下,所以就不放在这个文章里面了,如果有兴趣留言给我,看是否专门开一篇。
对于有线网络来说,现在最常见的就是双绞线。之所以要一对对线绞在一起,是因为防止干扰,绞的越密,抗干扰能力越强,当然材料就用的越多。这就是所谓 3 类线、5 类线、超 5 类的差别。
这个抗干扰的原理也很简单:我们知道干扰的原因,是因为电磁场的变动,会导致铜线里面产生电流,这个电流和原先要传输信号的电流重叠,就会造成错误。而这种干扰,有一部分还是网络信号自己造成的:一根线上的电流,造成了磁场,这个磁场又产生了干扰电流。知道了原因,对抗的手段也可以设计了:
让收、发数据两根线绞在一起,互相抵消产生的电磁场。
让多根没有数据的双绞线,形成一个电磁屏蔽网络,减少外界的电磁干扰。
具体抗干扰还有很多细节,入门文章就不详细说了。
总结
所谓网络技术,就是围绕着一系列网络协议建立起来的软件功能。而所谓网络协议,则是指导网络上不同的软件应该如何工作的一套方法。如果有的软件不遵守这套方法,网络上与之通信的其他软件有可能就没法正常工作了。
为了让大量不同功能的软件,能工作在大量不同的底层硬件网络上,人们把网络数据包一层层的添加上额外的内容,这样每一个不同的功能模块,都能根据对应的网络数据部分执行自己的能力。这也就是所谓“协议栈”:不同的功能一层层叠加起来,在一个数据包中完全体现。
互联网的协议栈,现在分担这些不同部分的功能的软件基本已经确定:
网卡驱动程序负责“数据链路”和“物理”的功能,譬如双绞线网络和 WIFI 网络的实现
操作系统的 TCP/IP 模块,负责逻辑意义上的“主机”之间的互联和传输,可以通过操作不同硬件网卡的驱动程序,实现不同物理网络之间的数据互通。并且提供程序接口给开发者使用网络能力
应用程序通过调用操作系统的网络 API,一般叫做 socket 库(袜子库,哈哈),来实现各种具体的网络功能。常见的应用程序可以使用的“袜子”有两种,一种叫 TCP,另外一种叫 UDP。基于这些库,应用程序之间又协商出诸如 HTTP、POP(邮件)、SSH(加密登录)等“应用层”协议。游戏服务器和客户端之间,也会使用 TCP 或者 UDP 进行通信,设计这类协议就是我最常见的工作之一。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。