TCP_IP教学大纲

《TCP/IP》教学大纲(学时 60课时 )一、课程的性质与任务本课程是嵌入式网络开发的基础课程之一,主要应用在网络程序的编写和网络结构的分析和网络服务的搭建和优化,学员必须熟悉linux 操作

《TCP/IP》教学大纲

(学时 60课时 )

一、课程的性质与任务

本课程是嵌入式网络开发的基础课程之一,主要应用在网络程序的编写和网络结构的分析和网络服务的搭建和优化,学员必须熟悉linux 操作系统,并且对C 语言熟悉。本课程主要从理论出发,以实践展示具体的实现和机制,使学员具备TCP/IP的网络应用、网络程序开发和维护的技能。

二、培训目标

使学员具备网络理论知识,熟悉网络开发环境,具备网络通讯程序的设计和编写能力。能够进行网络程序的总体设计和服务器应用软件的开发

三、课程内容、基本要求与学时分配

主要是对各项理论知识的掌握,并且利用已有的知识解决实际工作中遇到的问题,学员对各知识点要有不同的掌握程度(掌握;理解;了解)。

(一) 网络基本概念和计算机网络体系结构

1. 了解分层的意义,理解为什么使用层次管理计算机体系

2. 掌握TCP/IP的分层的结构和依托关系,理解在各个层次上的软件和硬件的具体实现

3. 了解互联网的地址,理解地址的分类和范围规定

4. 了解域名系统结构和域名的组成,掌握如何解析域名

5. 了解封装概念,理解头部封装和尾部封装的区别和各自的优缺点

6. 理解分用概念,理解多种分用的依据

7. 了解客户-服务器模型的两种形式,理解两种模型各自的服务方式和进程调度方法

8. 理解端口号和入口地址间的关系,理解系统为什么使用端口号分离服务

9. 理解RFC 概念,掌握如何获取最新的RFC

10. 了解应用编程接口,了解常见的应用程序编程接口的差异

(二) 链路层

1. 掌握以太网和IEEE 802封装以及之间8位的差异性

2. 掌握尾部封装的方法,了解常见的尾部封装的协议包

3. 了解SLIP (串行线路IP ),掌握SLIP 的包封装格式

4. 理解压缩的SLIP ,掌握压缩的SLIP 的包封装格式

5. 了解PPP :点对点协议,了解常见的PPP 协议设备以及掌握PPP 设备的拨号方式

6. 理解环回接口,掌握换回接口发送和接收数据的流程,理解IP 的输出和输入缓冲池

7. 理解最大传输单元MTU ,了解主机MTU 值的确定和发现

8. 理解路径MTU ,掌握使用应用程序发现路径MTU

9. 掌握串行线路吞吐量计算 4课时 2课时

,

(三) IP :网际协议

1. 理解IP 协议的封装形式和头部参数,掌握头部中各种参数的值项

2. 理解IP 路由选择的过程,了解IP 的选路机制

3. 理解子网掩码的含义,掌握使用子网掩码划分网络

4. 了解特殊情况的IP 地址,掌握特殊IP 地址的应用和分类

5. 掌握使用ifconfig 命令发现和修改网络配置参数

6. 掌握使用netstat 命令发现网络状态

7. 了解IP 的未来发展方向,了解多种IPV4升级方案的不同 2课时

(四) ARP :地址解析协议

1. 理解ARP 高速缓存的作用,掌握如何获取高速缓存数据

2. 了解ARP 的分组格式,

3. 掌握对不存在主机的ARP 请求时数据帧的发送和接收规则

4. 掌握ARP 高速缓存超时设置

5. 理解ARP 代理以及代理的应用环境

6. 掌握arp 命令,进行添加和删除arp 缓存和信息传递 1课时

(五) RARP :逆地址解析协议

1. 了解RARP 的分组格式

2. 理解反向地址解析协议的应用环境

3. 掌握RARP 服务器的设计 1课时

(六) ICMP :Internet 控制报文协议 2课时

1. 理解ICMP 的应用环境,了解ICMP 报文的类型,理解各种ICMP 报文的应用和结构

2. 掌握ICMP 地址掩码请求与应答的工作过程

3. 掌握ICMP 时间戳请求与应答的工作过程

4. 掌握ICMP 端口不可达差错的工作过程

5. 理解ICMP 报文的4.4BSD 处理,理解源程序的设计

(七) Ping 程序

