第一讲 - 信息工程学院

advertisement
计算机网络
材料取自Berkeley老师的教案
1
课前小调查
• 请上过网的同学举手
• 猜猜看,本课程会讲什么有用的东西?你想学什么
– 网游软件怎么编写
– QQ软件怎么编写
– IE浏览器怎么编写
– 如何建立一个网站
– 如何成为一个网络HACKER
2
今天内容
• 课程概要
– 主题
– 课程问题
– 大作业
– 规矩
休息
• 四个基本问题
– 网络课程为何如此可怕?
– 今天学习网络为何重要?
– 网络为何如此迷人?
– 网络为什么这么难?
3
两种讲法
• 一、电子工程系(EE)老师
– 强调各种链接技术, 无线网, 通信理论(网络仿真项目)
 没有系统程序设计
• 二、计算机软件(CS) 老师
– 更强调Internet架构, 应用, 及现实世界中实践 (编程项目)
 (几乎) 没有数学, 没有仿真
• 选择合适的课程!
4
本课程关注Internet
• 多种通信网络
– 电话网
– 手机网
– 监控及数据获取网络
– 帧中继网
(用在非IP设备上的钱更多)
• 只有Internet才与计算机科学相关
– 当计算机用其他网络来实现基于IP的通信时, 他们是
Internet的一部分!
– 因特网不是网络“技术”, 是将网络连接在一起的方案!
(Internet)
5
课程概要
6
本课程将学到什么?
• 洞悉: 网络重要概念
– 路由一个包有些什么不同的方式?
– 什么是拥塞控制?
• 知识: Internet如何工作
– IP是什么样的?
– 一个打字错误如何在Internet上变成三个?
• 技能: 网络编程
– 套接字(Socket)编程
– 协议的设计与实现
7
专注于Internet
• Internet“架构”之核心:
– IP, DNS, BGP
• 其他Internet相关核心技术
– 底层技术: 以太网Ethernet, 无线网wireless…
– 高层技术: TCP, HTTP, 应用.…
– 组件技术: 交换switches, 路由routers, 防火墙firewalls,…
• 不讲非核心的Internet网络技术
– 如, 传感器网络,底层编码,无线电技术
– 当然,并不是说这就不有趣
8
将学习不同的方面
• 各种抽象层
– 基本概念vs实际协议
• 各种地理范围:
– LAN vs WAN vs Interdomain
• 各种概念和方法:
– 架构 vs 协议 vs 算法
• 功能的各方面:
– 不同的层Layers关注不同的任务
9
Internet: 多层沙漏模型
10
课程讲法
• 大多数网络课程按层来组织:
– 自顶向下 (K&R)
– 自下而上 (P&D)
• 本课程为何不这样做?
– 主要差别不在功能在何处实现
– 而在于基本概念与实际实现
– 如果按层讨论,两者是同时的
• 最重要的是讲授基本概念
– 实现需要将这些思想赋予行动(实践)
– 但不希望迷失于细节的海洋
11
课程结构 (前半部分)
• 总体介绍(三讲)
– 网络类型
– 基本设计原则
• 理想化的网络视角(四讲)
– 关注基本概念
– 忽略所有现实世界中不愉快的内容
• 实际实现此视角(五讲)
– IP、TCP、UDP、WEB
– 强调概念,同时处理不愉快的现实
12
基本概念问题
• 如何从源到目标发送包?
• 如何在不可靠的网络上构建可靠的传输?
• 如何在包传递接口之上构建应用?
• 如何管理这样的网络?
• 如何协调一组竞争的ISPs?
13
课程结构 (后半部分):各种主题
• 拥塞控制 …
• 高级路由
• 多播与QoS
• 以太网
• 无线网
多点访问
• 软件定义的网络
15
期中之后第一讲
• 90分钟重新设计Internet
• 探究将“位”从一台主机传到另一台的任务
– 地址是怎样的?
– 网络安全问题, 如何解决?
– ….
• 将讨论可能的替代方案,并得到设计
• 问题: 你认为我们将弄出一个比当今的Internet更好
的设计吗?
16
本课程有太多的困难
• 教师的风格:(以下所讲是BERKELEY老师的)
– 并非适合所有的学生
• 课程结构
– 书本
– 大作业
• 网络本身的特性
– 讲义的第二部分来讲
17
较少视觉传达
• “大量使用黑板. 图画得不好. 并且都不全逻辑.”
• “For the love of god, use more pictures and
diagrams.”
• 不打算变成黑板画师virtuoso 或者动画精灵
• 找助教要图片
• 将尝试其他视觉方式
– Watch for our re-enactment of reliable transport…..
18
When you look bored, I speed up
• “Pace gets faster if no one asks questions.”
• 如果感觉无趣, 可以小睡一会 (at your peril)
• 如果不知身在何处, 请提问!
– Or just yell “HELP!”
19
本人讨厌细节
• “困难问题快快过,基本问题慢慢说”
• 将努力详细讲述示例
20
无法总是参与课堂
• “他问问题,但没有人回答”
• 尝试 “参与式学习”
– Using index cards
– Used by Patterson & Katz in 61c
• 探索其他参与课堂的方式
• 但, 问问题不是寻求答案…..
21
问问题是想让你思考!
• 问题之后的短暂停留是想让你思考
– 当我问问题时,不一定要你回答
– 但请一定, 思考该问题!
• 理解网络(其他也一样)的最佳方式是首先 想办法
自己解决设计的问题
– 然后,当前的方案将显得更合理易懂
• 设计不是原理, 只是机运
– 无法“追随逻辑”, 只能自己去设计
22
记不住大家的名字
• Prosopagnosia (as described by Oliver Sacks)
• 我的情况是, 不是记不住脸,只是不能把名字和脸联
系起来
• 不用太紧张….
– 50% 以上的老师都无法把名字和脸联系起来
23
课本无用
• “Book is worthless and not used.”
• 如我们后面要讨论的原因, 网络是一个非常验证教的
领域. 课本不能做到伟大great, 但已经足够好了.
• 仅供参考, 及作为示例的来源
– 其细节我们会忽略? 自己去读
• 没有讲过的内容不考试
24
大作业与所讲材料无关
• “project boring, unrelated to course”
• “relate project to lectures”
• 完全重新设计了大作业.
– 更少关注系统程序
– 更加关注实现的协议
– 和课程内容更加相关
• 所有程序用Python编写
– 可以边用边学
– 程序复杂性有限
25
不要成为一个被动听众!
• 问问题!
– 帮助老师,知道什么地方没讲清楚
– 防止老师讲得太快
• 当老师问问题时, 不一定需要回答, 但请一定 思考该
问题!
– 老师的问题是想让你思考,而不是被动的听
– 这些问题可能会出现在考试题中!
• 理解网络的最佳方式是首先 尝试自己解决设计中的
问题
– 那么,前人的解决方案可能更好懂一些
26
请寻求帮助!
• 即使最优秀的同学也不可能理解所有的内容
– 这是老师的错, 但你们需要寻求帮助
• 来办公室, 预约, e-mail
– 或者课间休息!
• 尽早提出你们的建议/抱怨/反馈
27
教材与参考书
• 教材
– J. Kurose and K. Ross, Computer Networking: A Top-Down
Approach, 5th Edition, Addison Wesley, 2010.
 跳过很多内容, 更多的是作为参考书,而不照书念
 第4版也可用, 但需要转换作业
