本人计算机科学小白,有理工科基础,课程来源是《计算机科学速成课》 B站链接:www.bilibili.com/video/BV1EW…
封面是旧都なぎ老师ヾ(>∀<)(ノ∀`●)⊃老师的画风真是太好看了!
28 计算机网络
1950~1960年代第一个计算机网络出现,通常在公司或者研究室内部使用,方便信息交换,叫作球鞋网络。还可以共享物理资源。
计算机近距离构成的小型网络叫局域网,简称LAN。局域网小到是同一个房间里的两台机器,大到校园里的上千台机器。
其中最著名和成功的是以太网,开发于1970年代。
以太网最简单形式是:一条以太网电线连接数台计算机,当传递数据时,以电信号形式将数据传入电缆,电缆是共享的,其他计算机也能获得数据。
存在问题是如何让某个特定的计算机知道该数据是它所需要的。以太网需要每个计算机有唯一的媒体访问控制地址,简称MAC地址。
这个唯一的MAC地址放在头部,作为数据的前缀发送到网络中,所以计算机监听以太网电缆,只有看到自己的MAC地址才处理数据。
多台电脑共享一个传输媒介,叫载波侦听多录访问,简称CSMA。
载体指运输数据的共享介质。比如,以太网的载体是铜线。
带宽指载体传输数据的速度。
使用共享载体有一个很大的弊端,网络流量较小时,计算机可以等待载体清空,再传输数据,但随着网络流量上升,多台计算机可能同时想写入数据,发生冲突。
计算机能够通过监听电线中的信号检测这些冲突,发现后停止传输,等传输停止再尝试,但对于其他计算机来说这也是一样的,无法解决根本问题。
对于这个问题,以太网的方法是,当计算机检测到冲突,就会在重传之前等待一小段时间,每台计算机使用的等待时间不一样,都是随机的。但这仍然不能完全解决问题。所以改进后,计算机会等1s+随机时间,逐渐递增,等到冲突次数降低,数据流动起来,网络通畅。
这种指数级增长等待时间的方法叫指数退避。
为了减少冲突+提升效率,我们需要减少同一载体中设备的数量,载体和其中的设备总称冲突域。
所以可以利用交换机,位于两个更小的网络之间,必要时才在两个网络间传数据。交换机会记录一个列表,写着哪个MAC地址在哪边网络。
交换机就相当于把多个共用同一个载体的计算机网络,把载体又分成了两个“子区域”,“子区域”内的互相传输,两个“子区域”互不影响;两个“子区域”互相传输时才会占用整个载体。
大的计算机也是这样构建的,包括最大的网络:互联网。
大型网络也是靠这样单个小网络通过交换机结合在一起,从一个小网络到另一个小网络通常有多条路线。由此就产生了路由。
-
线路交换:从A到B有专用的几条线路,但是造价昂贵且容易闲置。
-
报文交换:消息会经过好几个节点,可以用不同路由,使通信更方便。
消息沿着路由跳转的次数,叫跳数。记录跳数可以分辨出路由问题。如果某个跳数特别高,代表着这条路由有问题,叫跳数限制。
但是如果传输的报文非常大,就会发生堵塞,妨碍其他报文传输,所以可以将大报文分成很多小块,叫数据包。
报文的具体格式由互联网协议定义,简称IP。每台联网的计算机都有一个IP地址。
路由器会平衡和其他路由器之间的负载,以确保传输可以快速可靠,叫阻塞控制。
但是将大报文分散开,如何再重新组装回去呢?
有高级传输协议TCP/IP可以解决乱序问题。
29 互联网
计算机为了获取当前正在看的视频,首先要连到局域网,也叫LAN。路由器连着的所有设备组成了局域网。局域网再连广域网,广域网也叫WAN。WAN的路由器一般属于互联网服务提供商,简称ISP。
IP协议只是最底层的协议,头部存“关于数据的数据”,也叫元数据。
所以还有其他协议。用户数据报协议,简称UDP,UDP也有头部,头部位于数据前面,包含有用的信息,即端口号。
每个想访问网络的程序,都得向操作系统申请一个端口号。有了端口号,就知道该将数据交给电脑里的哪个程序处理。
IP负责把数据包送到正确的计算机,UDP负责把数据包送到正确的程序。
UDP头部里还有校验和,用于检查数据是否正确,检查方式是把数据求和来对比。接收方电脑也会把所有数据加起来验证。但是UDP并不提供数据修复或者数据重发的机制。接收方知道数据损坏就会扔掉。并且,UDP不知道数据包是否到达。
虽然有些缺陷很明显,但是一些程序可以处理坏数据或缺失数据,比如视频通话时有时会卡卡的。一些其他程序则无法适用。
如果所有数据必须到达,就用传输控制协议,简称TCP。TCP也存在数据前面,所以叫TCP/IP。TCP的主要功能如下:
-
TCP数据包有序号,便于接收方将数据包排成正确的顺序。
-
TCP要求接收方的电脑收到数据包并校验和检查无误后,给发送方发一个确认码,代表收到了。确认码简称ACK。
-
TCP可以同时发多个数据包,收多个确认码,大大提高了效率。
确认码的成功率和来回时间,可以推测网络的拥堵程度。TCP利用该信息调整同时发包数量,解决拥堵问题。
-
TCP的缺点是确认码使得数据变大,在需要实时性的一些程序中不适用。
互联网为了方便人们使用,不需要记具体的IP地址,所以将域名和IP地址一一对应。域名系统,简称DNS。DNS存储的方式是树状结构。
- 顶级域名(简称TLD)在最顶部,比如 .com 和 .gov等
- 二级域名,比如 .com 下有 google.com 和 baidu.com等
- 子域名,比如 google.com 下有 images.google.com 和 drive.google.com等
各种层次:
-
最底层是物理层。
-
再上一层是数据链路层,负责控制物理层。数据链路层有媒体访问控制地址(MAC),碰撞检测,指数退避等其他底层协议。
-
再上一层是网络层。负责各种报文交换和路由。
-
再上一层就是这一节讲述的传输层,负责在计算机之间进行点到点的传输,还会检测和修复错误。
-
再上一层是会话层:使用TCP和UDP创建连接,传递信息,然后关掉连接。这一整套叫“会话”。
每一层处理各自的问题。应用程序层和表示层是还没有讲到的部分。
30 万维网
万维网的最基本单位,是单个页面。页面有内容,也有去往其他页面的链接,叫做超链接。这些超链接组成了庞大的网络,这就是万维网名字的由来。
为了使网页能互相连接,每个网页需要一个唯一的地址,这个地址叫做统一资源定位器,简称URL。
输入域名,计算机会先做DNS查找,输出对应的IP地址,有了IP地址,浏览器会打开一个TCP连接到这个IP地址,这个地址运行着网络服务器,然后向服务器请求具体页面。这里使用了超文本传输协议(HTTP)。
点击超链接,会向网络服务器发送一个二进制码请求具体的页面,网络服务器会返回一个具体页面。不断打开新链接的同时,这个步骤也会不断重复。
超文本的存储和发送都是以普通文本形式,为了让这个文本能标记自己是否为一个链接,需要开发一种标记方法,所以发明了超文本标记语言(HTML)。
随着网页的增多,我们需要搜索功能,诞生了搜索引擎。
搜索引擎有三个部分:
- 爬虫,将所有看到的链接都加入自己的列表
- 不断扩张的索引,记录访问过的网页上,出现过哪些词
- 查询索引的搜索算法
网络中立性是应该平等对待所有数据包,不去故意限制节流其他小公司的服务。