《TCP/IP网络程序设计(TCP/IP Network Programming)》教学大纲
制定时间:2025年 4月
一、课程基本信息
(一)适用专业:计算机科学与技术专业
(二)课程代码:3DX1032A
(三)学分/课内学时:2学分/32学时
(四)课程类别:专业教育
(五)课程性质:必修/理论课
(六)先修课程:C语言程序设计、面向对象程序设计方法、数据结构、计算机网络
(七)后续课程:网络安全攻防、网络安全技术
二、课程教学目标
《TCP/IP网络程序设计》课程是计算机科学与技术专业的一门专业课。本课程的任务是:通过本课程教学,使学生掌握网络编程的基本理论和在windows环境下网络套接字编程的基本方法,掌握基于套接字的服务器端和客户端设计、基于TCP/IP编程的方法和应用。该课程在学生学习了C语言程序设计、面向对象程序设计方法、数据结构、计算机网络等课程后,为学生学习后续移动通信等课程,并为将来从事计算机网络方面的工程技术工作和研究开发工作打下技术基础。
(一)具体目标
目标1:
按TCP/IP网络编程这条主线组织教学,以使学生能够全面、系统地掌握理解和掌握windows环境下的利用C语言或C++语言实现网络编程的方法、流程、技巧和工具,提高学生正确认识问题、分析问题和解决问题的能力。
目标2:
按循序渐进、由浅入深的原则,系统理解掌握TCP/IP协议模型、掌握套接字编程方法,培养学生探索未知、追求真理、勇攀科学高峰的责任感和使命感。
目标3:
理解IP报文分段与重组的处理过程,了解常用数据结构,了解网络协议,包括IP协议、ICMP协议、FTP协议、TCP协议等,能使用网络编程解决具体需求。
(二)课程目标与毕业要求的对应关系
毕业要求 |
毕业要求指标点 |
课程目标 |
教学单元 |
评价方式 |
5.能够针对计算机应用系统的复杂工程问题,开发、选择与使用恰当的技术、资源、现代工程工具和信息技术工具,实现网络程序设计,理解其局限性。 |
指标点5.3:能够选择和使用适当的技术手段、现代工程工具和信息技术工具,对工程问题进行预测与模拟,解决计算机网络应用过程中遇到的网络工程及网络安全问题。 |
目标1 目标2 目标3 |
利用C语言或C++语言实现网络编程、网络编程实例应用 |
实验、期末考核 |
三、教学内容与方法
(一)教学内容及要求
序 号 |
教学单元 |
教学内容 |
学习产出要求 |
推荐学时 |
推荐教学方式 |
支撑 课程目标 |
备注 |
1 |
网络编程基础 |
网络编程相关的基本概念, 三类网络编程,客户机/服务器交互模,P2P模式 |
了解网络编程相关的基本概念和 三类网络编程, 理解客户机/服务器交互模和P2P模式,提高学生正确认识问题、分析问题和解决问题的能力 |
2 |
讲授 |
目标1 目标2 目标3 |
|
2 |
Socket编程基础 |
Socket网络编程接口的产生与发展、Socket的工作原理和基本概念、Socket编程基础、面向连接的Socket编程、面向非连接的Socket编程;Socket选项设置 |
了解Socket网络编程的发展,理解Socket的工作原理和基本概念、掌握Socket编程基础,掌握面向连接的Socket编程,理解面向非连接的Socket编程 |
2 |
讲授 案例 |
目标1 目标2 目标3 |
|
3 |
本地网络信息及在线设备探测 |
本地网络在线设备主机名、IP、域名等信息获取函数,基于ICMP协议的Socket编程 |
理解本地主机信息、网络配置信息;掌握获取本地及远程主机IP、域名、DNS信息的相关函数;掌握基于ICMP协议的Socket编程 |
2 |
讲授 案例 |
目标1 目标2 目标3 |
|
4 |
高级socket编程技术 |
多线程、阻塞模式、非阻塞模式socket编程;Windows线程;几种重要的Windows Socket编程模型。 |
掌握多线程、阻塞模式编程方式和非阻塞模式socket编程方法;掌握基于Select模型的Socket编程;掌握基于WSAAsyncSelect模型的Socket编程;掌握基于WSAEventSelect模型的Socket编程;理解重叠I/O模型的Socket编程;理解基于完成端口模型的Socket编程 |
4 |
讲授 案例 |
目标1 目标2 目标3 |
|
5 |
WinPcap编程 |
WinPcap的体系结构、捕获数据包的原理和步骤 |
掌握基于WinPcap的数据捕获方法 |
2 |
讲授 案例 |
目标1 目标2 目标3 |
|
6 |
原始套接字编程 |
原始套接字基本概念、使用原始套接字构造并发送数据 |
掌握数据链路层原始套接字、网络层原始套接字编程方法 |
2 |
讲授 案例 |
目标1 目标2 目标3 |
|
7 |
OpenSSL 编程 |
SSL的握手过程、OpenSSL概况、SSL套接字 |
掌握安全套接层协议SSL通信方法 |
2 |
讲授 案例 |
目标1 目标2 目标3 |
|
8 |
实验1 |
TCP客户端编程 |
学习SOCKET编程基础,掌握Winsock主要库函数 |
2 |
实验 |
目标1 |
|
9 |
实验2 |
TCP服务器端编程 |
学习SOCKET编程基础,掌握Winsock主要库函数,实现客户端与服务器端的通信 |
2 |
实验 |
目标1 |
|
10 |
实验3 |
UDP通信 |
实现UDP客户端与服务器端通信 |
2 |
实验 |
目标1 |
|
11 |
实验4 |
基于多线程的Socket编程 |
学习windows多线程及基于多线程的SOCKET编程基础 |
2 |
实验 |
目标1 |
|
12 |
实验5 |
基于重叠I/O模型的Socket编程 |
掌握重叠I/O模型及其编程实现 |
2 |
实验 |
目标1 |
|
13 |
实验6 |
数据捕获 |
掌握基于WinPcap的网卡信息显示及数据捕获方法 |
2 |
实验 |
目标1 |
|
14 |
实验7 |
Ping命令实现 |
掌握基于原始套接字实现ping命令的方法 |
2 |
实验 |
目标1 |
|
15 |
实验8 |
加密通信 |
掌握基于OpenSSL的加密通信方法 |
2 |
实验 |
目标1 |
|
(二)教学方法
1.课堂讲授
(1)采用启发式教学,激发学生主动学习的兴趣,培养学生独立思考、分析问题和解决问题的能力,融入课程思政内容,引导学生主动通过实践和自学获得自己想学到的知识。
(2)在教学内容上,系统讲网络编程的基本理论、各种网络编程的工作原理和程序设计及实现的基本方法。使学生具备运用C/C++语言设计语言实现网络编程的能力。
(3)在教学过程中采用电子教案,多媒体教学与传统板书、教具教学相结合,提高课堂教学信息量,增强教学的直观性。
(4)理论教学与工程实践相结合,引导学生应用数学、自然科学和工程科学的基本原理,采用现代设计方法和手段,进行需求分析、设计与仿真,培养其识别、表达和解决计算机科学与技术专业相关工程问题的思维方法和实践能力。
(5)课内讨论和课外答疑相结合,每周至少一次进行答疑。
2.实验教学
实验教学是网络编程课程中重要的实践环节,目的是培养学生运用实验方法研究解决计算机科学与技术专业复杂工程问题的能力。课程要求完成实验8个,各实验按照实验指导书的要求,学生独立或分组完成,并提交实验报告。
鼓励学生结合自己的兴趣进行自主课后实验。
四、考核及成绩评定
(一)考核内容及成绩构成
课程目标 |
考核内容 |
成绩评定方式 |
成绩占总评分比例 |
目标成绩占当次考核比例 |
学生当次考核平均得分 |
目标达成情况计算公式 |
目标1 |
网络编程的基本知识、原理和实现方法以及在网络工程设计过程的基本运用。实验笔记、结论分析、实验总结等。 |
实验 |
40% |
100% |
A |
|
目标2 |
多线程网络编程的基本知识、高级Socket编程原理、Socket编程模型和实现方法以及在网络工程设计过程的基本运用。 |
期末考核 |
30% |
100% |
B |
|
目标3 |
掌握网络编程在各中情况下实现的相关内容。能运用网络编程相关知识解决需求问题。 |
期末考核 |
30% |
100% |
C |
|
总评成绩(100%)= 实验(40%)+期末考核(60%) |
100% |
—— |
—— |
|
(二)实验成绩评定
需完成实验8次,支撑目标1,共占总评分40%。对应目标的评分标准如下:
对应目标 |
目标1 |
考查点 |
实验操作 |
实验报告 |
总评分占比 |
50% |
50% |
评分标准 |
100% 至 90% |
能够根据网络编程实验要求制定很好的实验方案,能正确熟练使用C语言完成实验。实验态度认真,操作能力强,操作、记录规范,沟通、协作很好。 |
有很强的总结实验和撰写报告的能力,实验报告内容完整、正确,有很好的分析与见解。文本表述清晰,书写工整,格式规范。 |
89.9% 至 80% |
能够根据网络编程实验要求制定良好的实验方案,能正确使用C语言完成实验。实验态度认真,操作能力强,操作、记录规范,沟通、协作良好。 |
有较强的总结实验和撰写报告的能力,实验报告内容完整、正确,有较好的分析与见解。文本表述较为清晰,书写比较工整,格式规范。 |
79.9 至 70% |
能够根据网络编程、工具的性能及实验要求制定实验方案,能正确使用C语言完成实验。实验态度比较认真,操作能力较强,操作、记录规范,沟通、协作正常。 |
有良好的总结实验和撰写报告的能力,实验报告内容较完整、正确,有自己的分析与见解。文本表述较为清晰,书写较为工整,格式较为规范。 |
69.9% 至 60% |
能够根据网络编程、工具的性能及实验要求制定实验方案,能使用C语言完成实验。实验态度不太认真,操作能力一般,操作、记录基本规范,有沟通、协作。 |
有一定的总结实验和撰写报告的能力,实验报告内容基本完整、正确,没有分析或见解。文本表述基本清晰,书写基本工整,格式基本规范。 |
59.9%至 0 |
动手操作能力差;操作、记录不规范,实验中不能与合作者进行沟通、协作,不能正确使用仪器设备 |
总结实验和撰写报告的能力差,实验报告内容不完整、错误多。文本表述不清晰,书写潦草、格式不规范。 |
五、参考学习资料
(一)推荐教材:
杨秋黎、金智,Windows 网络编程(第2版),北京:人民邮电出版社 2015年1月,ISBN:978-7-115-37770-8
(二)参考教材:
[韩]尹圣雨,TCP/IP网络编程,北京:人民邮电出版社,2014年7月,978-7-115-35885-1
[美]Bob Quinn Dave Shute,Windows Sockets网络编程,北京:机械工业出版社 2012年8月,ISBN:978-7-111-39274-3