Internet History, Technology, and Security
课程地址:https://www.coursera.org/learn/internet-history
科学|上网可解决视频加载不出来的问题
Week 1 Getting Started
High Stakes Research in Computing, and Communication
BOMBE:一个强大的机械计算机,德国加密改进后使机械计算机不能解密它,用于战时通信。
Colossus:一个强大电子计算机
- 有线通信范围小,无法满足二战时期全世界范围通信
- 无线通信满足战争需求
- 避免被拦截,使用加密的无线信号
Alan Turing and Bletchley Park
Bletchley Park:位于英国伦敦,现代计算机科学发源地,是早期的多部门科研机构。二战时英国政府为了备战,召集包含 Alan Turing 在内的部分人才在此,时任英国首相的丘吉尔给予更多的人才与足够的经费。当时解决了密码学、计算学等难题
Enigma:德国研制的一种独特的加密机器并被用于战时通信,通信流是摩斯电码。引发“闪电战”
Bomba:波兰建的机器,现在为冰淇淋甜点名。
Lorenz:希特勒用的另一套加密系统,用电传打字机传输。
Mark 1:第一台巨人计算机,包含1500个电子管,Tommy Flowers 团队发明。后来交付给了Bletchley Park
Mark 2:包含2500个电子管,Tommy Flowers 团队发明。1944年6月1日交付给Bletchley Park。被用于破解德军通讯,得知诺曼底登陆情报
巨人计算机已经具备了现代电子计算机的所有元素,但是没有内存,被称为没有存储的机器。
Alan Turing:在Bletchley Park工作,开发了一套基于明文的破译“Enigma”的方法。 参与大不列颠早期计算机的研发,并参与早期的一些计算机发展研究,没有参与巨人计算机的研发。1954年,图灵自杀,令人惋惜。
- 波兰人认识到机器加密时代到来,开设密码学课程。在1939年7月把所有研究信息、“Enigma”的复制品和所有工作给了英国。
- 得到信息后,英国在Bletchley Park用波兰人的方法破解“Enigma”。
- 波兰人利用德国重复地使用信息头( message header)加密信息作为攻击点,英国人对此展开研究。图灵找到缺点并开发了一套基于明文的破译方法。
- 德国有两套系统,“Enigma”是作战系统,用于特定的作战通信,传输各种指令消息。另一套是不同于摩斯电码的通讯流,为希特勒和将军们通讯所用。
- 巨人计算机将被“Lorenz”加密的信息6星期的破解信息时间缩短到6个小时。
Post-War Computing and Communication
-
二战结束后,关闭了Bletchley Park。人们去了哈佛大学等学术机构。
-
战后环境舒适,一批根据自己琢磨建造的计算机诞生,被认为是第一代计算机,不少计算机架构沿用至今 。
-
战后50年代,美国开始意识到学者的价值,出现科学项目热潮。
-
60年代,人们以全新的方式看待计算机科学,重心从计算机数学研究转移到计算机的应用。
-
计算机数量少,供大学研究人员使用。终端通过拨号调制解调器来连接。本地拨号连接本地计算机。长途拨号连接远程计算机,需要租用价格昂贵的线路,银行用此模式。
Using the Michigan Terminal System (through 6:00)
本章节主要介绍IBM36067型大型计算系统的使用
-
介绍登陆系统的详细过程
“#”表示终端系统正待等待交互
命令以“$”开始
不区分大小写
每行指令都需要行结束符,“control”键
“$SET”命令设置密码
-
一些设置和文件命令
"$CREATE" 建立一个新文件
“Number” 输入内容自动编号
“control + N”删除行
-
PIL语言介绍
Wrap up and Reflection
60年代到70年代早期的计算机,虽然在现在看来很庞大并且发出很大的噪音,但是带当时确实改变了人们的时间观,使得在几千公里外的人可以用此来对话,这是一个革命性的概念。
个人总结
正是因为战争的需求,从最初的密码学到后来的计算机加密通信,极大地促进了计算机的发展。现在使用如此便捷计算机的我们,一定不要忘记像图灵那些为计算机发展做出伟大贡献的伟人们!
Week 2 History: The First Internet - NSFNet
History Through Supercomputing
Dial-Up Access(拨号访问)
- 70年代初,少部分人使用teletype,其他人用punch cards
Leased Lines(专线)
- Get a dedicated connection between two points from the phone company(租用线路)
- Expensive because of limited copper (铜线、价格昂贵)
- cost was based on distance(成本基于距离)
Store and forward networking(存储和转发网络)
- 发送信息需要排队
- 费时
- Saving Money with More "Hops"
- BITNET就是其中之一
ARPANET:美国国防部投资建立,为了改善用于军事目的的计算机设备的使用
- 改善BITNET排队等待,使用Packet Switching(分组交换)
- Break each message into packets(每条消息分成数据包)
- Can allow the packets from a single message to travel over different paths, dynamically adjusting for use(数据包经过不同的路径到达目的)
- Use special-purpose computers, called routers, for the traffic control(使用路由器进行流量控制)
Larry Smarr - NCSA
Larry Smarr是一个天体物理学家,解决学术研究问题需要使用超级计算机,最后通过努力建立了NSFNet(国家科学基金会网)。
History Through NSFNet
密西根大学没有参与ARPNET项目,也没有超算中心
Doug Van Houweling - NSFNet
密西根大学建立国家超级计算机的提议没有得到NSF的资助
提议建立网络连接国家超级计算机中心,根据预算只够建立传输速度56kb的网络
与IBM合作采用TCP/IP网络协议。到1990年网速达到45M每秒,是当时最快的国际网络,最后转手给NSF Net
推荐吴军著作《浪潮之巅》关于IBM、AT&T等公司的历史
Leonard Klienrock - The First Two Packets on the Internet
对Len Kleinrock的采访关于介绍网络创立初期的故事
Katie Hafner - Where Wizards Stay Up Late
对Katie Hafner采访回忆丈夫等人早期创建ARPANET的故事
Week 3 History: The Web Makes it Easy to Use
Getting to the Web
- 很多国家的核物理学家都在CERN(欧洲核研究中心),那些人非常聪明也很有乐趣,成立了各种俱乐部。
- Robert Cailliau和Tim Berners-Lee在CERN建立了万维网
Robert Cailliau - Co-Inventor of the Web
对Robert Cailliau采访
- 万维网之前,存取资料必须到网络上指定某台电脑上。万维网出现之后,通过链接获取内容
- The first web server in America was at the Stanford Linear Accellerator (SLAC)
- CERN developed browsers and servers - with a goal of worldwide hyperlinked documents
- 把网络推广到学术界之外
- Mosaic浏览器只有一个窗口,点击链接新的窗口会替代旧的窗口
Paul Kunz - The First Web Server in America
对Paul Kunz的采访
- 网络出现之前,即时消息通讯技术能在不登录数据库的情况下进行查询
- 建立邮件界面通过电子邮件发送查询
- 通过C代码编写服务器软件大大提升数据库查询效率
- 越来越多的人对网络产生了兴趣
Building Mosaic
- Gopher:由于网速的限制简单的文字相比图片更适合浏览
- Steve Jobs 离开Apple公司后建立了NeXT公司,NeXT电脑以Unix为基础。又回到Apple公司NeXT技术成为了Macintosh操作系统,影响深远。Steve Jobs 为万维网的发展做出了贡献。
- 1990年,电脑快速发展,NCSA建立了一个开源的网络浏览器,让普通人连上了网络。
- NCSA的人员共同建立了Netscape(网景公司)并商业推广Mosaic浏览器和httpd web server,免费开源
- Mosaic was the first “consumer” web browser developed at NCSA
Joseph Hardin - NCSA Mosaic
对Joseph Hardin的采访
讲述制作NCSA Collage(能够跨平台的工具集)以及一些浏览器功能插件
Week 4 History: Commercialization and Growth
Explosive Growth of the Internet and Web
The Year of the Web
在1994年底,带有Internet浏览器并且使用了TCP/IP协议的Windows 95 Beta2系统问世。之后互联网吸引了大量商业资金并产生巨大的变革,其中网景公司(Netscape)走在了前沿。网景公司从刚开始主要做开源的浏览器产品,逐渐做起了distributed computing applications(分布式电脑程序),并适配Mac、windows和Linux操作系统。然而此时微软公司感到自己的地位受到威胁,并且在收购网景公司时遭到了拒绝。微软的种种做法也让网景公司自己感到压力很大,并且也做出转变。在这期间创立了Mozilla开源项目(FireFox的前身),其中Brendan Eich在在短短的10天内创造了JavaScript语言。然而最终网景公司走向了下坡路,被AOL收购。
Mitchell Baker: The Mozilla Foundation
对Mitchell Baker的采访,关于网景公司与微软的竞争和网景公司被AOL收购后管理方面相关的事情。
Brendan Eich - Inventor of JavaScript
对Brendan Eich的采访,讲述创造JavaScript语言时的故事。
Brendan Eich在网景公司初期就加入了其中, 发明了供网页设计师和程序员使用的JavaScript语言。它和Java语言有相似之处但没有Java语言专业。由于创作时间的短促,导致JavaScript语言有很多错误,但正是这些错误,也使Javascript有更好的可扩展性。
Commercialization of the Web
Assume the Web
现在我们可以享受到如此多的应用程序,都是靠前辈们所做出的奉献与努力。他们放弃专利与个人利益,选择开源。
正是微软与网景的竞争,微软才决定把windows上安装免费的浏览器。另一方面也导致网景公司收费的浏览器没有市场,也使今天的我们可以免费的用上浏览器。
其中万维网的发明者Tim Berners-Lee 当时就预测出互联网会引起文化的革命。
Jeff Bezos - Founder of Amazon
对亚马逊的创始人Jeff Bezos的采访。从采访视频中就可以看到Jeff Bezos是一个很有自信的人。
正是由于互联网的飞速发展,Jeff Bezos看到了商机,最后选择最适合在网络上销售的书作为首选商业模式。
Jeff Bezos有着聪明的头脑,做法是把一少部分销量最好的书作为存货放在自己仓库里,其他一大部分从其他经销商处采购。
The Modern Internet
互联网的飞速发展也导致光纤生产铺设过剩,也使通信的成本大大降低。同时互联网的发展也影响着经济的发展,计算机让商业更加的有效率,引起了商业快速增长,经济危机随之此而来。
Week 5 Technology: Internets and Packets
Layer 1: Link
Introduction / The Link Layer
-
在早期的存储转发网络中,信息在在每个节点传送时需要排队等候,占用大量的时间。
-
依托于ARPANET的一项新技术出现,叫做packet networks。把要传送的数据分成多个数据包进行传输,并对每个数据包进行编号并标明源地址和目的地址。每个数据包可能经过不同的链路传送,每个数据包到达目的地址的时间可能不同,然后在目的地址把每个数据包按照编号重新组装成完整的数据。
主机A要与主机B传送数据时,数据包需要经过多个路由“一跳一跳”地到达目的地 -
为了使网络传送的数据更可靠,需要解决的问题很多很复杂。于是提出了分层的概念,使问题简单化。各层之间是独立的,某一层不需要知道它的下一层是如何实现的,每层只实现一种相对独立的功能。其中最受欢迎的网络体系结构就是TCP/IP模型,包含四层:应用层、运输层、网际层IP和网络接口层。
-
主机A与主机B传送数据的TCP/IP四层协议图如下。在网络接口层,网络适配器(网卡)把二进制的数据转换成比特信号,比特电流就顺着网线传到路由器。路由器根据数据包的目的IP地址再根据MAC地址进行转发,最终到达目的主机。
-
总线型的以太网在同一时间只能允许一台计算机发送数据,为了避免数据冲突,从而采用了CSMA/CD(载波监听多点接入/碰撞检测)协议。发送数据之前要先检测信道是否被占用,只有信道空闲时才能发送数据。当检测到信道繁忙时,会执行退避算法。具体过程可参考专业书《计算机网络》。
Bob Metcalfe - The Ethernet Story
对Bob Metcalfe的采访,介绍关于建立以太网的故事。
Charles写了一个叫做Bravo的text editor,是Microsoft Office的前身。
夏威夷大学的广播网叫做Aloha Net,解决了分布式的问题,Norm Abramson设计了一个简单的随即重传程序,解决了每个节点共享无线电频道。
在硬件方面,用coax cable(同轴电缆)接在oscilloscope(示波器)上面,一端发送方波,而另一端接收到的不是方波,于是加了一个digital threshold就可以变成方波了。对比特包编码用的是Manchester coding(曼彻斯特编码)。
Layer 2: Internet Protocol
The InterNetwork (IP)
本节主要对网际层IP的几个主要的协议进行讲解。
MAC地址由硬件厂商写在每一片网卡上,是唯一的不可更改。如果要在不同的地方实现连接网络,由此引用可分配的IP地址。IP地址格式为32位二进制,通常写成点分十进制格式,每八位为一组。IP地址格式由网络号和主机号构成,网络号标志标志主机(或路由器)所连接到的网络,主机号标志该主机。
动态主机配置协议DHCP:当一台计算机连接到一个新的网络中去的时候,路由器会自动给计算机分配一个IP地址。
网络地址转换NAT:在专用网连接到互联网的路由器上安装NAT软件,路由器上至少有一个有效的外部全球IP地址。当使用本地地址的主机和外部通信时,NAT路由器将其本地地址转换成全球IP地址。此方法节省了大量的IP地址。
专用地址(不可路由地址Non-Routable Addresses ):仅在机构内部使用的计算机由本机构自行分配其IP地址,只在本地有效。为10.0.0.0/8,172.16.0.0/12,192.168.0.0/16。规定在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
为了避免数据包一直在路由之间转发而到达不了目的地址,从而占用线路资源。Each IP packet has a field called “Time to Live” - TTL。
- Normal packets are sent with a Time to Live (TTL) of 255 hops
- Trace route sends a packet with TTL=1, TTL=2, ...
- So each packet gets part-way there and then gets dropped and traceroute gets a notification of where the drop happens
- This builds a map of the nodes that a packet visits when crossing the Internet.
Week 6 Technology: Transport Control Protocol (TCP)
Transport/Reliability
Transport Layer
TCP提供可靠交付的服务。发送方A向接收方B发送分组,当B收到分组后就向A发送确认,A收到上个分组的确认后再向B发送下个分组。若B收到的报文有错,就直接丢弃,A超过固定的时间没有收到B的确认就重新传送。因此,当A向B发送完一个分组后,会暂时保存已发送分组的副本,当收到B的确认后才清除副本。
随着越来越多的计算机接入到互联网,网络传输变得拥堵,然而,Van Jacobson发明的慢开始算法( the slow start algorithm)解决了网络拥塞的问题,后来成为TCP的重要部分。
Van Jacobson - Slow Start Algorithm
慢开始算法:当主机开始发送数据时,由于不清楚网络的负荷情况,如果立即把大量的数据字节诸如网络,有可能引起网络拥塞。所以要由小到大逐渐增大发送窗口。例如刚开始发送设置拥塞窗口为1,发送方A向接收方B发送1个报文,当A收到B的确认后,就把拥塞窗口加倍变成2,然后A就可以向B连续发送2个报文。每经过一个传输轮次(一个传输轮次的时间就是往返时间RTT),拥塞窗口就加倍。
The Domain Name System
DNS服务属于应用层,域名系统简单来说就是把互联网上的主机名字转换为IP地址。例如百度主页的IP是14.215.177.39,如果我要访问百度,不可能去记下它的复杂的IP地址,相比之下baidu.com更好记。然而路由器转发还是根据IP地址转发数据的,DNS则把域名转换为IP地址。
TCP Wrap Up
因为网际层IP不提供可靠的数据传输,由此运输层TCP要提供可靠交付的服务,要保证传送的数据无差错、不丢失、不重复,并且按序到达。
Week 7 Technology: Application Protocols
Layer 4: Applications
Application Layer
运输层TCP提供了面向字节流的全双工通信。在此层面上讲通信是一台主机中的一个进程与另一台主机的进程进行数据交换。然而区分不同的应用进程则靠端口,不同的应用进程使用不同的端口号。例如DNS端口号为53、FTP为21、HTTP为80。
超文本传输协议HTTP:当用户在浏览器的地址栏里输入要访问Web页的URI以后,HTTP的处理即会开始。HTTP中默认使用80端口。它的工作机制,首先是客户端向服务器的80端口建立一个TCP连接,然后在这个TCP链接上进行请求和应答以及数据报文的发送。
远程登陆TELNET:TELNET利用TCP的一条连接,通过这一条连接向主机发送文字命令并在主机上运行。本地用户好像直接与远程主机内部的Shell相连。
Van Jacobson - Content Centered Networking
在现在的分层的网络体系结构中,每层之间相互独立完成本层的工作。如果一个人要访问YouTube观看视频,那么YouTube的服务器把数据经过一个又一个路由发送到他的主机,而另外一个人要观看同样的视频,就要重复那样的过程。相同的数据一次又一次地在网络上传输,而对于链路层的物理线路来说,它们只负责传送一个又一个的比特信号,占用了大量的带宽。互联网的发展一直是基于原来的电话系统,人们制定协议建造底层硬件设施来提升网络带宽。当网络迅速发展,步入信息社会,当人们只关心信息本身,Van Jacobson提出以内容为中心的网络Content Centered Networking的概念,每个分组上包含地址、URI、端口等信息,用中央结构信息取代网络分层的体系结构。由此当第二个人获取视频信息时,请求数据在去信息源头的路上找到了视频信息就返回该视频信息,而不需要到达信息源头获取信息,节省时间和带宽。