1. 互联网是什么?

美国国防部,ARPANET 项目,为了组建承受核弹攻击后仍能保持通信的网络; 多节点,网状结构,互相开放; 部分节点受损后,其他节点仍能以不同的路径,到达目标节点; 互联网不受任何人控制,又或者是受任何人控制,取决于规模和网络管理员,但是由于节点对外开放是性能最大化的,限制出入,不是符合常规的做法或趋势; 由于互联网的存在,轻松的跨域了地域的限制,地球两端的人,能够学习和分享对彼此可能是很有用的知识。

2. 互联网上数据传输的有哪些媒介,及其优缺点

bit,二进制数据,能表示两种状态:开/关,是/否,0/1,这是计算机能识别的语言,所有文字、邮件、图像、视频都将转换成 bit,然后在互联网上传输。

换算关系 8 bit = 1 byte1000 byte = 1 KB1000 KB = 1 MB

比特率(byte rate):单位时间能传输的数据量,通常是秒为单位,比如:1MB / s,传输一首 3 - 4 MB 的歌曲,只要 3 秒。

  • 电线
  • 电缆
  • 无线

电线

灯泡 💡 + 开关,开灯灯亮表示 1,关灯灯灭表示 0,限定时间间隔为 1

即:关灯后,保持 5 秒,表示五个 0;开灯后,保持 2 秒,表示两个 1,结果为:1100000

每秒只能传输一个 bit,效率很低

电缆

互联网是基于电缆、海底电缆,跨域各大洋、大洲,将世界连接起来

光纤电缆,光导纤维,玻璃或塑料制成,通过“光的全反射”,光在管线内不断反射,能够以光速传输数据,频带宽度大,损耗小

质地、供电、弯曲半径不能过小等问题,限制了光纤的应用场景,像是路一样,适合枝干线路

无线

无线通信,场,范围性,成本低,组网灵活,在光缆的基础上,进一步完成互联网的覆盖

障碍物影响信号强度,安全功率限制下通信距离受限,且天气、飞鸟等因素可能导致通信受阻

3. IP 地址和 DNS

在现实生活中,收发信件是大体路径:发件人将邮件投递到 => 邮箱 📮/邮递员 => 邮局 🏣 => 邮箱 📮/邮递员 => 收件人收到邮件。

其中几个关键信息是:发件人地址、收件人地址和邮局;发件人告知邮局收件人地址,邮局根据收件人地址,调度运力和人手,将邮件派送到收件人手中。

那在互联网中,计算机之间是如何传输数据的呢?这就要引入 IP 地址和 DNS 的概念了,IP 地址是计算机(发件人/收件人)的地址,而 DNS 全称是:Domain Name System - 域名系统,能将域名解析成其对应服务器的 IP 地址。

IP 地址

IP 地址(IPv4)是由四个数字组成,每个数字的范围是:0~255,数字间用点符号分隔,比如:220.181.38.148

上限是 256 * 256 * 256 * 256 = 4294967296 => 能组合成将近 43 亿个 IP 地址,2019 年 11 月 26 日,全球所有 43 亿个 IPv4 地址已分配完毕。

但是不用担心,IPv6 已经开始使用了,最多能组成成 2^128 个 IP 地址。

DNS

由于有这么数量庞大的 IP 地址,对于人而言可读性不好,于是有了域名,IP 地址的别名,比如打开浏览器访问: www.baidu.com 时,经过 DNS 解析,能找到域名对应的 IP 地址:220.181.38.148,进而访问到百度首页,当然也可以直接输入 IP 地址进行访问。

通常网络运营商都会有自己的 DNS 服务,一般不用单独设置,如果你遇到访问某些域名时跳转到一些莫名其妙的网站,这可能是遇到 DNS 劫持了,这时候可以改用一些知名的公共 DNS 服务,被劫持的可能性较小。

常见的 DNS 服务:114.114.144.144(国内)、8.8.8.8(国外)

不用 DNS 可不可以?

可以,但是大多数时候使用 DNS 会方便很多

将所有 IP 地址及其域名映射关系,全部保存在计算机本地磁盘的 hosts 文件中,可能会占用几十个 G 的磁盘空间

相比较之下 DNS 服务只占必要的本地磁盘空间(解析过的域名计算机本地的 DNS 服务器会将其缓存),还会帮我们维护域名映射关系变动,而且会依据地域,找到目标域名就近的服务器 IP 地址;但是需要注意尽量使用可信度高/知名的 DNS 服务,否则可能遭遇 DNS 劫持(访问网站 A 的域名,却解析到网站 B 服务器的 IP 地址)。

