互联网太棒啦
键盘敲几下就能在平台直播--哈喽!
在百科上阅读文章
在淘宝、当当买东西,和朋友视频,发一条天气说说
毫无疑问,这种用户在发送和接收信息的能力
永远改变了这个世界
振兴了全球经济
帮助现代世界在遍布全球的光纤中快速发展
你可能觉得计算机和网络密切相关,但事实上,
然而 因为大型计算机开始随处可见
第一个计算机网络出现在1950~1960年代
举个例子,与其每台电脑配一台打印机
大家可以共享一台联网的打印机
早期网络也会共享存储空间
因为每台电脑都配存储器太贵了
计算机近距离构成的小型网络, 叫局域网, 简称LAN
局域网能小到是同一个房间里的两台机器
或大到校园里的上千台机器
以太网的最简单形式是:一条以太网电线连接数台计算机
当一台计算机要传数据给另一台计算机时 它以电信号形式,将数据传入电缆
因为电缆是共享的
同一个网络里的其他计算机也看得到数据
但不知道数据是给它们的,还是给其他计算机的
为了解决这个问题, 以太网需要每台计算机有唯一的
媒体访问控制地址, 简称MAC地址
这个唯一的地址放在头部,作为数据的前缀发送到网络中
所以,计算机只需要监听以太网电缆
这运作得很好 现在制造的每台计算机都自带唯一的MAC地址
用于以太网和无线网络, 多台电脑共享一个传输媒介,
这种方法叫 "载波侦听多路访问" 简称"CSMA"
载体(carrier)指运输数据的共享媒介
以太网的"载体"是铜线
WiFi的"载体"是传播无线电波的空气
很多计算机同时侦听载体
所以叫"侦听"和"多路访问"
当网络流量较小时 计算机可以等待载体清空
然后传送数据
但随着网络流量上升 两台计算机想同时写入数据的概率也会上升
幸运的是 计算机能够通过监听电线中的信号检测这些冲突
最明显的解决办法是停止传输
等待网络空闲, 然后再试一遍
问题是 其他计算机也打算这样做
其他等着的计算机可能在任何停顿间隙闯入
导致越来越多冲突
很快,每个人都一个接一个地讲话,而且有一堆事要说
馊主意!
以太网有个超简单有效的解决方法
- 当计算机检测到冲突, 就会在重传之前等待一小段时间
因为要举例,假设是1秒好了
当然 如果所有计算机用同样的等待时间是不行的 它们会在一秒后再次冲突
所以加入一个随机时间
一台计算机可能等1.3秒 另一台计算机等待1.5秒 要是运气好 等1.3秒的计算机会醒来 发现载体是空闲的 然后开始传输
当1.5秒的计算机醒来后 会发现载体被占用, 会等待其他计算机完成 这有用 但不能完全解决问题 所以要用另一个小技巧
如果一台计算机在传输数据期间检测到冲突会等一秒 + 随机时间
然而 如果再次发生冲突 表明有网络拥塞
这次不等1秒,而是等2秒
如果再次发生冲突等4秒、然后8秒、16秒等等
直到成功传输
因为计算机的退避 冲突次数降低了,
数据再次开始流动起来 网络变得顺畅
下电影有救啦!
这种指数级增长等待时间的方法叫:
指数退避
以太网和WiFi都用这种方法,很多其他传输协议也用
但即便有了"指数退避"这种技巧
想用一根网线链接整个大学的计算机还是不可能的
为了减少冲突+提升效率
我们需要减少同一载体中设备的数量, 载体和其中的设备总称 "冲突域"
让我们回到之前以太网的例子, 一根电缆连6台计算机
也叫一个冲突域
为了减少冲突, 我们可以用交换机把它拆成两个冲突域
交换机位于两个更小的网络之间
必要时才在两个网络间传数据
交换机会记录一个列表
写着哪个 MAC 地址在哪边网络
如果A想传数据给C
交换机不会把数据转发给另一边的网络
没必要
如果E想同一时间传数据给F,网络仍然是空的
但如果F想发数据给A, 数据会通过交换机
两个网络都会被短暂占用
大的计算机网络也是这样构建的
包括最大的网络: 互联网
使不同网络间可以传递信息
这些大型网络有趣之处是
从一个地点到另一个地点通常有多条路线
连接两台相隔遥远的计算机或网路,最简单的办法
是分配一条专用的通信线路
早期电话系统就是这样运作的
假设"西藏"和"福建"之间,有五条电话线
如果在1950年代,福建的老刀同志想打电话给西藏当兵的兄弟
然后工作人员手动将老刀的电话连到通往西藏的未使用线路
通话期间 这条线就被占用了,
如果五条线都被占用了,老刀要等待某条线空出来
这叫 "电路交换"因为是把电路连接到正确目的地
能用倒是能用
但不灵活而且价格昂贵 因为总有闲置的线路
好处是 如果有一条专属于自己的线路
你可以最大限度地随意使用,无需共享
因此军队, 银行和其他一些机构
依然会购买专用线路来连接数据中心
传输数据的另一个方法是 "报文交换"
"报文交换" 就像邮政系统一样
不像之前A和B有一条专有线路
消息会经过好几个站点
如果 老刀 写一封信给 西藏当兵的兄弟
信件可能从"福建"到"江西"
然后"湖北" 然后"四川" 最后到"西藏"
每个站点都知道下一站发哪里
因为站点有表格,记录到各个目的地,信件该怎么传
报文交换的好处是 可以用不同路由
使通信更可靠更能容错
回到邮件的例子
如果"四川"有自然灾害中断了通信
"湖北"可以传给"青海"
在这个例子里,城市就像路由器一样
消息沿着路由跳转的次数
叫"跳数"(hop count)
记录跳数很有用,因为可以分辨出路由问题
报文会如果在2个城市之间,不停传来传去
不仅浪费带宽, 而且这个路由错误需要修复!
这种错误会被检测到,因为跳数记录在消息中,而且传输时会更新跳数
如果看到某条消息的跳数很高
就知道路由肯定哪里错了
这叫"跳数限制"
报文交换的缺点之一是有时候报文比较大
会堵塞网络 因为要把整个报文从一站传到下一站后
才能继续传递其他报文
传输一个大文件时, 整条路都阻塞了
即便你只有一个1KB的电子邮件要传输 也只能等大文件传完,或是选另一条效率稍低的路线 这就糟了
解决方法是 将大报文分成很多小块,叫"数据包"
就像报文交换, 每个数据包都有目标地址,
因此路由器知道发到哪里
报文具体格式由"互联网协议"定义,简称IP 这个标准创建于1970年代
每台联网的计算机都需要一个IP地址
你可能见过,以点分隔的4组数字
例如 172.217.7.238 是Google其中一个服务器的IP地址
数百万台计算机在网络上不断交换数据
瓶颈的出现和消失是毫秒级的
路由器会平衡与其他路由器之间的负载
以确保传输可以快速可靠,这叫"阻塞控制"
到达顺序可能会不一样,这对一些软件是个问题
幸运的是,在IP之上还有其他协议
比如TCP/IP协议, 可以解决乱序问题
将数据拆分成多个小数据包,然后通过灵活的路由传递
非常高效且可容错,如今互联网就是这么运行的
这叫"分组交换"
没有中心权威机构,没有单点失败问题
事实上 因为冷战期间有核攻击的威胁,所以创造了分组交换
如今,全球的路由器协同工作,找出最高效的线路
用各种标准协议运输数据比如 "因特网控制消息协议"(ICMP) 和 "边界网关协议"(BGP) 世界上第一个分组交换网络 以及现代互联网的祖先是ARPANET 名字来源于赞助这个项目的机构,美国高级研究计划局
并且有一台或多台计算机
能看到 "PDP-1" 和"IBM 360系统"
甚至还有一个伦敦的 ATLAS
是通过卫星连到网络里的
显然 互联网在这几十年间发展迅速
如今不再只有几十台计算机联网
据估计有接近100亿台联网设备
而且互联网会继续快速发展
特别是如今各种智能设备层出不穷
比如联网冰箱,恒温器
以及其他智能家电,它们组成了"物联网"
我们对计算机网络进行了概览
网络是一堆管子组成的吗?
额 算是吧