编辑推荐
本书重点突出,结构层次清晰,语言通俗易懂。有许多的典型应用实例。实例采用引导型模式,主要环节均留出思考空间。每个实例针对性很强,叙述和分析透彻,它包括网络拓扑结构、实验环境说明、实验目的和要求、配置步骤、测试结果等,每章都配有相关实验习题,具有可读性、可操作性和实用性强的特点,特别适合于课堂教学。
内容简介
本书覆盖了交换技术、路由技术、网络安全技术、网络编程技术、协议分析技术、设备管理、无线网络等技术,共13章,主要内容有实验基础、网络嗅探与协议分析、网络编程、网络安全、双绞线、VLAN技术、端口聚合、端口镜像、生成树协议、路由器技术、NAT技术、ACL访问控制技术、IPv6技术、无线网络、综合实验等。
本书以实际网络应用为出发点,提供了大量实验,每个实验都包括网络拓扑结构、实验环境说明、实验目的和要求、配置步骤、测试结果等。
本书可作为计算机网络专业本专科教材,也可作为网络专业从业人员的自学教材。
作者简介
王盛邦, 硕士、高工,主要从事软件开发和计算机类课程教学工作,研究方向是计算机网络、信息安全。曾讲授的课程有“计算机网络及应用”、“计算机网络实验”、“计算机网络与信息安全基础”、“网络安全原理与技术实验”、“信息安全综合实践”等。
曾任全国大学生嵌入式大赛中山大学参赛小组指导老师、全国大学生信息安全竞赛中大参赛队的指导老师、中山大学信息安全竞赛校际选拔赛评委、全国大学生信息安全竞赛网评专家。
曾主持校级实验室开放基金项目“计算机网络创新实验”、“EMC教学实验案例的设计与开发”、“计算机网络实践课程改革与实验教材建设”、“计算机网络实践课程自主创新本科教学体系建设”、““计算机网络实验”精品课程建设”、“信息安全专业综合实践实验改革与设计”、“信息安全综合实践课程建设”、“教材建设-网络与信息安全综合实践”等。
所编写广东省本科高校教学质量与教学改革工程立项建设项目《网络与信息安全综合实践》被全国多所高校采用。
目录
第1章实验基础1
1.1常用网络命令1
1.1.1ping命令1
1.1.2tracert命令5
1.1.3ipconfig命令7
1.1.4netstat命令8
1.1.5arp命令10
1.1.6net命令11
1.1.7netsh命令13
1.2IPv4地址基础16
1.2.1IPv4地址表示16
1.2.2IPv4地址结构16
1.2.3IPv4地址分类17
1.2.4网络掩码17
1.2.5子网掩码与子网划分18
1.2.6子网划分实例18
1.3网络包分析工具Wireshark20
1.3.1Wireshark20
1.3.2Wireshark常用功能21
1.3.3Wireshark的过滤规则25
1.3.4Wireshark命令行抓包26
1.3.5Wireshark数据包捕获实例26
1.4网络模拟软件Packet Tracer29
1.4.1Packet Tracer界面29
1.4.2设备管理33
1.4.3通过Packet Tracer分析协议35
1.4.4Packet Tracer使用实验38
1.5绘制网络拓扑图40
1.5.1网络设备图例40
1.5.2拓扑图绘制工具41
1.6实验与实验测试44
1.6.1实验前后的对比44
1.6.2对实验过程进行监控44
1.6.3实验截图44
1.6.4撰写实验报告45
习题145第2章网络嗅探与协议分析50
2.1网络嗅探50
实验2.1嗅探实验51
2.2协议分析51
2.3TCP/IP协议52
2.3.1IP协议52
2.3.2TCP协议54
实验2.2TCP/IP协议分析58
2.4HTTP协议60
实验2.3HTTP协议分析实验62
2.5FTP协议64
2.5.1FTP客户/服务器64
2.5.2数据连接主动方式/被动方式65
2.5.3用户名和口令的明文传输65
2.5.4FileZilla66
实验2.4FTP协议分析66
2.6Telnet协议69
2.6.1Telnet的基本服务69
2.6.2选项协商70
2.6.3Telnet客户机和服务器71
实验2.5Telnet协议分析71
2.7DNS协议73
实验2.6DNS协议分析76
2.8ARP协议78
实验2.7ARP协议分析80
2.9QQ协议82
实验2.8QQ协议分析83
2.10迅雷下载协议85
实验2.9迅雷协议分析86
习题287第3章网络编程91
3.1利用套接字建立逻辑信道92
3.2Client/Server工作模式分类93
3.3面向连接的Client/Server模式93
3.3.1面向连接的服务器工作流程93
3.3.2面向连接的客户端工作流程95
3.4无连接的Client/Server模式97
3.5编程实验97
实验3.1TCP通信程序设计102
实验3.2UDP通信程序设计103
实验3.3网络嗅探器设计104
实验3.4停等协议通信106
实验3.5GBN协议编程107
实验3.6IPv4组播通信108
实验3.7应用层组播113
习题3115第4章网络安全117
4.1Linux防火墙配置117
4.1.1netfilter/iptables118
4.1.2建立规则和链119
4.1.3其他NAT配置123
实验4.1Linux防火墙设计123
4.2ARP欺骗126
4.2.1同一网段的ARP欺骗126
4.2.2不同网段的ARP欺骗127
4.2.3ARP欺骗的防御129
实验4.2ARP测试与防御129
4.3盗链与反盗链技术131
4.3.1盗链原理131
4.3.2反盗链技术131
实验4.3分析某下载软件的盗链行为132
4.4蜜罐技术133
实验4.4简单蜜罐陷阱的配置134
4.5入侵检测技术136
实验4.5入侵检测实验137
习题4138第5章双绞线实验142
5.1双绞线142
5.2RJ.45连接器145
5.3双绞线跳线的制作标准和跳线类型147
5.3.1T568.A标准与T568.B标准147
5.3.2跳线线序148
5.3.3直连线和交叉线148
实验5.1双绞线跳线的制作和测试149
5.4信息模块152
实验5.2信息模块的压制和测试154
习题5156第6章交换机技术157
6.1交换机技术基础157
6.1.1以太网交换机157
6.1.2交换机的工作原理157
6.1.3交换机的基本功能159
6.1.4交换机的交换方式159
6.1.5交换机的分类160
6.1.6交换机的接口与连接线缆160
6.1.7交换机配置基础161
6.1.8交换机的命令模式162
6.2VLAN技术163
6.2.1基本概念163
6.2.2VLAN的分类164
6.2.3VLAN数据帧的标识165
6.2.4VLAN中的端口165
6.2.5VLAN的基本配置166
实验6.1单交换机实现VLAN169
实验6.2跨交换机实现VLAN172
6.2.6三层交换机VLAN间路由174
实验6.3通过三层交换机实现VLAN间路由177
6.2.7单臂路由实现VLAN间路由179
实验6.4单臂路由实现VLAN间路由180
6.3端口聚合183
6.3.1基本概念183
6.3.2端口汇聚配置命令184
6.3.3配置Aggregate Port的流量平衡185
实验6.5端口聚合配置实验187
6.4端口镜像190
6.4.1基本概念190
6.4.2本地端口镜像190
实验6.6交换机端口镜像配置192
6.4.3基于VLAN的镜像194
6.4.4远程端口镜像195
实验6.7交换机端口远程镜像197
6.4.5基于流的远程端口镜像配置199
6.5生成树协议199
6.5.1基本概念199
6.5.2生成树协议的定义203
6.5.3快速生成树协议204
实验6.8快速生成树协议配置204
6.5.4多生成树协议208
实验6.9多生成树协议配置208
6.5.5生成树协议小结215
6.6交换技术的发展前景215
习题6216第7章路由技术223
7.1路由器技术基础223
7.1.1路由的基本概念223
7.1.2路由器的功能225
7.1.3路由器的分类226
7.1.4路由的分类226
7.1.5路由器的接口和线缆227
7.1.6路由器配置228
7.1.7路由器端口配置原则229
7.1.8路由器的常见命令模式230
7.2静态路由230
7.2.1静态路由230
7.2.2静态路由配置步骤232
7.2.3静态路由配置主要命令232
实验7.1静态路由233
7.3RIP路由235
7.3.1RIP概述235
7.3.2路由环路236
7.3.3有类路由与无类路由239
7.3.4RIP的工作过程239
7.3.5路由汇总240
7.3.6RIP配置步骤242
实验7.2RIP路由协议243
7.4OSPF路由246
7.4.1OSPF概述246
7.4.2Loopback地址247
7.4.3OSPF数据包类型247
7.4.4OSPF协议工作过程249
7.4.5OSPF区域250
7.4.6OSPF配置步骤251
实验7.3OSPF单区域252
实验7.4OSPF多区域255
7.4.7OSPF虚连接258
7.4.8OSPF的认证259
实验7.5OSPF虚链路260
7.4.9路由重发布263
实验7.6路由重发布266
7.5动态路由协议小结269
习题7269第8章访问控制列表279
8.1基本概念279
8.2ACL匹配性检查280
8.2.1ACL的匹配过程280
精彩书摘
第3章网 络 编 程
本章主要介绍网络编程的一些主要方法,并配有编程实验。一些实验只提出要求,程序编写过程需要读者自行完成。
如果应用程序涉及本地与远程之间的通信,就需要采用网络编程。网络编程*主要的工作就是在发送端把信息通过规定好的协议进行包的组装,在接收端按照规定好的协议把包进行解析并提取出对应的信息,从而达到通信的目的。中间*主要的就是数据包的组装、过滤、捕获和分析以及其他处理。
通过使用套接字达到进程间通信目的的编程就是网络编程。套接字即Socket,应用程序通常通过套接字向网络发出请求或者应答网络请求,实际上是网络应用程序接口(API)。套接字是由传输层提供的应用程序(进程)和网络之间的接入点,如图3.1所示。应用程序(进程)可以通过套接字访问网络,套接字利用主机的网络层地址和端口号为两个进程建立逻辑连接。
图3.1Socket是应用层与传输层之间的桥梁
套接字可以用于多种协议,包括TCP/IP协议。常用的端口号如表3.1所示。表3.1TCP/IP常用端口号协议NNTPFTP(数据)FTP(控制)TelnetSTMPHTTPPOP3端口号192021232580110为了方便网络编程,20世纪90年代初,Microsoft联合其他几家公司共同制定了一套Windows下的网络编程接口,即Windows Sockets规范。它不是一种网络协议,而是一套开放的、支持多种协议的Windows下的网络编程接口。现在的Winsock已经基本上实现了与协议无关,可以使用Winsock调用多种协议的功能,但较常使用的是TCP/IP协议。Socket实际上是在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有Socket接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个Socket接口实现。
Socket是TCP/IP网络的API,Socket接口提供了很多的函数,可以用于开发网络应用程序。Socket数据传输是一种特殊的I/O,同时Socket也是一种文件描述符。Socket的使用主要有Socket建立、配置、建立连接、数据传输和结束传输等过程。
3。1利用套接字建立逻辑信道
一般发起通信请求的程序被称为客户端,用户一般是通过客户端软件访问某种服务。客户端应用程序通过与服务器建立连接和发送请求,然后接收服务器返回的内容。服务器则一般是等待并处理客户端请求的应用程序。服务器通常由系统执行,在系统生存期间一直存在和等待客户端的请求,并且在接收到客户端的请求后,根据请求向客户端返回合适的内容。
通信的一方(被动方,称为服务器)监听某个端口;通信的另一方(主动方,称为客户端)如果知道服务器的IP地址和它所监听的端口, 便可以试图发送请求建立连接。该连接请求包含: 服务器IP地址、服务器端口号、客户IP地址、客户端口号。由于客户端口号由客户端的系统(TCP进程)自动选取一个当前未用的端口,该四元组便可以在因特网中*标识一个逻辑连接。服务器收到客户端发来的连接请求后,便发出响应建立该连接,这样就建立了一条逻辑信道。
客户和服务器通过请求响应方式可以进行双向数据传输。当结束数据传输时,需要关闭该连接。这种工作模式是有连接的客户端/服务器模式(Client/Server)。
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤: 服务器监听,客户端请求,连接确认。
(1) 服务器监听: 是指服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
(2) 客户端请求: 是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后向服务器端套接字提出连接请求。
(3) 连接确认: 是指当服务器端套接字监听到或者接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
这三个步骤类似于三次握手,如图3.2所示。
图3.2客户端与服务器端的三次握手3。2Client/Server工作模式分类
Client/Server工作模式一般按下列分类:
(1) 有状态和无状态: 服务器是否记录客户端的当前状态。
(2) 有连接(TCP)和无连接(UDP): 客户端和服务器之间是否先建立连接再传输数据。
(3) 循环和并发: 服务器对多客户端请求的服务是采用循环方法还是并发程序方法。
TCP协议面向连接,使用可靠的字节流传送服务;而UDP协议面向非连接,使用非可靠的数据报服务。TCP协议提供高可靠性的传输,UDP协议提供高效的传输。它们在实际应用中有其各自所适应的场合。
3。3面向连接的Client/Server模式
在面向连接的Client/Server结构中,操作过程采取的是主动请求方式: 服务器首先启动,并根据请求提供相应服务。
通过调用socket()建立一个套接口,然后调用bind()将该套接口和本地网络地址联系在一起,再调用listen()使套接口做好侦听的准备,并规定它的请求队列的长度,之后调用accept()接收连接。客户端在建立套接口后就可调用connect()和服务器建立连接。连接一旦建立,客户机和服务器之间就可以供对方读取或者读取对方数据。*后在数据传送结束后,双方调用close()关闭套接口。
3。3。1面向连接的服务器工作流程
面向连接的服务器工作流程包括以下几个环节。
1。 创建套接字
Socket建立是通过调用Socket函数实现的,该函数定义如下: SOCKET socket(int domain, int type, int protocol)其中参数:
domain: 指明使用的协议族,如果取值AF_INET,用于网络通信;如果取值AF_UNIX,用于单一UNIX系统中进程间通信。
type: 指明socket类型,如果取值SOCK_STREAM,表示是流式,面向连接的比特流,顺序、可靠、双向,用于TCP通信;如果取值SOCK_DGRAM,表示数据报式、无连接、定长、不可靠,用于UDP通信。
protocol: 由于指定了type,一般用0。
函数返回: 一个整型的socket描述符,供后面使用。如果调用失败,返回一个INVALID_SOCKET值,错误信息可以通过WSAGetLastError函数返回。
例如,一个socket可如下建立: int sockfd=socket(AF_INET,SOCK_STREAM,0)2。 将本地IP地址和端口号绑定到套接字
Socket的建立实际上是为socket数据结构分配了一个名字空间并返回指针,接着要对数据结构提供数据。bind()将一本地地址与一套接口捆绑,它适用于未连接的数据报或流类套接口,在connect()或listen()调用前使用。bind()函数通过给一个未命名套接口分配一个本地名字为套接口建立本地捆绑(主机地址/端口号)。
bind()定义如下: int bind(SOCKET socket, struct sockaddr �� address, int addr_len)其中参数:
sockfd: 由socket()调用返回的套接口文件描述符。
sockaddr: 数据结构sockaddr中包括了关于本地地址、端口和IP地址的信息。
addr_len: 地址长度,可以设置成sizeof(structsockaddr)。
通常服务器在启动时都会绑定一个众所周知的地址(如IP地址+端口号),用于提供服务,客户端可以通过它连接服务器;而客户端不用指定,有的系统会自动分配一个端口号和自身的IP地址组合。这就是为什么通常服务器端在listen()之前会调用bind(),而客户端就不会调用,而是在connect()时由系统随机生成一个。
函数返回: 如无错误发生,则bind()返回0;否则返回SOCKET_ERROR,应用程序可通过WSAGetLastError()获取相应错误代码。
3。 服务端使用listen()开启监听
listen()在套接字函数中表示让一个套接字处于监听到来的连接请求的状态。从客户端发来的连接请求将首先进入该等待队列,等待本进程的处理。listen()定义如下: int listen(SOCKET socket, int backlog)其中参数:
socket: 一个已绑定未被连接的套接字描述符。
backlog: 进入队列中允许的连接的个数。进入的连接请求在使用系统调用accept()应答之前要在进入队列中等待。该值是队列中*多可以拥有的请求的个数,大多数系统的默认设置为20。
函数返回: 无错误返回0;否则返回SOCKET ERROR,可以调用函数WSAGetLastError取得错误代码。
例如,listen(s,1)表示连接请求队列长度为1,即只允许有一个请求,若有多个请求,则出现错误,给出错误代码WSAECONNREFUSED。
4。 接受从客户端发来的请求
accept()是网络编程的重要函数,其作用是在一个套接口接受一个连接,其头文件对于Windows系统是在#include中,而Linux系统则在#i
计算机网络实验教程(第2版)/高等学校计算机类国家级特色专业系列规划教材 电子书 下载 mobi epub pdf txt