1. 掌握使用C 语言进行网络探测程序ping 的编写,理解PING 程序的设计

2. 掌握PING 在LAN 、WAN 、线路SLIP 、拨号SLIP 上的输出

3. 理解IP 记录路由选项,掌握使用PING 程序获取路由信息,理解PING 获取路由的缺陷

4. 理解异常的PING 输出

5. 掌握IP 时间戳选项

(八) Traceroute 程序

1. 掌握使用Traceroute 程序进行路由跟踪

2. 掌握使用Traceroute 的局域网、广域网输出

3. 理解IP 源站选路选项和源站选路的优点和缺点

4. 掌握宽松的源站选路的traceroute 2课时 2课时

,

5. 掌握严格的源站选路的traceroute

6. 掌握宽松的源站选路traceroute 程序的往返路由

(九) IP 选路

1. 理解选路的原理和IP 选路的不确定性

2. 理解路由表的组成和编写简单路由表,掌握初始化路由表,编写较复杂的路由表

3. 理解没有到达目的地的路由的处理方式,掌握ICMP 主机与网络不可达差错、转发或不转发、

ICMP 重定向差错、ICMP 路由器发现报文的工作方法

4. 掌握路由器操作,掌握利用ROUTE 程序操作主机路由表

(十) 动态选路协议

1. 理解动态选路概念,理解路由器学习能力

2. 理解Unix 选路守护程序,掌握如何终止和开始守护程序

3. 理解RIP :选路信息协议的包格式,理解包中参数概念

4. 了解多种动态选路协议的不同和包格式(RIP 版本2,OSPF :开放最短路径优先,BGP :边

界网关协议,CIDR :无类型域间选路)

(十一) UDP :用户数据报协议 4课时 2课时 2课时

1. 掌握UDP 首部格式,掌握各种参数的含义和取值范围,理解校验和的产生和运算,理解UDP

校验和和IP 首部校验和的不同

2. 掌握使用tcpdump 应用程序抓取数据报并分析UDP 包的传输过程和IP 分片过程及原理

3. 掌握使用Traceroute 确定路径MTU 和采用UDP 的路径MTU 发现

4. 理解UDP 和ARP 之间的交互作用

5. 掌握确认最大UDP 数据报长度和ICMP 源站抑制差错

6. 理解UDP 服务器的设计原理

(十二) 广播和多播 2课时

1. 了解广播含义,了解广播的分类(受限的广播、指向网络的广播、指向子网的广播、指向所

有子网的广播),

2. 掌握如何实现广播和避免广播风暴的产生

3. 了解多播含义,掌握多播组地址结构

4. 掌握多播组地址到以太网地址的转换

5. 了解FDDI 和令牌环网络中的多播

(十三) IGMP :Internet 组管理协议 2课时

1. 理解组管理协议的包结构,掌握组管理协议的实现,掌握包头的分析和参数概念

2. 掌握IGMP 报告和查询

3. 理解生存时间字段和生存时间的运算

(十四) DNS :域名系统 2课时

,

1. 理解DNS 系统的概念和报文格式,掌握域名结构体

2. 理解域名系统的工作过程,应用服务程序实现DNS 服务

3. 理解DNS 查询报文中的问题部分、DNS 响应报文中的资源记录部分

4. 掌握指针查询,理解逆向查询的适用环境

5. 理解资源记录和高速缓存的形成,掌握如何高效利用高速缓存信息

6. 理解用UDP 还是用TCP 实现DNS 协议时遇到的问题和解决方法

(十五) TFTP :简单文件传送协议 1课时

1. 了解TFTP 的报文格式和传输方式

2. 理解该协议的安全以及应用环境

3. 掌握使用应用服务程序实现该服务协议

(十六) BOOTP: 引导程序协议和DHCP 动态主机配置协议 2课时

1. 了解BOOTP 的分组格式

2. 掌握BOOTP 服务器的设计,掌握如何使使用UDP 的BOOTP 穿越路由器

3. 了解DHCP 的分组格式

4. 理解DHCP 服务的工作过程,掌握DHCP 服务器的设计以及如何实现DHCP PROXY

5. 理解两种网络配置参数传送协议的差异,理解协议的跨路由传播方式,应用服务程序实现 (十七) TCP :传输控制协议 4课时

1. 理解TCP 协议的工作方式和首部字段

2. 掌握TCP 的双工、连接、可靠数据流等特性

3. 掌握状态变迁过程中的触发事件

