互联网是如何运作的?
1. 互联网是什么?
美国国防部,ARPANET
项目,为了组建承受核弹攻击后仍能保持通信的网络;
多节点,网状结构,互相开放;
部分节点受损后,其他节点仍能以不同的路径,到达目标节点;
互联网不受任何人控制,又或者是受任何人控制,取决于规模和网络管理员,但是由于节点对外开放是性能最大化的,限制出入,不是符合常规的做法或趋势;
由于互联网的存在,轻松的跨域了地域的限制,地球两端的人,能够学习和分享对彼此可能是很有用的知识。
2. 互联网上数据传输的有哪些媒介,及其优缺点
bit,二进制数据,能表示两种状态:开/关,是/否,0/1,这是计算机能识别的语言,所有文字、邮件、图像、视频都将转换成 bit
,然后在互联网上传输。
换算关系 8 bit = 1 byte
、1000 byte = 1 KB
、1000 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