家用无线网络中的安全设置

无线网络,又称Wi-Fi,是一项日常生活中非常普及的项目,手机、笔记本、甚至电视机都可以连接支持无线网络了。在热闹的地方搜索一下,可以找到十几个可用的无线网络。在普及的同时,设置无线网络的时候,安全问题也越发重要。

先说说会有什么样的安全问题。假设家中的设备都连上同一个无线网络(这是最常见的情况),也就是设备都在同一个子网内,并且都互相信任对方(原因很明显)。这时候如果有个坏人偷偷摸摸连上了这个网络,然后向其它的设备发送一些有欺骗性质的信息,这些信息可以(理论上)用于截获网络通讯(如监听银行帐号和密码)、身份盗用(如查看并偷取重要文件)等……

那么要怎样确保无线网络的安全性呢?

在此之前,先简单介绍一下相关术语:

SSID:Service set identification,也就是一个无线网络的名称,《The Big Bang Theory》中Sheldon一直使用类似“Penny请停止盗用我的WiFi”这样的名称。SSID作为客户端连接无线路由器的代号,在WiFi的有效区域内需要尽量保持唯一,有冲突也行,但这样会降低WiFi连接的效率。

认证方式:常见的有“无(即不管什么设备都能连上路由器)”、WEP、WPA、WPA2,其中WPA2有家用(Personal)和商用(Enterprise)两种。WPA2最为安全,当然也需要消耗很多能量。

加密方式:通常是AES和TKIP,两者没有太大的差别。

MAC地址过滤:经过设置,路由器只允许那些具有特定MAC地址的设备连上路由器。MAC地址是每个网络设备的唯一识别码,在网络通信中的作用相当于身份证。

好啦,说了这么多,现在来看看有哪些方式可以提高安全性:

0、关闭无线网络,这样显然是万无一失了,但同时也失去了无线的灵活性。在此不作讨论。

1、隐藏SSID。多数路由器都支持不对外广播SSID,这样一来,其它设备就无法轻易获得SSID,也就无法连上路由器。这个方法会增加设备搜寻路由器所需的时间,但不会增加路由器本身的负载,是一个性价比很高的方式。但这种方法对于专业人士来说一点安全性也没有……

2、设置WPA2认证,如上所述,这是最安全的方式,但这需要消耗路由器额外的资源,早期部分路由器无法正常支持WPA2,即在大流量的时候会造成路由器死机。现在的路由器基本不会有这个问题。

3、设置MAC地址过滤,只允许家里现有的设置连接。这种方式比WPA2还要安全,只是有客人来的时候,需要重新设置路由器,添加新的MAC地址,比较麻烦。

上述三种方式可以单独使用,也可以混合使用。如果路由器的性能足够好,仅设置2即可;否则,懒的话可以只用1,比如我前段时间就一直在用1,如果想要安全性就只能用3了。

什么是 DNS?

这个问题要从 IP 地址说起。IP 地址相关于网络设备的“门牌号”,每个在连上互联网的设备,都至少有一个 IP 地址。IP 地址的形式有两种,形如 104.155.216.90(IPv4)或者 2a00:1450:4002:804::1003(IPv6)。每个网络设备,包括服务器(网站)、终端用户,都有一个独立的 IP 地址(在使用的时候独立,使用完之后可能会被回收并复用)。

这样就产生了一个问题,IP 地址非常难记,显然 104.155.216.90 没有"leonax.net"好记。于是开发人员就发明了一种把 IP 地址转换成域名的服务。域名就是类似 leonax.net 这样的字符串,俗称网址。这个转换的服务被称为 DNS,全称是 Domain Name System。

DNS 的工作原因大致是这样的:如果终端计算机需要访问 leonax.net,它会先向管理 .net 域名的根 DNS 服务器发向请求,得到负责管理 leonax.net 的 DNS 服务器(假设是 A),然后再发送请求给 A,询问 leonax.net 的 IP 地址,最终得到结果为 104.155.216.90。然后终端计算机的浏览器就可以访问到http://leonax.net了。

根 DNS 服务器在全球一共有 13 个(以及一些镜像),显然这 13 个服务器没有能力响应来世界各地的所有 DNS 请求,于是就有了各种 DNS 缓存技术。通常终端计算机只需连接到最近的一台 DNS 缓存服务器上,如果那台服务器刚好有 leonax.net 的数据,就可以直接告诉终端计算机,而不需要麻烦根服务器。这样就大大地平衡了各个 DNS 服务器之间的负载,也减少了终端设备的等待时间。比如 Google 就开设了两个 DNS 缓存服务器,IP 地址分别为 8.8.8.8 和 8.8.4.4。

