中国科学技术大学

网络程序设计

图片
课程概述

本课程通过理论与实践让您知道互联网是怎么工作的。理论部分通过互联网基础知识和关键机制简述,包括

DNS Naming,IP Networking,L2 Switching,TCP Overview等,让您了解我们每天都在使用的互联网网络体系结构以及理解为什么如此设计;实践部分通过Socket编程和协议设计来理解组成互联网的那些协议栈是怎样被编码实现的以及网络服务器的性能评估和权衡,更进一步我们思考如何在可能的范围内改造网络体系结构促进互联网的演化和发展。


成绩要求

SPOC暂不支持证书


通过本课程至少完成如下工作:

  1. 小实验独立完成;

  2. 至少要认领并分享一次讨论中提到的学习研究内容;

  3. 选择一个课程项目并demo作为考核内容。

预备知识

《C语言》和《计算机网络》

授课大纲
  • 配置Linux实验环境(建议下载VMware Player和Ubuntu12.04虚拟机压缩包)并完成实验一,即编写一个TCP服务器和客户端,实现当客户端向服务器发送hello消息时,服务器回应hi消息。

  • 讨论:通过浏览器键入http://www.ycombinator.com/回车到页面显示YC的内容,这个过程中发生了什么?

    • DNS Naming

    • IP Networking

    • L2 Switching

    • TCP Overview

    • TCP Understanding

  • 分析stream并完成实验二,即基于stream实现发送和回传hello和hi

  • 分析服务器并发处理策略并完成实验三,即基于多线程或I/O复用技术实现TCP服务器完成hello和hi的请求响应功能。

  • 阅读并讨论:互联网架构的设计哲学V1.0

    • 互联网架构设计的核心目标是开发一种能够将现存不同类型的网络互连起来充分利用(复用)的有效技术。

    • 互联网架构设计的具体目标

      • 1) 面临故障时的通信生存能力;

      • 2) 支持多种类型的通信服务;

      • 3) 支持不同类型网络的接入;

      • 4) 支持资源的分布式管理;

      • 5) 要考虑成本效益因素;

      • 6) 主机接入互联网的代价要低;

      • 7) 支持网络资源的计费统计。

    • 互联网架构设计的成功是基于特定优先次序的设计目标来认定的,而设计者优先考虑的并不是满足实际用户的需要,因此互联网需要不断演化来满足实际用户的需要。

  • 课程项目

    • 构造一个1G的文件通过网络传输(为了简便期间统一实验环境为服务器和客户端在同一台机器上,机器为1G内存单核CPU20G硬盘的VMware Linux虚拟机),保证文件传输无差错,以传输时间最少为100分,等比减少到60分,未完成的为不及格,现场运行测试接受大家质疑,网络协议在IP之上任选或自行设计。传输10次取平均。



参考资料
常见问题
  • 如何获得课程密码?

    中国科大软件学院选修本课程的同学会在授课现场获得密码

  • 校外人员可以参与学习吗?

    欢迎没有选修本课程的本校学生和方便的外校学生旁听课程,授课地点苏州仁爱路188号思贤楼211A室,2014年11月28日起每周五下午两点和周六上午8点,持续8周,课程资料可以通过往年课程中查找获取。限于课程管理负担谢绝没有选修本课程的本校学生和校外人员进入该课程。

  • 本课程会做成MOOC吗?

    如果您希望本课程做成MOOC请通过下方意见反馈告知。