本书主要内容包括18章:TCP/IP协议模型与基础知识、Windows网络编程基础、IP配置信息管理程序设计、ARP表管理程序设计、基于Winsock的客户机服务器开发技术、路由管理程序设计、网络活动监视和端口扫描、TCP穿越NAT的P2P通信技术、即时通讯与TCP/IP超级终端、FTP协议、HTTP协议、Telnet协议、SMTP和POP3协议、网络安全与防火墙分析设计、串口通信程序设计等。
本书讲解和展示了Visual C++集成环境下网络编程技术的基本原理和应用方法,并通过案例形式向读者介绍了来自工程实践的经验。
● TCP/IP协议基本内容
● 网络通信基本概念、WinInet网络编程基础与基本应用
● 局域网中ARP协议的工作原理
● 基于Winsock的客户/服务器程序的开发方法
● TCP/IP端口扫描方法与应用
● 应用NAT穿越技术来实现P2P的TCP流通信
● 即时通信程序实现方法与超级终端应用
● FTP工作原理及如何开发FTP服务端和客户端程序
● 网络防火墙工作原理及如何利用Filter-Hook Driver实现网络防火墙
● HTTP协议基本内容与应用
● Telnet协议基本内容与应用
● SMTP模型基本内容与电子邮件的接收和发送技术
● 利用PC机串口进行串行通信时的基本原理与应用
● ……
● 网络测试工具ping命令和网络配置查看工具ipconfig命令的使用
● 网卡MAC地址的获取方法
● 利用MFC中的CSocket类通过网络传输文件
● 利用ICMP协议实现路由跟踪
● 处于两个不同局域网的客户机进行P2P通信的“打洞”技术实现
● 网络即时通信程序设计与实现
● FTP服务器端与客户端程序设计与实现
● 利用HTTP协议实现文件下载的功能
● Telnet客户端程序设计与实现
● 电子邮件发送与接收的程序设计与实现
● 利用ICMP数据报突破网关的限制,实现ICMP转发数据报
● 获取远程MAC地址的方法
● 串口通信程序设计
网络编程技术是指利用Windows系统所提供的各类网络操作函数以及流行的网络协议,如TCP/IP、FTP、HTTP、Telnet等实现网络程序功能的基本原理和方法。目前,网络编程技术已在互联网技术应用、网络信息传输、网络信息安全、网络电子商务、网络管理信息系统等诸多领域得到非常广泛的应用。
网络编程技术的研究和应用离不开程序设计,Visual C++则是最有力、最常用的网络程序开发工具之一。本书全面地介绍了在Visual C++环境下进行网络程序设计的方法,内容涵盖了Windows网络编程技术的理论基础和常用网络协议的Visual C++应用技术,各种协议与方法在本书中均给出了基本原理、典型实例及其完整的Visual C++源码,读者在理解了代码功能之后可以参考使用本书中提供的代码,进行修改、增加功能来组合成各种功能强大的网络应用程序。
在学习完本书之后,相信读者能够掌握Visual C++环境下的网络编程技术,并可以进行网络程序实际项目设计开发工作。
本书特点
本书主要有以下特点。
1循序渐进,由浅入深
为了更好地吸引读者的注意力,激发读者的学习兴趣,本书首先介绍日常生活中最为常用的TCP/IP协议模型,然后介绍Windows网络编程基础和网络基本应用,在后续章节中结合具体的程序实例,逐步介绍流行的网络协议,如TCP/IP、FTP、HTTP、Telnet等实现网络程序功能的基本原理和方法。
2技术全面,内容充实
在保证实用的前提下,本书详细介绍了网络编程技术各个方面的知识。同时,结合程序实例介绍了应用网络编程技术进行网络程序开发的相关知识,各类网络基本功能应用、网络信息安全技术、电子邮件技术、黑客攻击网络的方法等都可以从本书中找到相关的知识介绍。
3分析原理,步骤清晰
掌握一门技术首先需要理解原理,本书注意把握各个知识点的原理,总结实现的思路和步骤。读者可以根据具体步骤实现书中的例子,将理论知识与实践相结合,这样更利于学习。
4代码完整,讲解详尽
本书中的每个知识点都有相应的实例代码,并对关键的代码部分进行了注释说明。每段代码的后面都有详细的分析,并给出了代码运行后的结果。读者可以参照运行结果阅读源程序,以便于加深理解。
5结合应用,注重实践
本书提供了大量综合应用实例,结合程序实例详细介绍了网络应用程序的开发过程。每章最后还配有“实践拓展”部分,介绍最新的网络编程技术应用知识,拓展读者视野,提高读者的实际应用能力。
主要内容
本书共18章,各章的主要内容如下。
第1章:首先介绍了OSI参考模型的层次结构、层次结构划分的原则和各层次之间的数据封装关系,然后介绍了目前应用的TCP/IP协议的基本构成和主要内容。
第2章:详细介绍了网络通信中涉及的基本概念,如IP地址和子网掩码等。结合在TCP/IP协议栈中自上而下的数据封装过程,对数据包的层次关系、封装过程和拆包过程进行了详细阐述,对传输层中的TCP和UDP协议的数据报结构字段与端口进行了讲解,对网络层的IP数据报各字段的意义和路由实现进行了详细介绍。
第3章:主要对Winsock编程原理、Winsock I/O模型、扩展性、套接字概念、I/O控制命令等内容进行了详细介绍,对WinInet网络编程基础和MFC Windows Sockets网络编程基础进行了简单描述。
第4章:主要介绍了一些网络的基本应用方法,包括如何获取主机的计算机名、域名和IP地址、子网掩码、网关、DNS序列以及网卡类型、物理地址信息等。
第5章:介绍了如何应用IP帮助函数来获取和设置本地计算机上的IP配置信息。
第6章:介绍了局域网中ARP协议的工作原理以及如何获取ARP表的各个函数,并结合实例讲述了如何应用ARP协议与函数。
第7章:介绍了使用Winsock开发典型客户端/服务器端程序的方法,并结合一个简单的TCP服务器实例来讲述Winsock的编程方法。
第8章:介绍了与路由管理相关的IP帮助函数,以及如何应用这些函数进行路由跟踪的程序实现方法。
第9章:结合程序实例讲述如何使用编程的方式来获取正在使用TCP/UDP进行网络访问的进程信息。同时,介绍了端口扫描的意义和实现方法,并以简单程序实例来说明如何对TCP/IP端口进行扫描。
第10章:介绍了如何利用NAT穿越技术来实现可靠的P2P的TCP流通信。
第11章:介绍了实现一个功能简单的即时通信程序的方法,用这种方法可以同时运行多个客户端连接到服务器端来进行文字信息交换。同时,也介绍了超级终端的作用,并以实例的形式说明了超级终端的基本功能。
第12章:介绍了FTP工作原理以及如何开发FTP服务器端和客户端程序。
第13章:介绍了HTTP协议的基本内容,并通过HTTP下载程序实例来进一步说明和讲解。
第14章:介绍了Telnet协议的基本内容,并结合实例进行说明。
第15章:介绍了SMTP模型的基本内容以及电子邮件接收/发送技术的实现方法,并结合实例来拓展说明。
第16章:介绍了网络防火墙的类型、特点、工作原理,以及如何利用FilterHook Driver来实现网络防火墙。
第17章:在第6章的基础上进一步详细介绍ARP工作原理、工作方式,并结合实例介绍典型的局域网计算机诊断、ARP欺骗与ARP表中毒、密码侦测、DNS欺骗等内容。
第18章:介绍利用PC串口进行串行通信的基本原理,并根据实现串口通信的两种编程方式分别介绍了MSComm ActiveX控件和Windows API函数的使用方法。
读者对象
Visual C++ 编程人员
大中专院校的学生
社会培训班的学生
高等教育学校的学生
网络系统管理员
Web开发人员
网络编程人员
本书光盘
包含原书各章实例和综合应用实例的完整源代码及测试用的图像文件,读者可以按照书中的说明对程序源代码进行编译和运行。
本书主要由代勇、李伟和杨宏帅编写,其中第1~9章由代勇编写,第10~13章、第16~18章由李伟编写,第14和15章由杨宏帅编写。参与本书编写和资料整理工作的还有朱瑛、封海波、马云辉、管殿柱、赵景波、付本国、张轩、赵景伟、赵秋玲、张忠林、王献红、王臣业、张洪信等。代勇完成了全书的统稿工作,并和李伟审校了全书。本书在编写过程中得到了海军潜艇学院宋一兵高工和哈尔滨工业大学林琳副教授的大力支持,在此特别表示感谢!
感谢您选择了本书,希望我们的努力对您的工作和学习有所帮助,也希望您把对本书的意见和建议告诉我们。
作者:gdz_zero@126.com
编辑:zsb@hzbook.com
编者
2010年12月
计算机\程序设计
见附页
代勇 李伟 杨宏帅 等编著:暂无简介
前言
第1章TCP/IP协议模型1
11OSI参考模型1
12TCP/IP结构3
121TCP/IP模型3
122OSI参考模型与TCP/IP模型的关系4
123TCP/IP各层协议介绍4
13实践拓展12
第2章TCP/IP协议基础知识16
21IP地址和子网掩码16
211IP地址16
212子网掩码17
213网络地址18
214网络地址的计算20
22地址解析22
221地址解析的基本思想22
222完整的地址解析工作过程22
23域名系统23
231主机名的注册24
232主机名的解析24
24TCP/IP协议栈的数据包封装24
241IP数据报25
242UDP数据报29
243TCP数据报30
25端口号32
26实践拓展33
第3章Windows网络编程基础36
31套接字36
311流套接字和数据报套接字36
312基本概念37
313字节顺序38
32Winsock编程原理39
321Winsock的启动和终止39
322错误检查和控制39
323Winsock编程模型40
33Winsock I/O模型45
331Select模型46
332WSAAsyncSelect模型47
333WSAEventSelect模型48
34Winsock 2的扩展特性50
341原始套接字50
342重叠I/O模型51
343服务质量(QOS)52
35套接字选项和I/O控制命令53
351套接字选项53
352I/O控制命令55
36WinInet网络编程基础56
37MFC Windows Sockets网络编程基础62
371CAsyncSocket类62
372CSocket类67
38实践拓展70
第4章网络的基本应用75
41获取主机名和IP地址75
42获取网卡类型和子网掩码78
43获取网卡MAC地址86
431MAC基础知识86
432NetBIOS编程接口87
433NetBIOS编程基础87
44获取系统支持的网络协议90
441Win32支持的协议90
442Winsock 2的WSAEnum Protocols函数91
45实践拓展99
第5章IP配置信息管理程序设计101
51GetNetworkParams函数101
52管理网络接口103
521获取接口数量103
522获取接口信息103
53获取和设置特定的接口105
54管理IP地址108
541获取IP地址列表108
542添加和删除IP地址109
543获取IP地址列表并添加新IP地址109
55实践拓展112
第6章ARP表管理程序设计116
61ARP工作原理116
62对ARP表操作的函数117
621获取ARP表函数117
622添加ARP入口函数117
623删除ARP入口函数118
63打印ARP表程序示例118
64实践拓展122
第7章基于Winsock的客户/服务器开发124
71TCP服务器设计124
72TCP客户端设计127
73多线程TCP服务器和客户端设计129
731多线程服务器129
732客户端程序133
74网络对时程序设计136
75实践拓展138
751服务器端程序代码分析138
752客户端程序代码分析141
第8章路由管理程序设计144
81获取路由表144
82管理特定路由148
821添加路由148
822删除路由148
823修改路由149
824修改默认网关149
83基于ICMP协议的路由跟踪151
84实践拓展160
841ICMP报文简介160
842ICMP协议应用161
第9章本地网络活动监视和端口扫描164
91网络进程获取的API函数164
92列举本地所有网络的活动进程166
93TCP/IP端口扫描172
931常见端口扫描技术简介173
932端口扫描实例详解173
94实践拓展178
第10章TCP穿越NAT的P2P通信181
101NAT穿越简介181
102Session概念和NAT设备类型182
103NAT转发方式183
104NAT反向连接方式184
105基于“打洞”技术的程序设计184
106程序测试191
107实践拓展193
第11章即时通信与TCP/IP超级终端196
111即时通信原理196
1111IM技术原理196
1112IM通信方式197
112即时通信程序设计198
113TCP/IP超级终端202
114实践拓展205
第12章FTP协议与实例分析209
121FTP的工作原理209
122FTP服务程序的开发211
1221程序功能介绍212
1222程序中主要类的说明212
1223程序代码分析212
123开发FTP客户端程序220
1231客户端项目的建立221
1232客户端程序代码实现221
124实践拓展225
第13章HTTP协议与实例分析229
131HTTP协议介绍229
1311HTTP协议通信过程229
1312HTTP协议的请求报文231
1313HTTP请求流程233
1314HTTP协议的响应报文233
132HTTP下载程序实例234
133实践拓展241
第14章Telnet协议与实例分析244
141Telnet协议简介244
1411NVT ASCII字符集245
1412Telnet命令245
1413选项协商245
1414Telnet服务器进程和客户进程间的操作方式247
142实现Telnet客户端程序247
1421Telnet客户端程序功能介绍247
1422Telnet客户端程序代码分析249
143实践拓展257
第15章SMTP和POP3协议与实例分析260
151电子邮件的标准格式RFC822260
1511RFC822信件的格式和内容260
1512构造符合RFC822的信件266
1513RFC822信件的语法分析267
152SMTP模型及电子邮件的发送268
1521SMTP的模型描述268
1522SMTP的会话过程268
153无附件的电子邮件发送程序275
1531程序实例实现275
1532程序代码分析275
154带有附件的电子邮件发送程序276
1541程序实例实现276
1542程序代码分析277
155POP3协议与电子邮件的接收295
156电子邮件接收程序301
1561程序实例实现301
1562程序代码分析301
157实践拓展310
第16章网络防火墙设计317
161防火墙的类型与特点317
162防火墙的工作原理318
163FilterHook Driver防火墙程序设计320
1631FilterHook 驱动320
1632创建内核模式驱动321
1633注册过滤函数323
1634使用过滤函数324
1635过滤程序代码分析325
1636使用FilterHook Driver开发防火墙应注意的问题326
164利用ICMP数据报突破网关限制326
165实践拓展330
第17章网络安全333
171ARP的工作原理333
1711ARP的工作方式333
1712ARP协议格式与发送函数335
172ARP欺骗原理与实例336
1721ARP欺骗的实现原理336
1722IP地址冲突337
1723ARP欺骗程序实例337
173侦听局域网内的密码实例340
174Windows下DNS ID欺骗的原理342
175实践拓展352
第18章串口通信程序设计354
181串口通信基础354
1811三线制RS232C通信接线354
1812串口通信基本原理355
182MSComm控件详解356
1821MSComm控件处理通信问题的方法356
1822MSComm控件属性356
1823VARIANT数据类型359
183利用MSComm控件的串口通信程序设计360
1831基于MSComm控件的串口通信程序实例360
1832利用串口进行十六进制数据的发送364
1833十六进制数据的显示366
1834设置自动发送功能367
184串口通信的Windows API函数基础368
1841打开串口368
1842配置串口368
1843超时设置371
1844事件设置372
1845读串口373
1846写串口373
1847关闭串口374
185异步串口通信实例374
1851异步通信编程步骤374
1852异步通信实例分析376
186实践拓展380
1861Modbus协议380
1862系统设计381
参考文献384