HTTP vs HTTPS

今天看到一条新闻,说是银联提醒用户注意网站的https前缀

在识别网络诈骗方面,银联特别提醒任何网购退款均无需提供银行卡密码和CVN2。任何索要短信验证码的行为都是诈骗。在登录网址时,警惕所谓的“安全中心”“认证中心”,不要轻信“低价”购物网站,并警惕通过邮件、短信、聊天工具发来的所谓“安全中心”“认证中心”“担保平台”等钓鱼网站链接。支付时留意“https”前缀。完成网购订单进入支付页面时,网址前缀会变成“https”,表示数据传输加密;若支付页面网址前缀仍是“http”,请提高警惕。

HTTPS是什么,它和我们常用的HTTP有什么不同呢?

传统的HTTP通讯是不安全的,因为在浏览器和服务器之间传输的数据,有可能被中间节点截获。互联网的架构决定了网络通讯都不是点对点直接传输的,一个数据包从客户端发送到服务器的过程中,当中会经过多个节点。通俗点说,数据包会先传到家里的路由器,路由器再发送给它上一级的(可能是电信的)路由器,这么一级一级地传出去,最终传到了服务器端。这个过程中,每一个路由器都有机会截获到传输的内容。如果这些内容中包含了密码等重要信息,就有可能会被坏人所利用。

HTTPS中的S表示安全(Secure),它代表了浏览器和服务器之间的通讯是加密的,不可被第三方获取。由HTTPS协议保证,除非得到服务器端的密钥,否则(几乎)无法破解出通讯的内容。为什么说几乎?因为暴力破解在理论上是有可能的,但是因为现在的计算机性能的限制,暴力破解需要上亿年的时间才能成功,所以说,暂时它是安全的。

那么怎样的HTTPS才算是安全的?以Chrome为例,正常的HTTPS连接会显示为绿色,其它的浏览器里大同小异。如下:

这两种都是正常的,前一种是个人的HTTPS,后一种是企业的。如果浏览器认为HTTPS有问题,它会显示成红色或者灰色,或者弹出对话框来提醒用户。

经过加密之后,基本可以认为是所有数据都是安全的。具体来说,以下这些数据被加密了:

  • URL中的路径、参数;
  • 发送(Post)的数据;
  • 接收的整个页面的数据;

唯一没有被加密的部份是URL中的域名部分。以一个URL为例:

https://www.google.com/search?q=leonax&sourceid=chrome&ie=UTF-8

其中只有www.google.com这一段数据没有加密,其余的/search?....外加网页内容,都是经过加密的。

上文提到的过,本站也支持HTTPS,点击这里试用一下,除了速度稍慢(安全的提升总是与性能的牺牲相关),其它并没有什么与HTTP不同的地方。

HDD vs SSD

以前在选购硬盘的时候,注重的参数大概只有容量(320G、500G或1T之类)和转速(5400rpm或7200rpm),而现在又多了一个名词:SSD(固态硬盘)。相比之下,传统的硬盘可被称机械硬盘(HDD)。

机械硬盘的工作原理和光盘类似,硬盘内部的盘片高速旋转,有一个磁头在它表面读取(或写入)数据;而固态硬盘更像是U盘(闪存),内部没有转动的部件,读取靠电路实现,于是固态硬盘没有转速(rpm)这个参数。

两种类型的硬盘各有千秋,尽管很多厂商都看好SSD的前景,但也有不看好的。这里有一些粗略的比较,希望对你选购硬盘有帮助:

  • 价格:SSD技术仍在发展中,而HDD已经相当成熟了,所以SSD的价格远高于HDD。一块250G、2.5寸的笔记本HDD售价大概是400元,同样的价格只能买一个30G的SSD。
  • 容量:目前发售的SSD通常在512G以下,HDD的容量可能2T或3T。
  • 重量:相对来说SSD轻一点。
  • 可靠性:由于HDD中有活动部件,在使用过程中应尽量避免倾斜或震动,而SSD没有这种担忧。
  • 读写速度:SSD的读写速度是HDD的10倍以上,且SSD不受磁盘碎片的影响。
  • 寿命:HDD中每个存储单元的读写次数理论上没有限制,SSD中每个单元的读写次数上限大概是2百万次,在SSD的使用中应该尽量避免频繁地读写某一块特定区域,比如虚拟内存文件之类的。Windows 7中已经对SSD提供了比较好的支持