计算机是私人的,访问域名背后的哪个服务器的 IP 地址,完全取决于我们,DNS 是作为公共服务平台存在的;而且确实在某些场景,需要手动设置域名和 IP 地址的映射关系:DNS 解析的 IP 地址访问不了,需要开发调试时。

比如,在国内访问 github.com 超时,使用 http://ping.chinaz.com/ Ping 检测 github.com 服务器,看有哪些服务器节点能正常访问,找一个响应时间快一些的,比如这个:

监测点 响应 IP IP 归属地 响应时间 TTL
美国 192.30.255.112 美国 华盛顿州西雅图 GitHub 33ms 50

然后手动修改本机的 hosts 文件,设置 github.com 192.30.255.112,将 github.com 域名解析服务器指定为这个 IP 地址。

浏览器访问 github.com 时,DNS 解析会先从本地的 hosts 文件读取看有没有匹配的域名,有的话就访问域名对应的 IP 地址,没有的话才会连接到 DNS 服务器,查询域名对应的 IP 地址。

4.数据包,路由和可靠性

互联网上从一台计算机到另一台计算机的数据传输,传输路径不是一成不变,中途可能改变,不是预设的。

数据包

数据传输时,会将数据划分成若干个数据包,从起点开始,可能以各自不同的传输路径传输,到达时间也可能不同,到达目的地后再将若干数据包组合成原始数据。

路由器和可靠性

路由器是互联网世界数据传输轨道交通的指挥节点,负责指挥数据包的传输,依据数据包的目的地 IP 地址,为其选择最快的可用路径,当某条传输线路拥堵或者部分线路瘫痪时,指挥数据包走其他通畅的线路,确保数据包快速到达目的地。这是互联网主要原则的基础:可靠性。

TCP

TCP(Transmission Control Protocol - 传输控制协议)管理数据包的发送和接受。数据包抵达目的地时,TCP 会将这些数据包保存起来,并逐一发送通知,告知起点收到了这个数据包。

当数据包传输过程中,由于某些原因导致,无法抵达目的地,这意味着数据不完整,目的地的若干数据包将无法组合成原始数据,这时候 TCP 将不会签名(快递签收),并将未抵达的数据包告知起点(通常是服务器),起点会重新发送这些未抵达的数据包,直到全部抵达,TCP 将会签名,表示数据传输完成。

5.HTTP 和 HTML

  • 打开浏览器
  • 输入网址 URL(统一资源定位符),如 baidu.com
  • 按下 Enter 键
  • 向服务器发起请求
  • HTTP - Hyper Text Transfer Protocol - 超文本传输协议,像是计算机用来向另一台计算机(服务器)索取文件的语言
  • 发送 GET 请求,告诉服务器想获取首页的 HTML 文件
  • HTML - Hyper Text Markup Language - 超文本标记语言,用来向浏览器描述网页的外观
  • 服务器响应请求,传输 HTML 文件
  • 浏览器解析 HTML 文件,文件中包含的图片、音频等资源,根据其 URL 逐一向服务器发起 GET 请求
  • 当你在页面上提交表单、输入搜索内容时,通过 POST 请求将内容发送给服务器,比如登陆百度
  • 服务器根据 POST 请求内携带的账号密码信息,确认并返回 HTML 文件和相关用户信息,比如 Cookie,其中包含用户标识,浏览器能查看并且会自行管理,这是服务器辨别你是谁的唯一方式
  • 当之后再次打开浏览器访问百度时,向服务器发起 GET 请求时,浏览器会自动携带 Cookie
  • 服务器从请求的 Cookie 中得知你是谁,于是返回 HTML 文件和相关用户信息,就像刚登陆成功那样
  • 请求过程中,数据传输是明文传输,骇客能够劫取涉及个人私密的信息,比如密码;但是安全的网站,通过使用「安全资料传输层 SSL」和「传输层安全协定 TLS」,会将数据加密和加锁,避免数据被偷看和篡改
  • HTTPS - Hyper Text Transfer Protocol Secure - 安全超文本传输协议,能确保数据在 SSL 和 TLS 下传输
  • 访问 HTTPS 的网址时,服务器如果想让浏览器建立安全连接,会将网址的数字证书(由收信任的 CA 认证中心颁发)提供给浏览器,以证明该网址是真的;浏览器会向「CA 认证中心」核验数字证书,如果核验失败,浏览器就会发出警告,表明网站不安全

