620 likes | 739 Views
计算机网络. 材料取自 Berkeley 老师的教案. 课前小调查. 请上过网的同学举手 猜猜看,本课程会讲什么有用的东西?你想学什么 网游软件怎么编写 QQ 软件怎么编写 IE 浏览器怎么编写 如何建立一个网站 如何成为一个网络 HACKER. 2. 今天内容. 课程概要 主题 课程问题 大作业 规矩 休息 四个基本问题 网络课程为何如此可怕 ? 今天学习网络为何重要? 网络为何如此迷人 ? 网络为什么这么难 ?. 两种讲法. 一、 电子工程系 ( EE ) 老师 强调各种链接技术 , 无线网 , 通信理论 ( 网络仿真项目 )
E N D
计算机网络 材料取自Berkeley老师的教案
课前小调查 请上过网的同学举手 猜猜看,本课程会讲什么有用的东西?你想学什么 网游软件怎么编写 QQ软件怎么编写 IE浏览器怎么编写 如何建立一个网站 如何成为一个网络HACKER 2
今天内容 • 课程概要 • 主题 • 课程问题 • 大作业 • 规矩 休息 • 四个基本问题 • 网络课程为何如此可怕? • 今天学习网络为何重要? • 网络为何如此迷人? • 网络为什么这么难?
两种讲法 • 一、电子工程系(EE)老师 • 强调各种链接技术, 无线网, 通信理论(网络仿真项目) • 没有系统程序设计 • 二、计算机软件(CS) 老师 • 更强调Internet架构, 应用, 及现实世界中实践 (编程项目) • (几乎) 没有数学, 没有仿真 • 选择合适的课程!
本课程关注Internet • 多种通信网络 • 电话网 • 手机网 • 监控及数据获取网络 • 帧中继网 (用在非IP设备上的钱更多) • 只有Internet才与计算机科学相关 • 当计算机用其他网络来实现基于IP的通信时, 他们是Internet的一部分! • 因特网不是网络“技术”, 是将网络连接在一起的方案! (Internet) 5
本课程将学到什么? • 洞悉:网络重要概念 • 路由一个包有些什么不同的方式? • 什么是拥塞控制? • 知识: Internet如何工作 • IP是什么样的? • 一个打字错误如何在Internet上变成三个? • 技能:网络编程 • 套接字(Socket)编程 • 协议的设计与实现
专注于Internet • Internet“架构”之核心: • IP, DNS, BGP • 其他Internet相关核心技术 • 底层技术: 以太网Ethernet, 无线网wireless… • 高层技术: TCP, HTTP, 应用.… • 组件技术: 交换switches, 路由routers, 防火墙firewalls,… • 不讲非核心的Internet网络技术 • 如, 传感器网络,底层编码,无线电技术 • 当然,并不是说这就不有趣
将学习不同的方面 • 各种抽象层 • 基本概念vs实际协议 • 各种地理范围: • LAN vs WAN vs Interdomain • 各种概念和方法: • 架构 vs 协议 vs 算法 • 功能的各方面: • 不同的层Layers关注不同的任务
课程讲法 • 大多数网络课程按层来组织: • 自顶向下 (K&R) • 自下而上 (P&D) • 本课程为何不这样做? • 主要差别不在功能在何处实现 • 而在于基本概念与实际实现 • 如果按层讨论,两者是同时的 • 最重要的是讲授基本概念 • 实现需要将这些思想赋予行动(实践) • 但不希望迷失于细节的海洋 11
课程结构 (前半部分) • 总体介绍(三讲) • 网络类型 • 基本设计原则 • 理想化的网络视角(四讲) • 关注基本概念 • 忽略所有现实世界中不愉快的内容 • 实际实现此视角(五讲) • IP、TCP、UDP、WEB • 强调概念,同时处理不愉快的现实
基本概念问题 如何从源到目标发送包? 如何在不可靠的网络上构建可靠的传输? 如何在包传递接口之上构建应用? 如何管理这样的网络? 如何协调一组竞争的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
不要成为一个被动听众! • 问问题! • 帮助老师,知道什么地方没讲清楚 • 防止老师讲得太快 • 当老师问问题时, 不一定需要回答, 但请一定 思考该问题! • 老师的问题是想让你思考,而不是被动的听 • 这些问题可能会出现在考试题中! • 理解网络的最佳方式是首先尝试自己解决设计中的问题 • 那么,前人的解决方案可能更好懂一些
请寻求帮助! • 即使最优秀的同学也不可能理解所有的内容 • 这是老师的错, 但你们需要寻求帮助 • 来办公室, 预约, e-mail • 或者课间休息! • 尽早提出你们的建议/抱怨/反馈
教材与参考书 • 教材 • 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.
三个大作业 • 大作业1:可靠的传递(在简单的模拟器中) • 大作业2:路由(在简单的模拟器中) • 大作业3:在家用路由器中添加功能 • 较大的项目,还在设计阶段 • 将在你自己的插座(Plug)计算机中实现 • 这个是MARVELL公司的新产品哦!
课程强度 三个大作业 四个家庭作业 考试 期中 期末 闭卷, 开纸 30
评分 • 课程平均得分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
背景知识 • 能进行抽象思维 • 懂基本概率 • 背景材料不在讲义中
禁止作弊 • 作弊: 作业不是你自己完成的 • 和其他同学讨论作业是必要的 • 但只是一般的概念, 而非手册 • 不要拷贝,不要Google, 不要”摆渡”等. • 如果不明白,请提问. • 将使用自动相似性测试 • Don’t be an idiot….
休息5分钟 Questions Before We Proceed?
四个问题 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
差劲地网络课程, 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.
我的目标:努力克服这些问题 • 尽一切可能聚焦于 “基本问题” • 并将在几讲中来展示替代方案 • 将不得不学习目前的设计 • 但,将指出何处是有缺陷的 • 结果是, “大图景” 和“现代设计细节”的混合物
2: 学习网络为何重要? 巨大的影响力 新的策略New paradigm 未解决的挑战 40
因特网具有重大影响力 • Internet改变信息获取方式 • Web, search engines • Internet 改变了人际关系 • Email, facebook(人人), twitter(新浪微博) • 你会选择谁? • 不上网的计算机 (独立PCs) • 没有计算机的Internet (or really old ones)
INTERNET引入了新的模式 • 和电话网完全不同的应用 • 发明人克服了强大的技术和商业阻力来实现其梦想 • 真实的“求异思维”成功故事 • 设计多路复用(Statistical multiplexing?) • 临时性布署( Ad hoc deployment ) • 自主策略(Autonomous policies)
智能挑战 • 连接两台计算机很简单 • 设计Internet怎么就变得困难了呢? • Internet必须适应无法预知的规模, 多样性及动态范围 • 本课程后面会讲….
还有很多未解决的挑战 • 安全 • 基础结构的安全 • 用户的安全 • 可用性 • Internet具有很强的适应性 • 但对于重要应用其可用性不足 • 演化 • 改变Internet结构太难
3、为何网络是一个激动人心的时刻? • “结构”不会改变,但如何构建和管理会变 • 工业已经封闭,封建 • 但我们在革命的前沿,工业硬件使我们上路,运用抽象和模块化等系统原理开发智能(且实用)的框架 • 完全公开:作者在此领域有一个创业公司 • 但实现决定于其他任何人
4、网络为何困难? • 设计互联网面临很多挑战,这比只是在线上传送比特要困难很多 • 这些困难中哪些适用于电话网呢?
规模 Two Billion Internet 用户
动态范围 • 回路时间 (延时) 从10微秒到秒 • 5 个数量级范围 • 数据率 (带宽) 从 kbps 到 10 Gbps • 7 个数量级范围 • 网络上的排队延时从0到秒级 • 丢包从 0 到 90+% • …..
终端系统的多样性 • 手机(cell phones) • 超级计算机集群(supercomputer clusters ) • 平板电脑 • 电视 • 游戏机 • 网络摄像机 • 小汽车 • 传感设备 • 像框。。。
应用需求的多样性 • 传递内容大小 • 双向性 (或否) • 延时敏感 (或否) • 容忍抖动(或否) • 容忍丢包 (或否) • 需要可靠性 (或否) • 多点 (或否) • …..
(Ad hoc )临时性部署 • 不能假定仔细规划的布署 • 网络必须能在未规划的环境中工作