• 推荐资源:
– W. R. Stevens, B. Fenner, A. M. Rudoff, Unix Network
Programming: The Sockets Networking API, Vol. 1, 3rd Ed.,
Addison-Wesley, 2004.
– W. R. Stevens, TCP/IP Illustrated, Volume 1: The Protocols,
Addison-Wesley, 1993.
28
三个大作业
• 大作业1:可靠的传递(在简单的模拟器中)
• 大作业2:路由(在简单的模拟器中)
• 大作业3:在家用路由器中添加功能
– 较大的项目,还在设计阶段
– 将在你自己的插座(Plug)计算机中实现
– 这个是MARVELL公司的新产品哦!
29
课程强度
• 三个大作业
• 四个家庭作业
• 考试
– 期中
– 期末
– 闭卷, 开纸
30
评分
作业
20% (5% each)
大作业
40% (20+20)
期中考试
15%
期末考试
25%
• 课程平均得分B
–
≈
–
–
得B较容易, 但得A或C较难
10% A, 15% A-, 15% B+, 20% B, 15% B-, 15% C+, 10% C
A+ 保留给超级巨星 (每个班1 到 2 位同学)
Mean can shift up for an excellent class
 For which the TAs have significant input
31
背景知识
• 能进行抽象思维
– 懂基本概率
• 背景材料不在讲义中
32
禁止作弊
• 作弊: 作业不是你自己完成的
• 和其他同学讨论作业是必要的
– 但只是一般的概念, 而非手册
• 不要拷贝,不要Google, 不要”摆渡”等.
– 如果不明白,请提问.
• 将使用自动相似性测试
• Don’t be an idiot….
33
休息5分钟
Questions Before We Proceed?
34
四个问题
• Why are networking courses so terrible?
• Why is it important to study networking?
• Why is this an exciting time for networking?
• Why is networking so hard?
35
1、网络课程为何 suck(恶心)?
• 原因1:基本Internet结构自从35年前发明出来后一
直未变
– 就算是IPv6也和IP非常象
• 不能在实验室中测试Internet结构, 甚至没有试验床
(testbed)
– 因此,只能理解目前所拥有的
• 在教历史, 而非原理
– 将学习 “首次试验first tries”,而非 “根本答案”
– 正如在操作系统课程中教MS-DOS
36
差劲地网络课程, continued….
• 原因2: 网络缺乏智能框架
• Internet的发明人定义了非常聪明的方案
– 此后,社区主要关注于实现此方案的协议
• 研究社区无法提供理解协议的总体架构
• 因此,我们只是讲授一大堆协议
– 而让你自己去感受它
37
原因3:引自John Day (Internet pioneer)
There is a tendency in our field to believe that
everything we currently use is a paragon of
engineering, rather than a snapshot of our
understanding at the time. We build great
myths of spin about how what we have done
is the only way to do it to the point that our
universities now teach the flaws to students
(and professors and textbook authors) who
don't know better.
38
我的目标:努力克服这些问题
• 尽一切可能聚焦于 “基本问题”
– 并将在几讲中来展示替代方案
• 将不得不学习目前的设计
– 但,将指出何处是有缺陷的
• 结果是, “大图景” 和“现代设计细节”的混合物
39
2: 学习网络为何重要?
• 巨大的影响力
• 新的策略New paradigm
• 未解决的挑战
40
因特网具有重大影响力
• Internet改变信息获取方式
– Web, search engines
• Internet 改变了人际关系
– Email, facebook(人人), twitter(新浪微博)
• 你会选择谁?
– 不上网的计算机 (独立PCs)
– 没有计算机的Internet (or really old ones)
41
INTERNET引入了新的模式
• 和电话网完全不同的应用
• 发明人克服了强大的技术和商业阻力来实现其梦想
• 真实的“求异思维”成功故事
• 设计多路复用(Statistical multiplexing?)
• 临时性布署( Ad hoc deployment )
• 自主策略(Autonomous policies)
42
智能挑战
• 连接两台计算机很简单
– 设计Internet怎么就变得困难了呢?
• Internet必须适应无法预知的规模, 多样性及动态范
围
– 本课程后面会讲….
43
还有很多未解决的挑战
• 安全
– 基础结构的安全
– 用户的安全
• 可用性
– Internet具有很强的适应性
– 但对于重要应用其可用性不足
• 演化
– 改变Internet结构太难
44
3、为何网络是一个激动人心的时刻?
• “结构”不会改变,但如何构建和管理会变
• 工业已经封闭,封建
• 但我们在革命的前沿,工业硬件使我们上路,运用
抽象和模块化等系统原理开发智能(且实用)的框
架
• 完全公开:作者在此领域有一个创业公司
• 但实现决定于其他任何人
45
4、网络为何困难?
• 设计互联网面临很多挑战,这比只是在线上传送比
特要困难很多
• 这些困难中哪些适用于电话网呢?
46
规模
Two Billion Internet 用户
47
动态范围
• 回路时间 (延时) 从10微秒到秒
– 5 个数量级范围
• 数据率 (带宽) 从 kbps 到 10 Gbps
– 7 个数量级范围
• 网络上的排队延时从0到秒级
• 丢包 从 0 到 90+%
• …..
48
终端系统的多样性
• 手机(cell phones)
• 超级计算机集群(supercomputer clusters )
• 平板电脑
• 电视
• 游戏机
• 网络摄像机
• 小汽车
• 传感设备
• 像框。。。
49
应用需求的多样性
• 传递内容大小
• 双向性 (或否)
• 延时敏感 (或否)
• 容忍抖动 (或否)
• 容忍丢包 (或否)
• 需要可靠性 (或否)
• 多点 (或否)
• …..
50
(Ad hoc )临时性部署
• 不能假定仔细规划的布署
– 网络必须能在未规划的环境中工作
51
网络包括很多组件
连接线
接口
光缆
以太网卡
交换机/路由器
大型路由器
无线网卡
同轴电缆
电话交换机
52
所有这些都可能失效….
• 问题: 假定通信涉及50个组件,而这些组件99%的时间都能
正确工作(独立地)。在某个给定的时间点上通信失败的可
能性是多少?
• 答案: 成功要求所有的都正常工作, 因此失败可能性 = 1 - 0.9950 =
39.5%.
• 必须设计出期待失败的系统
• Why is the Internet like a 12-step program?
53
贪婪
• 有些贪婪的人,正盯着你,他们想要:
– 偷你的数据
– 用你的计算机实施攻击
• 存在一个繁荣的地下经济:来危害你的计算机和财
务信息
54
55
56
心怀恶意的Malice
• 有些心怀来意的人在哪里盯着你,他们想:
– 让你们的系统down及偷你的数据
• When attacker is a nation-state, attacks are far
harder to stop
– 很多防护技术都涉及阻止过去见过的攻击方式
– 但nation-states可使用新的攻击组合(向量)
57
光速
• 问题: 光从武汉到北京要多长时间?
• 答案:
– 武汉  北京距离: 1,000 km
– 光速 300,000 km/s: 3.33 msec
58
网络延时
• 问题: 从武汉到北京发一个Internet “包” 花多长时
间?
• 答案:
– 肯定  3.3 msec
– 依赖于:
 The route the packet takes (could be circuitous!)
 The propagation speed of the links the packet traverses