总结来说,HTTP & DNS 管理着 HTML、多媒体文件和任何其他数据的发送和接收;TCP/IP 和路由器网络让数据得以拆分成数据包的形式来传输;数据包是二进制数据,通过电线、光纤电缆、无线网络等方式传输;跨越时间和空间的距离,将世界各个角落的个体连接在了一起。

6.加密和公钥

互联网是一个公共的开放系统,经由电线和光纤电缆,我们在不断的发送和接收信息。可即使是开放系统,我们在互联网上仍有很多私有数据,比如身份证号码、银行卡信息、各种网站的账号密码、电子邮件等,那么如何保密这些信息呢?

通过加密和解密的方式,来确保我们在互联网上的通信安全:

  • 加密,将原始文本进行混合或者以特定规则进行更改,从而互联网上传输;
  • 解密,将数据重新排列或以特定规则进行还原,进而完成数据传输。

比如凯撒密码,通过对字母进行偏移 n 位,解密时根据偏移量重新排列,其中的偏移量 n 就是密钥,但是很容易被暴力破解,因为字母只有 26 个,最多只有 26 个潜在密钥(偏移量 n),尝试 26 次就能解密。

改进方法是不要让每个字母的偏移量都相同,举例偏移量使用 10 位密钥:5182273847

原文
free pizza in the cafeteria

密钥
5182 27384 75 182 273847518

密文
ksmg rpche ps upg ehimxlwji

暴力破解可能需要尝试 100 亿次,人力推算可能需要上百年,但是计算机推算只需要几秒钟的时间,为了应对算力的空前发展,我们不得不使用更长的密钥,让密钥的暴力破解需要耗费不合理的时间。

如果使用 256 位密钥对数据进行加密,尝试所有情况,暴力破解一条 256 为加密的数据,可能需要数百亿年的时间。但是根据摩尔定律,即处理器性能大概每两年番一番,如果这种指数式的发展持续,时间问题将不再是问题。

这种发送方和接收方事先共享密钥的方式,我们称其为对称编码 / 对称加密。因为互联网是公开的,对称加密并不能确保通信安全。于是非对称加密来了,公钥可以与任何人共享,私钥不共享。公钥用于加密数据,任何人都可以使用使用,创建的加密数据,只能被有权访问私钥的计算机解密。非对称加密方式的公钥和私钥的经由一些特定规则(数学方程式)生成。

当我们访问使用 HTTPS 的网站时,数据传输就是使用公共密钥加密的,底层是通过「安全资料传输层 SSL」和「传输层安全协定 TLS」,确保与网站服务器之间的数据传输是安全的。

7.网络安全与犯罪

从事网络犯罪的可能是任何人,小到窃取个人敏感信息、账号信息,大到入侵国家能源、交通网络。还记得伊朗的核离心机就被黑客入侵导致损坏过。

计算机病毒

计算机病毒与自然界病毒的工作原理类似,计算机病毒是一种可执行程序,通常是无意间安装的,会损坏用户及其计算机,并且可能通过网络传播到其他计算机上。

那么计算机是怎么感染病毒的呢?

  • 诱导、欺诈的方式安装程序,比如伪装成安装更新
  • 通过已安装的软件上的漏洞,静默安装病毒程序

计算机被病毒感染之后,病毒能干什么?

  • 窃取或删除计算机文件
  • 控制其他应用程序
  • 允许其他人远程控制计算机

DDoS

使用计算机病毒,黑客可以控制海量的计算机,并将这些计算机作为数字军队(僵尸网络、肉鸡)来集中攻击网站使其瘫痪,这种攻击方式被称为:

DDoS - Distributed Denial of Service - 分布式拒绝服务

「拒绝服务」是指频繁请求目标网站的服务器承受能力到达极限,停止响应;当攻击同时来自多台计算机时,我们将其称为分布式拒绝服务

网络钓鱼诈骗

网络钓鱼诈骗,一般是通过程序批量发送大量垃圾邮件、短信、信息,以骗取个人敏感信息。

我们有时会收到一些垃圾邮件或短信会让你访问某个网站,这个网站通常是伪造的,让你登陆,但是并不能登陆成功,因为它只是用这种方式来窃取你的真实账号密码;

如果你具备一定的警觉性,你可能会发现自己的账号密码可能已经泄漏,会立即去修改密码或冻结账户。

有的网站同样是伪造的让你登陆,并且能让你登陆成功,遇到这种情况,可能你永远都没法察觉自己的敏感信息已经被窃取。好在各个公司都在通过各种方式:人机检测、异地登陆、异常行为验证等,维护用户的个人信息。

参考链接

https://roadmap.sh/guides/what-is-internet