4. 掌握服务器的设计和端口的操作

5. 掌握TCP 连接的建立与终止过程,以及发送包格式

6. 掌握使用tcpdump 的输出进行TCP 数据包的分析

7. 理解服务类型字段

8. 理解TCP 的全双工工作方式,以及如何实现半连接,检测半打开连接

(十八) TCP 的数据流 2课时

1. 理解实现交互数据流输入的Nagle 算法

2. 理解窗口的实现和探测

3. 理解成块数据流的传送过程和带宽吞吐量窗口大小通告

4. 掌握计算成块数据的吞吐量和带宽时延乘积

5. 了解拥塞的产生,了解如何使系统及线路避免拥塞

(十九) TCP 的超时与重传 2课时

1. 理解超时重传机制的实现方式

,

2. 掌握如何估算和探测超时时间,掌握定时器时钟嘀嗒的计算

3. 理解拥塞避免算法、快速重传与快速恢复算法

4. 理解TCP 的坚持定时器、TCP 的保活定时器

5. 了解TCP 的未来和性能路径[MTU发现,大分组还是小分组,长肥管道,窗口扩大,时间戳

选项,PAWS :防止回绕的序号]

(二十) SNMP :简单网络管理协议 1课时

1. 掌握网络管理协议的工作模式

2. 理解网络管理协议的包头格式

3. 理解管理信息结构、对象标识符、管理信息库基本概念

4. 了解SNMPv2的改进和安全性

5. 掌握snmp 包中实例标识、简单变量、表格、字典式排序、get-next 操作、表格的访问等操作 (二十一) Telnet和Rlogin :远程登录

1. 了解Rlogin 和Telnet 的报头格式

2. 掌握NVT 的工作过程,掌握使用应用服务程序实现远程登陆的服务器端和客户端

3. 理解客户的转义符使用,NVT 的工作原理

4. 理解选项协商、子选项协商的基本意义

5. 掌握半双工、一次一字符、一次一行或行方式的工作过程

(二十二) FTP:文件传送协议

1. 了解FTP 协议的包托格式和连接过程

2. 理解FTP 服务的多端口工作模式

3. 掌握FTP 服务器的搭建和客户端的命令操作

4. 理解临时数据端口和默认数据端口的分用依据

5. 理解使用NVT ASCII:文本文件传输

6. 理解匿名FTP 的构成和掌握使用匿名用户登录anonymous 服务器进行文件操作

(二十三) SMTP:简单邮件传送协议

1. 理解邮件传输协议的格式和工作模式

2. 理解邮件(信封、首部和正文)的组成和投递过程

3. 掌握使用服务软件实现主机间投递邮件和服务器的搭建

4. 掌握使用SMTP 命令在客户端发送和接收邮件

5. 理解中继代理和邮件交换的规则,理解邮件重新投递的重试间隔

(二十四) 网络文件系统

1. 理解网络文件系统得实现机制

2. 理解Sun 远程过程调用的产生背景和当前存在问题

3. 掌握服务器实现NFS 文件服务,了解NFS 的工作流程

4. 了解第3版的NFS 2课时 2课时 2课时 2课时

,

(二十五) TCP/IP软件体系结构

1. 了解TCP/IP协议的实现——操作系统实现

2. 掌握进程间通信的基本方式(信号灯,中断)

3. 掌握进程间的通信过程和进程状态的控制,掌握进程的创建和终止 4课时

4. 掌握几种通信机制的使用和算法实现计数信号灯(counting semaphores)、端口(ports)、消息传

递(message passing)

5. 掌握应用程序编程接口,berkeley software distribution UNIX 的Socket 接口、windows 的接

口定义winsock 接口、system V的接口定义TLI 接口

6. 理解进程的同步和互斥以及掌握同步和互斥采用的算法

7. 理解网络数据输入与输出的顺序

8. 理解系统调用的含义,掌握各种系统调用的不同以及调用的时序关系

9. 掌握用socket 实现并发服务器

10. 掌握如何调用操作系统外提供的库函数

(二十六) 程序设计

1. 理解插口程序的编写原则

2. 掌握进程、描述符和插口、socket 系统调用、socreate 等函数的使用

3. 掌握使用系统调用编写插口程序

4. 理解常见的网络层,传输层插口程序的设计

5. 掌握添加IP 和UDP 首部、IP 输出/输入、以太网输出/输入、UDP 输出/输入程序的编写 6课时