至于 DNS 的具体技术细节和实现,请自行 Google……

iPhone上的信号标识

前几天有人问起来iPhone的连接状态是一个o,表示什么意思。如下:

图片来自国外网站,ROGERS是一家电信运营商,旁边的o代表当前已连上GPRS或者更老的网络。同样的位置还可能有其它的标识:

表示当前已连上EDGE网络。

表示当前已连上3G网络。iPhone支持的3G标准有WCDMA和CDMA2000,在中国分别有中国联通和中国电信运营。另外我还见过iPhone显示4G的标识,不过iPhone 4S本身并不支持LTE,猜测Apple把HSPA+伪装成4G。

另外还有Wi-Fi:

当然还有飞行模式,即不连接任何的无线网络:

从通信速度来说:Wi-Fi > 3G > EDGE > GRPS,iPhone也会根据这个优先级来连接无线网络。想知道这些个名词具体的含义,可以看这里

无线通信中那些奇怪的术语

手机的性能越来越强,速度越来越快,随之而来的是各种新鲜的技术,奇怪的术语,搞得大家晕头转向。下面我来尝试介绍一下:

蜂窝网络相关:

GSM (全球移动通信系统,Global System for Mobile communication):最初的2G通信协议(G表示代,2G即第二代),由芬兰的Radiolinja公司开发,于1991年公开并推广向全世界,至今仍有部分国家和地区在使用这一协议。传输速率14.4Kb/s。

GPRS(通用分组无线服务,General Packet Radio Service):在GSM的基础上开发的数据通信协议,通常被认为是2.5G,理论通信速率可以达到下载57.6Kb/s和上传28.8Kb/s。基于GPRS, 有WAP(Wireless Application Protocol)和MMS (Multimedia Messaging Service,彩信)等应用,使手机用户获得了更丰富的体验。

CDMA2000 1x:CDMA全称是Code Division Multiple Access,即码分多址,1x表示使用一对1.25MHz无线电信道的CDMA2000无线技术。CDMA2000 1x和GPRS同属2.5G范畴,上传和下载速率可同时达到153.6Kb/s。CDMA2000系列协议主要由高通公司(Qualcomm)领导并开发。

EDGE(Enhanced Data rates for GSM Evolution):GRPS的进化版,通常称为2.75G,传输速率可达236.8Kb/s。

CDMA2000 1xEV-DO:CDMA2000 1x的进化版,标志着无线通信进入3G时代,最初版本(Rev. 0)的速率达到2.45Mb/s下载和153.6Kb/s上传,后来慢慢发展成(Rev. B)4.9Mb/s下载和1.8Mb/s上传。2008年的时候,高通宣布停止CDMA2000的开发,后续的4G计划和WCDMA一起并入LTE。

WCDMA,即Wide CDMA,据说是一些公司为了避开高通的专利,而基于GSM开发的CDMA协议,虽然名字中都有CDMA,但WCDMA和CDMA2000并不兼容。WCDMA目前已成全世界部署最广泛的3G协议。其速率为384Kb/s。

TDS-CDMA(时分-同步码分多址,Time Division - Synchronous CDMA):由西门子和中国大唐共同开发的3G协议,起步稍晚,但后来也和CDMA2000、WCDMA一起,成为了国际公认的三大3G标准之一。

HSDPA/HSUPA(High-Speed Downlink/Uplink Packet Access,高速下行/上行分组接入):基于WCDMA的3.5G协议,速率达到了13.98Mb/s下载和5.76Mb/s上传。

HSPA+:WCDMA的再次升级,速率达到了42Mb/s下载和11.5Mb/s上传。

LTE(Long Term Evolution,长期演进技术):第四代(4G)无线通信技术,理论速率将会超过100Mb/s下载和50Mb/s上传。

短距离无线通信技术相关:

802.11系列协议:由IEEE(电气电子工程师学会)提出,俗称Wi-Fi(Wireless Fidelity)。常见的版本有802.11b,速率11Mb/s;802.11g,速率54Mb/s;802.11n,速率600Mb/s。目前最新最普及的就是802.11n协议了,而正在开发中,即将问世的协议802.11ac,速率可达6.93Gb/s。Wi-Fi的传输距离大约70米,有墙隔挡的话,距离会锐减。而上述的HSDPA技术,其传输距离可达到200公里(理论值)。

蓝牙(Bluetooth):蓝牙的传输距离大概只有10米,传输速率也比Wi-Fi要低,初代1Mb/s,第三代是24Mb/s。它的优点是省电,适用于电量不高并且传输量不大的设备,比如耳机。相比起蜂窝网络和Wi-Fi,蓝牙在民用领域的应用并不广泛。