如果你既想享受SSD的速度,又只想花费HDD的价格的话,有一个折衷的方案——双硬盘。一些OEM厂商提供了双硬盘的机型,一个较小的SSD用来装系统和应用程序,一个较大的HDD用来存放数据,这样既加快了系统的运行速度,又不用花太多钱。

IPv4 vs IPv6

这几天关于IPv4地址耗尽的报道几乎天天有啊……这东西倒底和我们的生活有什么关系呢?

IPv4是指IP(Internet Protocol)协议第4版,IPv6就是第6版了(至于第5版是什么,有兴趣的同学可以自己查查)。IP协议是网络通信中的一个基础协议。每一个连上网(无论是局域网还是英特网)的设备,都会有一个IP地址,作用和电话号码一样。在浏览网站(如http://leonax.net)的时候,浏览器会先得到这个网站的IP地址,如54.92.46.8,向这个地址来发送请求,然后网站向你的电脑所使用的IP发回网页数据。想像一下你打电话订餐的流程,差不多。

IPv4中的地址格式由4个0到255的整数组成(形如x.x.x.x),就一共可能有256的4次方(即4294967296)种变化。尽管其中有一些特殊用途的地址,比如常见的127.0.0.1和192.168.0.1,英特网中可用的IPv4地址数量在42亿以上。听上去数字蛮吓人的,但仔细想想其实不多啦,全世界人口已经超过60亿了,每人一台设备,地址就分配不过来了……

于是IPv6就产生了,它的地址格式由8个0到65535的整数组成(形如x:x:x:x:x:x:x:x),数量是IPv4地址数量的4次方,具体多少不高兴算了,反正IPv6号称可以给地球上每一粒沙子分配一个地址。取之不尽,用之不竭啊……

既然这样,还用IPv4干啥呀,大家一起上v6不就得了。IPv6在设计的时候并没有考虑兼容性的问题,也就是说IPv4并不能平滑地迁移到IPv6,迁移过程中需要电信运营商、网站等各种机构开展大量的工作,而他们却从中得不到什么好处,于是大家就都拖着,耗到IPv4用完没办法了,才开始着手解决。

那在迁移过程中,家庭用户需要做些什么呢?简单来说:什么都不用做。个人电脑(PC)上,主流的操作系统(Windows / Mac / Linux)都已支持IPv6;而手机所用的3G协议似乎不受IPv6的影响(3G协议不熟,请高手指点)。咱们就坐等电信(或者长宽啥的)的客服上门升级IPv6吧……

*温习一下:IP协议处于OSI 7层协议中的第3层网络层,OSI 7层协议从下到上从别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

多核 vs 超线程

在Windows的任务管理器中会显示CPU的信息(如下),右侧的几个矩形框表示有多少个CPU,从下图来看,似乎我的机器上有4个CPU,但实际上呢?

实际上我的机器上可能有4个独立的CPU,或者有2个双核的CPU,或者有一个2双核带有超线程功能的CPU,……可能性有很多,性能差距也会很大。

为什么这么说呢?首先来看一下多核的概念。简单来说一个多核的CPU就相当于多个单核的CPU,比方说双核的Intel T7300,它的性能大约相当于2个单核同规格的CPU,(可能会差一点点,比如二级缓存是共享的)。在仅支持单CPU的主板上(大部分个人电脑的主板都这样),使用多核CPU可以明显提升运算速度。

相对于多核,超线程是指在一个CPU的核心上有多个线程,一般是两个。不支持超线程的CPU在同一时刻只会运行一条指令,这样就产生了一个问题,这条指令可能只用到了CPU 50%的电路,还有50%是空闲着的,于是计算资源就浪费了。于是Intel就提出了超线程技术,如果相临的两条指令可以同时执行而互不影响,那CPU会优化这个过程,以达到提升计算速度的效果,但实际使用过程中效果并不明显。

所以,即使任务管理器中显示有两个方框,也并不代表所用的是双核的CPU,比如Atom N450,而大多数Atom芯片都是单核双线程的。买电脑之前还是先查一下资料为好,不要被商家忽悠了。

ARM vs x86

CPU(中央处理器)是冯·诺依曼体系的五大部件之一。说到CPU,就一定会提到著名的386架构,又称80386或者i386。尽管它在20年前就已经被淘汰了,但它的设计一直影响至今。386及其后续产品被统称为x86,是现在主流的32位CPU架构之一,后来的AMD64架构是从x86中扩展出来的,也被称为x86-64架构。现在主流的Intel Core 2、i3/i5/7、Atom、Sandy Bridge、AMD Phenom都是基于x86架构设计的,所以如果你正在使用台式机或者笔记本电脑的话,有99%的可能性,你正在使用x86架构的CPU。

那ARM又是什么呢?ARM是另外一种CPU的架构,它是由一个同名的公司设计的。ARM公司是一种很奇特的公司,它只做ARM芯片的设计,但不生产,其它公司需要购买ARM的授权才可以生产ARM芯片。这样做的好处之一是ARM公司可以专注于芯片设计,而不用在建造生产线上投入很多精力;但也有坏处,就是公司之间的互相扯皮会影响ARM的推广。ARM现在主要流行于移动设备中,比如手机。很多手机都使用Cortex-A8芯片,如iPhone 4、Motorola Droid、Palm Pre、三星i9000、Nokia N900等。

那ARM和x86有什么不同呢?从使用它们的设备可以看出,x86主要被用于个人电脑,而ARM被用于手机。这也体现出它们的特性:相对来说x86芯片计算能力更强,效率更高;但ARM芯片比较省电,在同样计算量的情况下,待机时间要比x86芯片更长。这两种芯片的应用领域不同,它们之间并没有很好的可比性,我们只需要了解这些名词,买东西的时候不要被不良商家给骗了就行了……

高清 vs 1080p

现在显卡性能好了,网速也快了,下载的影片的画质也逐渐变好了,于是就出现了“高清”这个词。无论是在线播放的视频,还是下载的电影,都开始套用“高清”的概念,那到底什么高清呢?

一般来说,高清电影是指分辨率达到720p或者1080p的影片,其中1080p又被称为全高清。720p即分辨率1280*720,1080p则是1920*1080。也就是说,如果你的显示器分辨率是1920*1080,某部电影播放的时候直接撑满整个屏幕,(而不需要放大),那这部电影就是1080p的。720p同理。通常一部1080p的影片文件大小要超过8GB(H.264格式),即视频比特率在1MB/s(注意是大B)左右。720p的影片至少要2GB。偏小的文件就会不算高清了……

而现在一些在线视频网站很不厚道地拿高清来做噱头,用一些画质相对较好的片子来冒充高清,其实720p影片的比特率都要超过256KB/s,2M的ADSL即使全速下载,也会有延迟。所以想看高清的同学,还是下载了再看吧……

顺便附一张各种缩略语和尺寸的对照表,一目了然:

Byte vs bit

字节(Byte)位(bit)的关系其实不复杂,1字节 = 8位,表示的是同一种东西,只是大小不同罢了,就像千克(kg)和克(g)。只不过他们的缩写都是B,大小写不同,于是被一些无良的商人拿来忽悠。

大多数场合下都是命名用字节也就是Byte的,比如1G的内存,就是1G Byte大小的内存。只有在少数情况下,比如描述网络带宽的时候,常说的2M的ADSL,表示的是带宽为2M bit的ADSL,也就是带宽为256K Byte。这就解释了为什么2M的ADSL,下载速度一般只能上到220K ~ 240K左右,因为它最高只能达到256K嘛。所以一部600M的电影,是无论如何也不可能在5分钟里下载完的,最快也要40分钟。