四、课程的其它教学环节(试验,全部在linux 平台下实现)

(一) 试验一:WWW 服务器的搭建和配置 4课时

理解客户-服务器的两种运行模式,理解端口,分用,网络地址的概念,掌握使用apache 搭建www 发布服务器和如何优化www 服务器

(二) 试验二:网络配置参数的探测和设定

理解网络配置参数的设定规则和获取,掌握使用实用程序设定

(三) 试验三:阅读、改进并编译ping 程序代码 4课时 2课时

理解PING 程序的工作原理,理解ICMP 报文的工作方式,掌握编写TCP/IP程序的基本原则

(四) 试验四:阅读、改进并编译Traceroute 程序代码

理解Traceroute 程序的工作原理,掌握使用Traceroute 程序探测路径

(五) 试验五:路由器操作 4课时 4课时

理解静态路由表和具有自动学习功能的动态路由更新的方式,掌握如何使用远程控制方式操作路由器选项,掌握修改主机路由表

(六) 试验六:使用代理服务器和NAT 方式实现网络互联 4课时

理解网络间数据包的传送和网关的作用,理解使用高层代理服务器和网络层网关的数据包转发技术的差异,掌握使用linux 自己的路由转发功能实现NAT 以及使用squid 实现代理服务器

,

(七) 试验七:域名系统的实现和维护 4课时

理解域名系统的现实应用,理解域的构成,掌握域名系统的工作方式,掌握使用名字服务守护程序bind 进行域的管理

(八) 试验八:DHCP 服务的配置和管理 4课时

理解DHCP 和BOOTP 协议的差异,理解DHCP 的工作过程中数据包的传送顺序,掌握使用守护程序建立DHCP 服务器和使用DHCP 客户端

(九) 试验九:使用sock 程序探测TCP 连接 4课时

理解sock 程序的组成,掌握使用sock 程序探测TCP 连接的建立和关闭,察看TCP 工作的双工状态和分析状态变迁

(十) 试验十:TFTP 和FTP 服务,以及存在的差异性 4课时

理解TFTP 和FTP 协议的不同,掌握使用TCP 和UDP 协议传送文件的工作方式的差异,理解FTP 使用双端口进行服务的优点,掌握使用FTP 和TFTP 服务器端以及客户端进行数据传递

(十一) 试验十一:SMTP 配置和管理 4课时

了解SMTP 的工作方式和邮件交换的规则,掌握建立SMTP 服务器的方式和如何使用SMTP 客户端

(十二) 试验十二:NFS 的配置与管理 4课时

理解网络文件系统得实现机制,掌握服务器实现NFS 文件服务,了解NFS 的工作流程,掌握如何在网络内共享文件

(十三) 试验十三:使用伪代码实现进程通信的思想 4课时

掌握进程间通信的基本方式(信号灯,中断),掌握进程间的通信过程和进程状态的控制,掌握进程的创建和终止,理解进程的同步和互斥以及掌握同步和互斥采用的算法,掌握使用伪代码的形式编写进程通信程序

(十四) 试验十四:编写网络层插口程序 4课时

掌握编写网络层程序的能力,理解网络层工作协议和上层以及下层沟通的接口,掌握如何控制IP 包的首部子段

(十五) 试验十五:编写传输层插口程序 6课时

掌握编写传输层程序的能力,理解传输层工作协议和上层以及下层沟通的接口,掌握如何控制传输层包的首部子段,特别要区分使用TCP 和UDP 的数据包的封装

五、说明

本课程需要部分网络设备,如防火墙、路由器、交换机、专业服务器、拨号上网条、ADSL 上网条件

1.本课程的先修课程为《LINUX 》、《C 语言程序设计》《计算机网络基础》

2.每课都附带试验,并且在整个课程结束后进行考试,可以采用开卷的形式。。

六、课程使用的教材和主要参考书

使 用 教 材: 《TCP/IP详解卷1:协议》W.Richard Stevens 著 机械工业出版社 出版社

,

主要参考书: 1.《高效配置TCP/IP》Gray Govanus 著 电子工业出版社 出版社

2.《TCP/IP详解卷2:实现》W.Richard Stevens 著 机械工业出版社 出版社

3.《TCP/IP详解卷3:TCP 事务协议、HTTP 、NNT 和UNI 域协议》W.Richard Stevens 著 机械工业出版社 出版社

教学大纲制订者:王占峰

2013年7月10日

标签: