本篇介绍计算机网络的基础知识。
文章目录
- 1. 计算机网络历史
- 2. 以太网" (Ethernet)
- 2.1 以太网" (Ethernet)的简单形式及概念
- 2.2 指数退避解决冲突问题
- 2.3 利用交换机减少同一载体中设备
- 2.4 互联网(The Internet)
- 2.5 路由(routing)
- 2.6 数据包(packs)解决阻塞问题
- 2.7 分组交换(Packet Switching)
- 2.8 物联网(internet of things)
1. 计算机网络历史
第一个计算机网络出现在1950~1960年代,通常在公司或研究室内部使用,为了方便信息交换,比把纸卡或磁带送到另一栋楼里更快速可靠,这叫"球鞋网络"
第二个好处是能共享物理资源,举个例子,与其每台电脑配一台打印机,大家可以共享一台联网的打印机,早期网络也会共享存储空间,因为每台电脑都配存储器太贵了
计算机近距离构成的小型网络叫局域网, 简称LAN(Local Area Networks)
,局域网能小到是同一个房间里的两台机器,或大到校园里的上千台机器尽管开发和部署了很多不同 LAN 技术,其中最著名和成功的是"以太网" (Ethernet)
, 开发于1970年代在施乐的"帕洛阿尔托研究中心"诞生, 今日仍被广泛使用。
2. 以太网" (Ethernet)
2.1 以太网" (Ethernet)的简单形式及概念
以太网的最简单形式是:一条以太网电线连接数台计算机,当一台计算机要传数据给另一台计算机时,它以电信号形式,将数据传入电缆,当然 因为电缆是共享的,连在同一个网络里的其他计算机也看得到数据,但不知道数据是给它们的,还是给其他计算机的。
为了解决这个问题 以太网需要每台计算机有唯一的媒体访问控制地址,简称 MAC(Mdedia Acess Control)
地址。
这个唯一的地址放在头部,作为数据的前缀发送到网络中,所以,计算机只需要监听以太网电缆只有看到自己的 MAC 地址,才处理数据。这运作得很好 现在制造的每台计算机都自带唯一的MAC地址,用于以太网和无线网络。
- 多台电脑共享一个传输媒介,这种方法叫
"载波侦听多路访问(Carrier Sense Multiple Access)" 简称"CSMA"
。 - 载体(carrier)指运输数据的共享媒介,以太网的"载体"是铜线, WiFi 的"载体"是传播无线电波的空气。
- 很多计算机同时侦听载体,所以叫
"侦听"
和"多路访问"
- 而载体传输数据的速度 叫
"带宽"
。
2.2 指数退避解决冲突问题
不幸的是 使用共享载体有个很大的弊端,当网络流量较小时 计算机可以等待载体清空,然后传送数据,但随着网络流量上升 两台计算机想同时写入数据的概率也会上升,这叫冲突
。 数据全都乱套了,就像两个人同时在电话里讲话。
幸运的是 计算机能够通过监听电线中的信号检测这些冲突,最明显的解决办法是停止传输,等待网络空闲, 然后再试一遍。
问题是其他计算机也打算这样做,其他等着的计算机可能在任何停顿间隙闯入,导致越来越多冲突,很快,每个人都一个接一个地讲话而且有一堆事要说,就像在家庭聚餐中和男朋友分手一样。
以太网有个超简单有效的解决方法,当计算机检测到冲突 就会在重传之前等待一小段时间,因为要举例,假设是 1 秒好了,当然 如果所有计算机用同样的等待时间 是不行的,它们会在一秒后再次冲突,所以加入一个随机时间 一台计算机可能等1.3秒,另一台计算机等待1.5秒,要是运气好 等1.3秒的计算机会醒来,发现载体是空闲的 然后开始传输,当1.5秒的计算机醒来后 会发现载体被占用会等待其他计算机完成。这有用,但不能完全解决问题 所以要用另一个小技巧,即"指数退避"
指数退避
正如前面所说,如果一台计算机在传输数据期间检测到冲突,会等一秒+随机时间,然而,如果再次发生冲突,表明有网络拥塞,这次不等1秒,而是等2秒,如果再次发生冲突 等4秒 然后8秒 16秒等等,直到成功传输,因为计算机的退避冲突次数
降低了,数据再次开始流动起来 网络变得顺畅,这种指数级增长等待时间的方法叫:指数退避
2.3 利用交换机减少同一载体中设备
以太网和WiFi都用这种方法,很多其他传输协议也用,但即便有了"指数退避"这种技巧,想用一根网线链接整个大学的计算机还是不可能的,为了减少冲突+提升效率,我们需要减少同一载体中设备的数量。载体和其中的设备总称 "冲突域"(Collision Domain)
让我们回到之前以太网的例子 一根电缆连6台计算机,也叫一个冲突域,为了减少冲突 我们可以用交换机
把它拆成两个冲突域,交换机位于两个更小的网络之间, 必要时才在两个网络间传数据。
交换机会记录一个列表,写着哪个 MAC 地址在哪边网络,如果A想传数据给C,交换机不会把数据转发给另一边的网络;
如果E想同一时间传数据给F,网络仍然是空的,两个传输可以同时发生;
但如果F想发数据给A 数据会通过交换机,两个网络都会被短暂占用;
2.4 互联网(The Internet)
大的计算机网络也是这样构建的,包括最大的网络 - 互联网(The Internet)
,也是多个连在一起的稍小一点网络,使不同网络间可以传递信息。
下篇将会细讲。
2.5 路由(routing)
这些大型网络有趣之处是,从一个地点到另一个地点通常有多条路线,这就带出了另一个话题路由(routing)
。
连接两台相隔遥远的计算机或网路,最简单的办法是分配一条专用的通信线路。早期电话系统就是这样运作的,假设"印第安纳波利斯"和"米苏拉"之间,有五条电话线,如果在1910年代,John 想打电话给 Hank,John要告诉操作员他想打到什么地方,然后工作人员手动将 John 的电话连到通往米苏拉的未使用线路,通话期间 这条线就被占用了, 如果五条线都被占用了John 要等待某条线空出来,这叫 "电路交换"
。
因为是把电路连接到正确目的地,能用倒是能用, 但不灵活而且价格昂贵,因为总有闲置的线路,好处是,如果有一条专属于自己的线路, 你可以最大限度地随意使用,无需共享,因此军队, 银行和其他一些机构,依然会购买专用线路来连接数据中心。
传输数据的另一个方法是 "报文交换(Message Switching)"
,“报文交换” 就像邮政系统一样,不像之前A和B有一条专有线路,消息会经过好几个站点,如果 John 写一封信给 Hank,信件可能从"印第安纳波利斯"到"芝加哥",然后"明尼阿波利斯" 然后"比林斯" 最后到"米苏拉"。
每个站点都知道下一站发哪里,因为站点有表格,记录到各个目的地,信件该怎么传,报文交换的好处是 可以用不同路由使通信更可靠更能容错。回到邮件的例子,如果"明尼阿波利斯"有暴风雪中断了通信, “芝加哥"可以传给"奥马哈”。
在这个例子里,城市就像路由器一样,消息沿着路由跳转的次数叫"跳数"(hop count)
,记录跳数很有用,因为可以分辨出路由问题,举例,假设芝加哥认为去米苏拉的最快路线是奥马哈,但奥马哈认为去米苏拉的最快路线是芝加哥,这就糟糕了,因为2个城市看到目的地是米苏拉,结果报文会在2个城市之间不停传来传去,不仅浪费带宽 而且这个路由错误需要修复!
这种错误会被检测到,因为跳数记录在消息中而且传输时会更新跳数,如果看到某条消息的跳数很高就知道路由肯定哪里错了,这叫"跳数限制(Hop Limit)"
。
2.6 数据包(packs)解决阻塞问题
报文交换的缺点之一是有时候报文比较大,会堵塞网络 因为要把整个报文从一站传到下一站后才能继续传递其他报文,传输一个大文件时 整条路都阻塞了,即便你只有一个1KB的电子邮件要传输也只能等大文件传完,或是选另一条效率稍低的路线,这就糟了,解决方法是:将大报文分成很多小块,叫"数据包(packs)"
。
就像报文交换 每个数据包都有目标地址因此路由器知道发到哪里,报文具体格式由"互联网协议(Internet Protocol)"
定义,简称 IP,这个标准创建于 1970 年代,每台联网的计算机都需要一个IP地址,你可能见过,以点分隔的4组数字。例如 172.217.7.238 是 Google 其中一个服务器的IP地址,数百万台计算机在网络上不断交换数据瓶颈的出现和消失是毫秒级的,路由器会平衡与其他路由器之间的负载以确保传输可以快速可靠,这叫"阻塞控制(congestion control)"
。
有时,同一个报文的多个数据包会经过不同线路,到达顺序可能会不一样,这对一些软件是个问题。
2.7 分组交换(Packet Switching)
幸运的是,在 IP 之上还有其他协议,比如 TCP/IP
, 可以解决乱序问题,我们下周会讲,将数据拆分成多个小数据包,然后通过灵活的路由传递,非常高效且可容错,如今互联网就是这么运行的,这叫"分组交换(Packet Switching)"
。
有个好处是 它是去中心化的,没有中心权威机构 没有单点失败问题。事实上 因为冷战期间有核攻击的威胁,所以创造了分组交换。
如今,全球的路由器协同工作,找出最高效的线路,用各种标准协议运输数据,比如 "因特网控制消息协议"( Internet Control Message Protocol ICMP)
和 "边界网关协议"(Border Gateway Protocol BGP)
。
世界上第一个分组交换网络以及现代互联网的祖先是 ARPANET,名字来源于赞助这个项目的机构,美国高级研究计划局( Advanced Research Projects Agency)
。
上图是 1974 年整个 ARPANET 的样子,每个小圆表示一个地点比如大学或实验室,那里运行着一个路由器,并且有一台或多台计算机,能看到 “PDP-1” 和"IBM 360系统",甚至还有一个伦敦的 ATLAS是通过卫星连到网络里的。
2.8 物联网(internet of things)
显然 互联网在这几十年间发展迅速,如今不再只有几十台计算机联网据估计 有接近100亿台联网设备,而且互联网会继续快速发展,特别是如今各种智能设备层出不穷比如联网冰箱,恒温器以及其他智能家电,它们组成了"物联网"(internet of things)
。
第一部分到此结束 我们对计算机网络进行了概览,网络是一堆管子组成的吗?,额 算是吧。
下篇我们会讨论一些高级传输协议,然后讲万维网(World Wide Web)
3. 视频地址:计算机网络