• E.g., in optical fiber light propagates at about 2/3 C
 The transmission rate (bandwidth) of the links (bits/sec)
• and thus the size of the packet
 Number of hops traversed (store-and-forward delay)
 The “competition” for bandwidth the packet encounters
(congestion). It may have to sit & wait in router queues.
– In practice this boils down to:
  40 msec
59
Implications for Networking
• Question: how many cycles does your PC execute
before it can possibly get a reply to a message it
sent to a New York web server?
• Answer:
– Round trip takes  80 msec
– PC runs at (say) 3 GHz
– 3,000,000,000 cycles/sec*0.08 sec = 240,000,000 cycles
= An Eon
– Communication feedback is always dated
– Communication fundamentally asynchronous
60
即使对于局域网也是问题
• 问题: 对于直接连接的机器会如何 (通过局域网或
LAN)?
• 解答:
% ping www.icir.org
PING www.icir.org (192.150.187.11): 56 data bytes
64 bytes from 192.150.187.11: icmp_seq=0 ttl=64 time=0.214 ms
64 bytes from 192.150.187.11: icmp_seq=1 ttl=64 time=0.226 ms
64 bytes from 192.150.187.11: icmp_seq=2 ttl=64 time=0.209 ms
64 bytes from 192.150.187.11: icmp_seq=3 ttl=64 time=0.212 ms
64 bytes from 192.150.187.11: icmp_seq=4 ttl=64 time=0.214 ms
• 200 微秒 = 600,000 周期
– 同样是很长的时间 …
– … 并且异步
61
小结
• The Internet is a large complicated system that
must meet an unprecedented variety of challenges
– Scale, dynamic range, diversity, ad hoc, failures,
asynchrony, malice, and greed
• An amazing feat of engineering
– Went against the conventional wisdom
– Created a new networking paradigm
• In hindsight, some aspects of design are terrible
– Will revisit when we do the clean slate design
– But enormity of genius far outweighs the oversights
62
下一讲
• 阅读Kurose/Ross书1.1-1.3
• 学习一下Python
63
Download