计算机间的通讯¶
计算机的通讯是指计算机之间或者计算机与其他设备之间进行信息交换的过程。目前计算机间的通讯主要是靠网络来实现的。网络是由许多计算机和其他设备通过通信协议连接在一起的系统,两大要素是网络协议(数据要依赖统一的协议传输)和网络设备(用于连接的设备)。
网络名词及其解释¶
不论是修电脑,还是平常使用计算机联网工作,我们总会在一些场合听到一些网络名词,这些网络名词不乏有被误解的。下面我们将对一些常见的网络名词进行解释。
带宽、传输速率、延迟和丢包率¶
带宽指的是网络的理论最大传输能力,通常以比特每秒(bps)或字节每秒(B/s)来衡量。带宽越大,网络的传输能力就越强。例如,一个带宽为100Mbps的网络理论上可以每秒传输100兆比特的数据。我们家里通网的时候说的“千兆宽带”指的就是该网络的贷款是1000Mbps=1Gbps,或125MB/s。
而传输速率、延迟、丢包率则用于衡量网络的实际表现。传输速率指的是网络的实际传输速率,单位也是比特每秒(bps)或字节每秒(B/s),往往显著低于带宽。例如,一个带宽为100Mbps的网络可能实际传输速率只有50Mbps或更低。延迟指的是数据从发送方到接收方所需的时间,通常以毫秒(ms)为单位来衡量。延迟越低,网络的响应速度就越快。例如,一个延迟为50ms的网络意味着数据从发送方到接收方需要50毫秒的时间。丢包率指的是在数据传输过程中丢失的数据包的比例,通常以百分比(%)来衡量。丢包率越低,网络的可靠性就越高。例如,一个丢包率为1%的网络意味着在每100个数据包中有1个数据包会丢失。延迟、丢包率、传输速率等指标往往会受到网络拥塞、信号干扰、硬件性能等因素的影响。
Example
下面我们将估计一辆满载硬盘,从北京开到上海的卡车的平均传输速率、延迟和丢包率。
先估算带宽。国内高速允许最大总重量为49吨(半挂或板车),一辆半挂车空车质量在16吨以上,这里为了方便按19吨计算,因此装载了30吨的硬盘。一块企业级数据盘容量按30TB(\(3\times 10^{13}\) B)计算,自重约700克;算上保护盒等,按1kg计算,因此一辆卡车装了\(3\times 10^4\)块硬盘,总容量为\(9\times 10^{17}\) B,或者0.9EB。
卡车在高速公路上最大时速在100到90千米每小时不等。按90千米每小时计算,北京到上海约1200千米,则行驶时间大概13.3小时,即\(4.8\times 10^4\)秒,因此传输速率用总数据量除以时间,得到约\(1.9\times 10^{13}\)B/s,即19TB/s,约合\textbf{152Tbps}。该数字非常惊人,是目前家用网络的近两万倍。
下面估计延迟。和常规网络按数据包发送的方式不同,卡车运输是整体运输,或者说卡车本身就是一个大“数据包”,因此延迟等于运输时间,也就是从北京到上海的时间,约13.3小时,即\textbf{\(4.8\times 10^4\)秒}。
下面估计丢包率。只要这个车没出事故、没被劫持、没整个掉沟里,那么就可以用公路运输HDD货物损失率0.02\%到0.05\%来充当丢包率。另外,如果出事故,则丢包率为100\%,而按照中国相关统计数据,公路运输百万公里事故数约为1起,因此完全可以忽略不计。综上,\textbf{丢包率约为0.05\%}。
相对的,现在家用网络的传输速率大概在100MB/s到1GB/s之间,延迟大概在10ms到100ms之间,丢包率大概在0.1\%到1\%之间。可以看到,卡车运输的传输速率远远高于家用网络、丢包率显著低于家用网络,能和最优质的光纤媲美,但是延迟则高得离谱,完全无法进行实时操作。另外,卡车运输还受天气、交通等因素影响,稳定性无法和网络传输相提并论。
在以往的计算机教材中总是出现一句话:“永远不要小看一辆满载磁带的卡车,其带宽远远超过了家庭网络。”看起来现在也差不多,只不过是把磁带换成了硬盘罢了;实际上,即使是2025年,把1EB数据从北京运到上海这个任务,最经济、最快速的方案依然是物流,其速度甚至能把5GB/s的高端光纤专线按在地上摩擦,成本更是低得多;只要不是那么要求时效性,物流依然是传输超大量数据的首选方案。
上述例子也提示我们怎么选择数据传输方式:GB级别的数据,可以使用任意网络途径传输;TB级别的数据,考虑使用专业的数据传输服务;PB级别的数据,考虑走光纤专线;EB级别的数据,则应考虑物流途径。要是数据量更大,那比起你把数据运过去,不如让对面把计算任务运过来。当然,上述数据是对于企业级别的网络而言的,个人用户的网络情况往往更极端,TB级别数据就可以考虑走快递等物流途径了;例如想把某些大文件从大连运送到沈阳,走网络可能需要几天时间才能传输完,而自行开车一天就能送到。
IP地址、端口号和域名¶
IP地址是计算机在网络中的唯一标识符,类似于“门牌号”。目前有两种通行的IP地址:IPv4和IPv6。IPv4地址是一个32位的二进制数,通常用点分十进制数表示(例如192.168.1.1
)。IPv6地址是一个128位的二进制数,通常用冒分十六进制数表示。IPv6地址的引入是为了应对IPv4地址耗尽的问题。
端口号是计算机在网络中用于区分不同应用程序的标识符,类似于“房间号”。端口号是一个16位的整数,范围从0到65535。常见的端口号有80(HTTP)、443(HTTPS)、22(SSH)等。我们假设要指向某一个计算机上的某一个应用程序,那么我们需要指定该计算机的IP地址和端口号。IP地址和端口号一起构成了一个完整的网络地址,通常表示为“IP地址:端口号”(例如0.0.0.0:8000
)。
域名是计算机在网络中的人类可读的标识符,类似于“网站名称”。域名由多个部分组成,通常用点分隔(例如www.pku.edu.cn
)。域名系统(DNS)将域名转换为IP地址,以便计算机可以通过IP地址进行通信。
子网掩码、网关¶
子网掩码是一个32位的二进制数,用于划分IP地址的网络部分和主机部分。它通常用点分十进制数表示,它与IP地址进行按位与运算后,可以得到网络地址。子网掩码的作用是将一个大的网络划分为多个小的子网,以提高网络的效率和安全性。
网关是计算机在网络中的出口,用于连接不同的网络。网关通常是一个路由器或者交换机等设备。
内网、外网¶
我们在日常生活中,常常会听到“内网”和“外网”这两个词。内网是指一个局域网内部的网络,通常用于家庭、学校或者公司等小范围的网络。内网中的计算机可以通过路由器或者交换机等设备连接到外网。外网是指互联网上的网络,通常用于连接不同的局域网和广域网。
内网和外网的IP地址往往是不同的。内网IP地址通常是私有的IP地址,仅在内网中有效(例如每一个地级市都可能有一个“二中”,但是在不同的市称呼“二中”指的不是同一个学校);而外网IP地址全球唯一,互联网可以访问(例如“东港二中”)。例如大名鼎鼎的8.8.8.8
是Google的公共DNS服务器的IP地址,它是一个外网IP地址。如果在内网中访问该地址,则可能访问到的不是Google的DNS服务器,而是内网中的某个设备。
MAC地址¶
MAC地址是计算机网络接口的唯一标识符,类似于“身份证号码”。它是一个48位的二进制数,通常用冒分十六进制数表示(例如00:1A:2B:3C:4D:5E)。MAC地址用于在局域网中唯一标识一个设备。每个网络接口卡(NIC)都有一个唯一的MAC地址。MAC地址通常由设备制造商分配,并且在设备的硬件中存储。
网络协议¶
网络协议是计算机之间进行通信的规则和约定。它定义了计算机如何发送和接收数据,以及如何处理错误和异常等情况。常见的网络协议有TCP/IP、HTTP、FTP等。不同的网络协议适用于不同的应用场景,例如TCP/IP协议适用于可靠的数据传输,而HTTP/HTTPS协议适用于Web应用程序的通信、UDP适用于精度要求不太高的实时通信等。
网络设备¶
网络设备是用于连接计算机和其他设备的硬件设备。常见的网络设备有路由器、交换机、集线器等。路由器用于连接不同的网络,并且可以根据网络协议进行数据转发;交换机用于在同一局域网内连接多个设备,并且可以根据MAC地址进行数据转发;集线器用于将多个设备连接到同一个网络,但不具备智能转发功能。
光网络单元(光猫,ONU)是用于将数字信号转换为光信号的设备,通常用于连接到光纤。光猫可以将计算机发送的数据转换为模拟信号,并且将接收到的模拟信号转换为数字信号。家用的光纤宽带通常是通过光猫连接到互联网的。
目前家用的路由器往往集成了光猫和交换机的部分功能,因此我们往往不需要像以前一样购买一大堆设备了。
网络安全¶
网络的风险¶
虽然互联网的出现给我们带来了便利,但也带来了很多风险。部分人心术不正,使用互联网进行诈骗、盗窃、敲诈勒索等违法犯罪活动;而他们使用的主要手段是不定向的网络攻击,例如钓鱼、木马和病毒等。
钓鱼指的是使用伪造的网页、邮件等方式,诱骗用户输入个人信息,例如用户名、密码、银行卡号等。其目的通常是获取用户的私人信息,以方便对其进行后续的诈骗、勒索等活动。
木马这个词来源于神话中的“特洛伊木马”,原指在一只巨大的木马中藏匿士兵,诱骗敌人打开城门进而发动攻击。现在的木马指一种恶意软件,它伪装成合法的软件或者捆绑在合法软件中,诱骗用户安装。一旦安装,木马就可以在用户不知情的情况下,窃取用户的个人信息、打开端口等。例如,一种最古老且经典的木马是FTP木马,它会在用户的计算机上打开一个FTP端口,允许攻击者远程访问用户的计算机。
蠕虫指的是一种自我复制的恶意软件,它可以在计算机之间传播。蠕虫通常利用计算机系统的漏洞进行传播,一旦感染了一个计算机,就会自动复制自己并传播到其他计算机。蠕虫通常会消耗计算机的资源,导致计算机变得缓慢或者崩溃。一个很经典的蠕虫是“小邮差”,它通过发送带毒邮件进行传播,会占满计算机的网络带宽;一旦感染了计算机,就会自动发送带毒邮件给其他计算机。
病毒指的是一种恶意软件,它可以在计算机之间传播。病毒通常依附在合法的软件中进行传播。病毒通常会破坏计算机的文件、数据等,导致计算机无法正常工作。一个很经典的病毒是“CIH”,它会在每年的4月26日感染计算机,并破坏计算机上的所有文件。它与蠕虫的区别是,病毒不能自己传播,只能依附于其他软件传播;而蠕虫可以自我复制。
被上述恶意软件感染后,计算机会变得不稳定、产生额外的资源开销,甚至导致计算机崩溃、数据破坏,造成经济或其他损失。君子爱财取之有道,我们应该遵纪守法,不要为了炫耀技术或者获取经济利益而制作这些恶意软件。
从根源断绝问题¶
为了防止计算机受到感染和破坏,最简单的方式是从根源上解决问题。我们在日常使用网络的时候,应该遵循以下原则:
- 不浏览不安全网页:在浏览网页的时候,若不能确定安全性,则尽量避免浏览不明链接、下载不明文件;如果确实需要下载软件,应该到官方网站上下载。
- 识别伪造网站:当一个网站需要你输入个人信息时,应该仔细检查该网站的安全性;钓鱼网站通常会伪装成合法网站,例如使用HTTPS协议、与合法网站相似的域名等。我们可以通过查看浏览器地址栏中的锁图标、检查网站的证书、观察域名是否正确等方式来判断网站的安全性。北京大学计算中心每年都会主动制作钓鱼网站,测试本校教职工和学生抗钓鱼的能力。虽然被计算中心骗了是一件不太光彩的事情,也总比被其他人骗了好,至少不会损失钱财。
- 保持系统和软件的更新:系统和软件的更新有一大部分是安全更新。定期更新软件可以阻止恶意软件利用漏洞进行攻击。
- 保持杀毒软件的自动检测功能开启:这类检测功能可以帮助我们初步检测计算机上的恶意软件。虽然有时候存在令人诟病的误报,但是它们仍然是我们保护计算机的一道重要防线。
- 使用密钥代替密码:这类检测功能可以帮助我们初步检测计算机上的恶意软件。虽然有时候存在令人诟病的误报,但是它们仍然是我们保护计算机的一道重要防线。
- 使用强密码并定期更换:如果不得不使用密码登录,建议使用复杂的密码,并定期更换密码。复杂的密码应该包含字母、数字和特殊字符,并且长度至少为8位。我们也可以使用密码管理器(例如BitWarden)来生成和管理复杂的密码。
- 定期备份数据:定期备份数据可以防止数据丢失和损坏。数据备份有一个321原则:3份数据,2种介质,1个异地备份。也就是说,我们应该至少有3份数据备份,其中2份存储在不同的介质上(例如移动硬盘和云存储),1份存储在异地(例如云存储)。这样,即使我们的数据损坏了,也可以迅速恢复来减少损失。
- 善用沙箱:沙箱是一种虚拟化技术,可以将应用程序隔离在一个独立的环境中运行。这样可以一定程度上防止恶意软件对计算机造成损害。我们可以使用虚拟机、Docker等工具来创建沙箱环境,对于不能确定安全性的程序可以在此类环境中运行。
亡羊补牢的办法¶
如果发现自己被钓鱼,应该紧急冻结相关账户并迅速更改密码,防止进一步的经济损失。在接下来的一个月到数个月中务必慎之又慎,你的信息可能已经被泄露,招致电信诈骗的概率显著增高。
如果发现自己的计算机感染了木马、病毒、蠕虫等,此事比被钓鱼更加严重。你应该依次执行以下内容:
- 立即结束进程:如果你能定位具体是哪一个软件正在搞破坏,可以使用任务管理器结束该进程。不过大多数情况下我们无法确定具体是哪一个进程出问题,此时忽略这一步即可。
- 立即断网:这是一种负责任的行为,可以防止病毒进一步扩散。仅在软件层面上切断网络并不足够,如果你的计算机使用有线网络应该拔掉网线,以防止恶意进程重新连接网络。
- 立即查杀:你可以运行杀毒软件的查杀功能,如是旧种类的病毒,杀毒软件应对起来不会太难。
- 立即上报:如果杀毒软件查杀失败,应该立即上报相关部门。这可能意味着新型病毒的出现,上报有关部门有利于他们做出迅速反应,可以减少损失。
- 格式化、重装系统:彻底重新格式化硬盘并重装系统可以彻底地清除残留的病毒文件。这是没有办法的办法,但却是最有效的。