CrashCourseComputerScience28计算机网络

113 阅读2分钟

计算机网络

随着计算机成本的降低和个人计算机的推广,数据越来越分散,首个计算机网络出现。

第一个计算机网络出现在 1950-1960s,通常在公司或研究室内使用,以方便信息交换,比将纸卡或磁带送到另一栋楼里更快速可靠,同时可以共享物理资源(例如打印机)。这种小范围的网络称为局域网 LAN(Local Area Network),有很多 LAN 技术,其中最著名和成功的是以太网 Ethernet,开发于 1970s,沿用至今。

以太网用网线将网络中的计算机彼此相连,数据传输后进入网线,每台计算机通过设置 MAC Media Access Control 地址来识别发送的数据是否和自己相关。当网络负载增加,多台计算机同时想要传输数据时,就会发生冲突,因此以太网采用 CSMA/CD Carrier Sense Multiple Access with Collision Detection 协议,即监听信道,如果信道空闲则发送数据,如果信道忙则等待一段时间再发送,如果发送的数据和其他计算机发送的数据冲突,则停止发送,等待一段时间(在一个范围内的随机值,防止每台机器都等待相同时间,这样会不断引发冲突)再发送。当多次出现冲突时,一种常见处理方式是使用指数退避 exponential backoff 算法,即每次冲突后,等待时间加倍,直到达到最大等待时间,如果还是冲突,则放弃发送。

通过 Switch 隔离冲突域,可以提高网络吞吐量,这样连接多个冲突域,就形成了大型网络 Internet。但由于冲突域切分了网络,因此需要路由器 Router 来连接不同的冲突域,另一种方式是建立专用线路。
通过路由连接存在线路的不确定性,每个路由的跳转会维护 hop count,即跳数,每经过一个路由 hop count 加一,当 hop count 达到一定值时,数据包会被丢弃,这样可以防止数据包在网络中无限循环或者网络异常。

在传输数据的时候,为了提高效率和容错,往往将大报文切分成小块的数据包,报文具体格式由互联网协议定义,简称 IP,创建于 1970s。数据源的数据包往往会经由不同的路径到达目的地,往往会出现乱序,因此需要对数据包进行排序,处理这个问题的协议是 TCP。TCP/IP 沿用至今,它的好处是无中心化的,通过分组交换自动完成路由。