NFC(Near Field Communication,近场通信技术):由RFID(Radio-frequency identification)扩展出来的一种短距离通信方式。RFID是一块嵌入式的芯片,可以保存数据并加密,而NFC则是读写芯片数据的方式。NFC的通信距离极短,大概10厘米(?)。距离短的好处是不容易被监听到,从而减化了通信过程中的认证流程,加快通信速度。NFC在手机上的应用主要是手机支付,可以替代信用卡,直接用手机和POS接触并完全技术。另外据说中国部分城市的交通卡使用了RFID,可以在支持NFC的手机上读出余额之类的数据。用手机直接替代交通卡还在进一步尝试之中……

 

以上差不多是日常生活中能见到的无线通信技术,希望对你有帮助。

PS,我不是通信领域的专业人士,如果上述内容与实际有出入,请指正。

XmlHttpRequest学习笔记 (8) ReadyState详解

上一篇,readyState的值有5种,具体说明如下:

0: XmlHttpRequest对象刚被创建出来,还未初始化,即open方法没有被调用过。此时,除了open和onreadystatechange之外,访问其它任何的方法或属性,都是无效的。原因显而易见。

1: HTTP请求已被创建,但还没有发送出去,即open已被调用过。这时候,访问xhr的属性,比如status,也是无效的,因为HTTP连接还没有建立。但是可以调用abort把HTTP请求重置,即回到0状态。

2: HTTP请求已发送,并且服务器已返回HTTP报头。此时,可以通过getResponseHeader来查看所需的HTTP报头

3: 收到服务器响应的内容。对于readyState = 3,readystatechange的回调方法可能会被调用多次。因为服务器可能会返回大量数据,使得客户端一次收不完。至于调用的频率,没有定数。由于一些限制,虽然已经得到了一部分的数据,但是responseText、responseStream和responseXML这些属性,依然是不能访问的。

4: HTTP通讯结束。此时所有的属性都可以访问了。如果所请求的数据不是XML格式的,responseXML将不会被初始化。此时调用abort也可以重置状态,但是没什么意义。

iPhone中3G和WiFi的优先级

由于套餐所提供的流量有限,而WiFi几乎是免费的,我不得不研究了一下iPhone倒底是怎么样选择网络的。什么时候会使用WiFi,什么时候会使用3G。

目前还没找到官方的说明,不过大概的规则是这样的:

  1. 当只有3G连接,或只有WiFi的时候,iPhone(显然)会选择可用的那个。
  2. 当两者都可用的时候,iPhone会选择速度快的那个。通常来说WiFi的速度(至少54Mb,802.11n)要比3G(最多14Mb下行/5.76Mb上行,HSPA)快,所以iPhone会选择WiFi。
  3. 当iPhone进入睡眠状态(即黑屏)时:
    1. 如果没有在充电,iPhone会将WiFi连接断开,因为相对来说WiFi比较耗电,这时候iPhone就只会连接3G了;
    2. 否则iPhone会继续使用WiFi。

于是,通常情况下,iPhone都会帮我省钱,除非我不小心开了定时同步邮件,或者后台音乐播放之类黑屏之后仍然在下载的应用。

放心了……

在 Amazon EC2 上安装 VPN 服务

Amazon EC2 提供了一年免费试用,Micro Instance,配置是 1G 内存,共享 CPU,和每月 15G 的流量。搭一个 VPN 服务器绰绰有余了。操作系统我选的是 Amazon Linux,感觉 Amazon 的定制版更高效,尽管它可能没有 Ubuntu 那么强大。

安装过程如下:

1. 安装ppp

yum install ppp

2. 下载并安装pptpd

3. 添加DNS服务器

打开/etc/ppp/options.pptpd 文件并添加入如下内容:

ms-dns 8.8.8.8
ms-dns 8.8.4.4

以上2个是Google提供的免费DNS

4. 添加 VPN 帐号

/etc/ppp/chap-secrets文件中添加VPN用户,格式为“用户名 服务器 密码 IP地址”:

vpnuser pptpd myVPN$99 *

5. 打开IP转发(IP Forward)功能

/etc/sysctl.conf 文件中修改:

net.ipv4.ip_forward = 1

6. 保存设置

sysctl -p

7. 在 IP Tables 中开启 IP 伪装(IP Masquerade)

如果你需要这个设置在重启之后依然有效,则需要把这一行添加到 /etc/rc.local 的末尾。

8. 把 pptpd 设置成自动运行的

9. 最后别忘记在EC2的管理界面(Management Console)中,打开TCP的1723端口,这是pptpd的默认连接端口。

10. 大功告成。在Windows中添加一个PPTP类型的VPN玩玩吧,如果连不上的话,可以尝试重启一下。