windows网络编程基础教程课后答案第五章(windows网络编程第二版

http://www.itjxue.com  2023-02-23 11:45  来源:未知  点击次数: 

我的笔记本 戴尔 N4010 Windows7系统 要怎么才能玩传奇私服······在线等答案

您好:

以下方法供您参考:

1.去网上下载一个“read修复工具”修复一下,游戏就可以玩了(注意,查杀一下病毒与木马,网上有的“read工具”,有病毒与木马)!

2.电脑里有木马或病毒干扰,用戴尔的自带杀毒软件检测,及时修补电脑上的漏洞!

3.你下载的“播放器”,或“聊天软件”,或“IE浏览器”,或“游戏”的程序不稳定,或者“版本太旧”!建议卸掉,下载新的,或将其升级为“最新版本”!

4.就是你安装了两款或两款以上的同类软件(如:两款播放器,两款qq,或多款浏览器,多款杀毒软件,多款网游等等)!它们在一起不“兼容”,卸掉“多余”的那一款!

5.卸载方法:你在电脑左下角“开始”菜单里找到“强力卸载电脑上的软件”,找到多余的那款卸掉! 卸完了再“强力清扫”!

或者“360安全卫士”,“软件管家”,点开,第4项:“软件卸载”,点开,找到“多余”和“类似”的软件卸载!如:“播放器”,点开,留下“暴风”,卸载“快播”!如:“下载”:点开,留下“迅雷”,卸载“快车”!(看准了再卸,别把有用的卸了)!

6.如果以上方法不行,打开“戴尔自带杀毒软件”,开始修复,重启电脑!

7.再不行,开始菜单,运行 ,输入cmd, 回车,在命令提示符下输入(复制即可) :

for %1 in (%windir%\system32\*.ocx) do regsvr32 /s %1

粘贴,回车,再输入:

for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1

回车!直到屏幕滚动停止为止,重启电脑!

8.下载:戴尔官方,更新“显卡驱动”!

9.下载合适的游戏补丁,不行,只能更换游戏版本!

10.实在不行,重装游戏,或还原系统!或重装系统!

计算机网络技术基础课后习题答案

CH1 答案 一.填空题 1.通信 2.实现资源共享 3.局域网 广域网 4.资源子网 通信子网 二.选择题 DDBBCCA 三.简答题 1.答:所谓计算机网络,就是指以能够相互共享资源的方式互连起来的自治计算机系统的集合。 2.答:计算机网络技术的发展大致可以分为四个阶段。 第一阶段计算机网络的发展是从20世纪50年代中期至20世纪60年代末期,计算机技术与通信技术初步结合,形成了计算机网络的雏形。此时的计算机网络,是指以单台计算机为中心的远程联机系统。 第二阶段是从20世纪60年代末期至20世纪70年代中后期,计算机网络完成了计算机网络体系结构与协议的研究,形成了初级计算机网络。 第三阶段是从20世纪70年代初期至20世纪90年代中期。国际标准化组织(ISO)提出了开放系统互联(OSI)参考模型,从而促进了符合国际标准化的计算机网络技术的发展。 第四阶段是从20世纪90年代开始。这个阶段最富有挑战性的话题是互联网应用技术、无线网络技术、对等网技术与网络安全技术。 3.网络的拓扑结构主要主要有:星型拓扑、总线型拓扑、环型拓扑、树型拓扑结构、网状型拓扑结构。 (1)星型拓扑优点:控制简单、故障诊断和隔离容易、服务方便;缺点:电缆需量大和安装工作量大;中心结点的负担较重,容易形成瓶颈;各结点的分布处理能力较低。 (2)树型拓扑优点:易于扩展、故障隔离较容易;缺点是各个结点对根的依赖性太大,如果根结点发生故障,则整个网络都不能正常工作。 (3)总线型拓扑的优点如下:总线结构所需要的电缆数量少;总线结构简单,又是无源工作,有较高的可靠性;易于扩充,增加或减少用户比较方便。总线型拓扑的缺点如下:总线的传输距离有限,通信范围受到限制。故障诊断和隔离较困难。总线型网络中所有设备共享总线这一条传输信道,因此存在信道争用问题, (4)环型拓扑的优点如下:拓扑结构简单,传输延时确定。电缆长度短。环型拓扑网络所需的电缆长度和总线型拓扑网络相似,比星型拓扑网络所需的电缆短。可使用光纤。光纤的传输速率很高,十分适合于环型拓扑的单方向传输。环型拓扑的缺点如下:结点的故障会引起全网的故障;故障检测困难;信道利用率低。 (5)网状型拓扑优点是:可靠性好,结点的独立处理能力强,信息传输容量大。 缺点是:结构复杂,管理难度大,投资费用高。 4.计算机网络的主要功能:资源共享、数据通信、实时控制、均衡负载和分布式处理、其他综合服务。举例说明(略)。 CH2 答案 一.填空题 1.信号

2.串行通信 并行通信 并行通信 3.调制 解调 调制解调器 4.幅度调制(ASK) 频率调制(FSK) 相位调制(PSK) 5.电路交换 报文交换 分组交换 6.奇偶校验 循环冗余校验 7.非屏蔽双绞线 屏蔽双绞线 二.选择题 BDAABDABCCB 三.简答题 1.答:信息是指有用的知识或消息,计算机网络通信的目的就是为了交换信息。数据是信息的表达方式,是把事件的某些属性规范化后的表现形式,它能够被识别,可以被描述。数据与信息的主要区别在于:数据涉及的是事物的表示形式,信息涉及的是这些数据的内容和解释。在计算机系统中,数据是以统一的二进制代码表示,而这些二进制代码表示的数据要通过物理介质和器件进行传输时,还需要将其转变成物理信号。信号是数据在传输过程中的电磁波表现形式,是表达信息的一种载体,如电信号、光信号等。在计算机中,信息是用数据表示的并转换成信号进行传送。 2.答:当发送端以某一速率在一定的起始时间内发送数据时,接收端也必须以同一速率在相同的起始时间内接收数据。否则,接收端与发送端就会产生微小误差,随着时间的增加,误差将逐渐积累,并造成收发的不同步,从而出现错误。为了避免接收端与发送端的不同步,接收端与发送端的动作必须采取严格的同步措施。 同步技术有两种类型: (1)位同步:只有保证接收端接收的每一个比特都与发送端保持一致,接收方才能正确地接收数据。 (2)字符或帧数据的同步:通信双方在解决了比特位的同步问题之后,应当解决的是数据的同步问题。例如,字符数据或帧数据的同步。 3、4.略 5.传输出错,目的结点接收到的比特序列除以G(x)有余数。 CH3 答案 一.填空题 1.物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 2.物理 3.比特流 差错 4.比特 数据帧 数据包(分组) 报文 5.物理层 网络层 传输层 二、选择题 DBACB BCABB CDACA 三、简答题 1.所谓网络体系结构就是为了完成主机之间的通信,把网络结构划分为有明确功能的层次,并规定了同层次虚通信的协议以及相邻层之间的接口和服务。因此,网络的层次模型与各层协议和层间接口的集合统称为网络体系结构。 2.网络体系结构分层的原则: 1)各层之间是独立的。某一层并不需要知道它的下层是如何实现的,而仅仅需要知道下层能提供什么样的服务就可以了。

2)灵活性好。当任何一层发生变化时,只要层间接口关系保持不变,则在这层以上或以下各层均不受影响。 3)结构上可独立分割。由于各层独立划分,因此,每层都可以选择最为合适的实现技术。 4)易于实现和维护。这种结构使得实现和调试一个庞大而又复杂的系统变得易于处理,因为整个系统已被分解为若干个相对独立的子系统。 3.帧同步(定界)就是标识帧的开始与结束,即接收方从收到的比特流中准确地区分出一帧的开始于结束。常见有4中帧定界方法,即字符计数法、带字符填充的首尾界符法、带位填充的首尾标志法和物理层编码违例法。 4.数据链路层使用的地址是MAC地址,也称为物理地址;网络层使用的地址是IP地址,也称为逻辑地址;传输层使用的地址是IP地址+端口号。 5.网络层的主要功能是提供不相邻结点间数据包的透明传输,为传输层提供端到端的数据传送任务。网络层的主要功能有:1)为传输层提供服务;2)组包与拆包;3)路由选择;4)流量控制。 6.传输层是计算机网络体系结构中非常重要的一层,其主要功能是在源主机与目的主机进程之间负责端到端的可靠数据传输,而网络层只负责找到目的主机,网络层是通信子网的最高层,传输层是资源子网的最低层,所以说传输层在网络体系结构中是承上启下的一层。在计算机网络通信中,数据包到达指定的主机后,还必须将它交给这个主机的某个应用进程(端口号),这由传输层按端口号寻址加以实现。 7.流量控制就是使发送方所发出的数据流量速率不要超过接收方所能接收的数据流量速率。流量控制的关键是需要一种信息反馈机制,使发送方能了解接收方是否具备足够的接收及处理能力,使得接收方来得及接收发送方发送的数据帧。 流量控制的作用就是控制“拥塞”或“拥挤”现象,避免死锁。 流量在计算机网络中就是指通信量或分组流。拥塞是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象。若通信量再增大,就会使得某些结点因无缓冲区来接收新到的分组,使网络的性能明显变差,此时网络的吞吐量(单位时间内从网络输出的分组数目)将随着输入负载(单位时间内输入给网络的分组数目)的增加而下降,这种情况称为拥塞。在网络中,应尽量避免拥塞现象的发生,即要进行拥塞控制。 网络层和传输层与流量控制和拥塞控制有关。 8.传输层的主要功能有:1)分段与重组数据2)按端口号寻址3)连接管理4)差错处理和流量控制。 分段与重组数据的意思如下: 在发送方,传输层将会话层来的数据分割成较小的数据单元,并在这些数据单元头部加上一些相关控制信息后形成报文,报文的头部包含源端口号和目标端口号。在接收方,数据经通信子网到达传输层后,要将各报文原来加上的报文头部控制信息去掉(拆包),然后按照正确的顺序进行重组,还原为原来的数据,送给会话层。 9.TCP/IP参考模型先于OSI参考模型开发,所以并不符合OSI标准。TCP/IP参考模型划分为4个层次:1)应用层(Application Layer);2)传输层(Transport Layer);3)网际层(Internet Layer);4)网络接口层(Host-to-Network Layer)。 10.OSI参考模型与TCP/IP参考模型的共同点是它们都采用了层次结构的概念,在传输层中二者都定义了相似的功能。但是,它们在层次划分与使用的协议上有很大区别。 OSI参考模型与协议缺乏市场与商业动力,结构复杂,实现周期长,运行效率低,这是它没有能够达到预想目标的重要原因。 TCP/IP参考模型与协议也有自身的缺陷,主要表现在以下方面:

1)TCP/IP参考模型在服务、接口与协议的区别上不很清楚;2)TCP/IP参考模型的网 络接口层本身并不是实际的一层,它定义了网络层与数据链路层的接口。物理层与数据链路层的划分是必要合理的,一个好的参考模型应该将它们区分开来,而TCP/IP参考模型却没有做到这点。 CH4 答案 一.填空题 1.光纤 2.IEEE802.4 3.介质访问控制子层(MAC) 逻辑链路子层(LLC) 4.CSMA/CD 令牌环介质访问控制方法 令牌总线介质访问控制方法 5.星型结构 总线型结构 环型结构 6.MAC地址 48 厂商 该厂商网卡产品的序列号 二.选择题 ADCBCDAB 二.简答题 1.答:局域网是在有限的地理范围内,利用各种网络连接设备和通信线路将计算机互联在一起,实现数据传输和资源共享的计算机网络。局域网特点:地理范围有限;一般不对外提供服务,保密性较好,且便于管理;网速较快;误码率低;局域网投资较少,组建方便,使用灵活等。 2.答:局域网有硬件和软件组成。局域网的软件系统主要包括:网络操作系统、工作站系统、网卡驱动系统、网络应用软件、网络管理软件和网络诊断软件。局域网的硬件系统一般由服务器、用户工作站、网卡、传输介质和数据交换设备五部分组成。 3.答:目前,局域网常用的共享式访问控制方式有三种,分别用于不同的拓扑结构:带有冲突检测的载波侦听多路访问法(CSMA/CD),令牌环访问控制法(Token Ring),令牌总线访问控制法(token bus)。 CSMA/CD协议主要用于物理拓扑结构为总线型、星型或树型的以太网中。CSMA/CD采用了争用型介质访问控制方法,原理比较简单,技术上易实现,网络中各工作站处于平等地位,不需集中控制,不提供优先级控制。在低负荷时,响应较快,具有较高的工作效率;在高负荷(节点激增)时,随着冲突的急剧增加,传输延时剧增,导致网络性能的急剧下降。此外,有冲突型的网络,时间不确定,因此,不适合控制型网络。 令牌环(Token Ring)介质访问控制多用于环型拓扑结构的网络,属于有序的竞争协议。令牌环网络的主要特点:无冲突;时间确定;适合光纤;控制性能好;在低负荷时,也要等待令牌的顺序传递,因此,低负荷时响应一般,在高负荷时,由于没有冲突,因此有较好的响应特性。 令牌总线访问控制技术应用于物理结构是总线的而逻辑结构却是环型的网络。特点类似令牌环介质访问控制技术。 4.答:CSMA/CD方法的工作原理可以简单地概括为以下4句话:先听后发、边听边发、冲突停止、随机延迟后重发。 5.答:由于局域网不需要路由选择,因此它并不需要网络层,而只需要最低的两层:物理层和数据链路层。IEEE802标准,又将数据链路层分为两个子层:介质访问控制子层MAC和逻辑链路子层LLC。

CH5 答案 一.填空题 1.交换机 路由器 2.电路交换(拨号)服务 分组交换服务 租用线路或专业服务 3.计算机主机 局域网 4.640kbps-1Mbps 1.5Mbps-8Mbps 二.选择题 BCADAA 三.简答题 1.答:①拨号上Internet/Intranet/LAN; ②两个或多个LAN之间的网络互连; ③和其它广域网技术的互连。 2.答:(1)多种业务的兼容性 (2)数字传输:ISDN能够提供端到端的数字连接。 (3)标准化的接口: (4)使用方便 (5)终端移动性 (6)费用低廉 3.答:① 采用TDMA、CDMA数字蜂窝技术,频段为450/800/900MHz,主要技术又GSM、IS-54TDMA(DAMPS)等; ② 微蜂窝技术,频段为1.8/1.9GHz,主要技术基于GSM的GSC1800/1900,或IS-95的CDMA等; ③ 通用分组无线业务(Gerneral Packet Radio Service,GPRS)可在GSM移动电话网上收、发话费增值业务,支持数据接入速率最高达171.2Kbps,可完全支持浏览Internet的 Web站点。 CH6答案 一.填空题 1.unix 、linux、Netware、Windows Server系列 2.打印服务 通信服务 网络管理 二.选择题 DBCAC 三.问答题 1.答:①从体系结构的角度看,当今的网络操作系统可能不同于一般网络协议所需的完整的协议通信传输功能。 ②从操作系统的观点看,网络操作系统大多是围绕核心调度的多用户共享资源的操作系统。 ③从网络的观点看,可以将网络操作系统与标准的网络层次模型作以比较。 2.答:网络操作系统除了应具有通常操作系统应具有的处理机管理、存储器管理、设备管理和文件管理外,还应具有以下两大功能: ①提供高效、可靠的网络通信能力; ②提供多种网络服务功能,如远程作业录入并进行处理的服务功能;文件传输服务功能;电子邮件服务功能;远程打印服务功能等。

谁能提供点C语言的试题给我,最好能有答案的,非常感谢!

本试卷共5页共5大题,考生在作答前应先检查是否有缺页、白页、以防漏答。查对无误后,请先填写学号、姓名、专业,再答卷。

一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。(共10小题,每小题2分,共20分)。

1、不是C语言基本数据类型的是( )。

A、指针类型 B、整型

C、字符型 D、实型

2、设有:int a=3, b= 4, c= 5,x , y; 表达式(x=a)(y=b)0的值为( )。

A、1 B、0 C、3 D、4

3、设有语句 int a=3 ; 则执行了语句 a+ = a - = a后,变量a 的值是( )。

A、3 B、0 C、9 D、-12

4、执行以下程序后,y的值是( )

main()

{ int a[]={2,4,6,8,10};

int y=0,i,*p;

p=a[0];

for(i=0;i5;x++)

y+=*(p+i);

printf(“%d\n”,y);

}

A、17 B、18 C、19 D、30

5、有定义语句:float a[4];则分配给数组a的空间为( )字节。

A、 20 B、 12 C、 16 C、10

6、以下描述错误的是( )。

A、break语句可用于do~while语句

B、break语句和continue语句的作用是一样的

C、在循环语句中使用break语句是为了跳出循环,提前结束循环

D、在循环语句中使用continue语句是为了结束本次循环,而不终止整个循环

7、C语言中规定,if语句的嵌套结构中,else总是( )。

A、与最近的if 配对 B、与第一个if 配对

C、按缩进位置相同的if配对 D、与最近的且尚未配对的if 配对

8、说明语句“int (*p)( ); ”的含义是( ) 。

A、p是一个指向一维数组的指针变量

B、p是指针变量,指向一个整型数据

C、p是一个指向函数的指针,该函数返回一个int型数据

D、以上都不对

9、以下对二维数组c的正确声明是 ( ) 。

A、int c[3][ ]; B、int c(3,4); C、int c(2)(2); D、int c[3][2];

10、下述程序段执行后输出结果是( )。

int x=100, y=200;

printf ("% d", (x, y));

A、100 B、200 C、100,200 D、编译出错

二、填空题。(共10空,每空1分,共10分 )

1、C语言提供的三种逻辑运算符是 、 || 和!;

2、函数的返回值是通过函数中的 return 语句获得的。

3、在"int a[ ][3]={{1},{3,2},{4,5,6},{0}};"定义后,a[2][2]的值为_6__ _;

4、对于"int *pa[5];" pa是一个具有5个元素的_数组指针_,每个元素是一个指向int型变量的__指针__;

5、单向链表的尾节点next指针应赋值__ NULL___;

6、for(int x=0,y=1;xy〈=5;y++)中循环体执行的次数是 0 。

7、int a[5];数组a的首地址为2000,则元素a[1]的地址为 2002 ,元素a[2]的地址为 2004 。

三、程序填空题。(共8空,每空2分,共16分 )

1、以下程序中子函数返回数组s中最大元素,数组中元素的个数由t传入。

Int findmax(int s[],int t)

{

int m,n,*p;

max=0;

p= s ;

for(n=1;nt;n++)

if(*(p+max)*(p+n)) max=n ;

return(*(p+max));;

}

Void main( )

{ int a[10];

int i;

for(i=0;i10;i+=)

scanf(“%d”,a[i]);

printf(“%d”,findmax{a,10});

}

2、以下程序完成计算1-1/2+1/3-1/4+..前n 项和的功能,请填空。

#include stdio.h

int main( )

{ int i, n, flag;

float sum;

scanf("%d", n);

flag= 1 ;

sum=0;

for(i=1;i=n; i++ )

{ sum+=(float)flag/i;

flag=-flag ;

}

printf("%.3f\n", sum);

}

3、以下程序的功能是从键盘输入n个整数,统计其中正数、0、负数的个数,请填空。

#include stdio.h

int main( )

{int a, i, count1,count2,count3;

count1=cout2=count3=0 ;

for(i=1;i=n;i++)

{ scanf(“%d”, a);

If(a0) count1++;

Else if(i==0) count2++ ;

Else count3++;

}

printf(“正数:d个,零:%d个,负数:%d个\n”, count1,count2,count3);

}

四、运行程序结果。(共4小题,每小题6分,共24分)

1、运行时输入100,200,请写出程序运行结果。

Void main( )

{

int a, b,*p1,*p2 ;

scanf ( " % d ", a , );

scanf ( " % d ", b );

printf(“a=%d,b=%d”,a,b);

p1=a; p2=b;

swap ( p1,p2);

printf(“a=%d,b=%d”,a,b);

}

Void swap ( int *p1, *p2)

{

int t ;

t=*p1; *p1=*p2; *p2=t;

}

运行结果为:

a=100,b=200a=200,b=100

2、运行时若输入1 2 3 4 -5回车,写出程序运行结果。

#include stdio.h

int main( )

{

int x, sum;

scanf("%d", x);

sum=0;

while(x0)

{ if(x%2!=0) sum+=x;

scanf("%d", x);

}

printf("sum=%d\n", sum);

}

运行结果为:

sum=4

3、写出程序运行结果。

#includestdio.h

int max(int a,int b)

{ int c;

c=ab?a:b;

return(c);

}

int min(int a,int b)

{int c;

c=ab?a:b;

return(c);

}

void main()

{ int a=2,b=6;

printf("max=%d\n",max(a,b));

printf(“min=%d\n”,min(a,b));

}

运行结果为:

max=6

Min=2

4、运行时若输入4 1 2 3 0回车,写出程序运行结果。

#include stdio.h

int main( )

{

int i, index, n;

int a[10];

scanf("%d", n);

for(i=0; in; i++)

scanf("%d", a[i]);

index=0;

for(i=1;in;i++)

{ if(a[i]a[index]) index=i; }

printf("min=%d,index=%d\n", a[index],index);

}

运行结果为:

min=0,index=3

五、程序设计.( 共3小题,每小题10分,共30分)

1、输入10个字符串,将其按由小到大排序。

#includestdio.h

#includestring.h

Void main( )

{ char c[10][20],t[10];

Int I, j,k;

For(i=0;i10;i++)

Gets(c[i]);

For(i=0;i9;i++)

{ k=I;

For(j=i+1;j10;j++)

If(strcmp(c[k],c[j])0) k=j;

If(k!=i) { strcpy(t,c[k]); strcpy(c[k],c[i]); strcpy(c[i],t); }

For(i=0;i10;i++)

Puts(c[i]);

}

2、求出1!+2!+3!+…+8!。

#includestdio.h

Float fact(int n)

{ float f;

If(n==1||n==0) f=1;

Else f=fact(n-1)*n;

Return(f);

}

Void main( )

{float sum;

Int I;

Sum=0;

For(i=1;i=8;i++)

Sum+=fact(i);

Printf(“sum=%d\n”,sum);

}

3、请写出在一个单向链表中插入一个结点的函数:

struct student *insert(struct student *head, struct student *stud)

(说明:链表结点有两个成员:数据成员data和指针成员next)。

#include stdio.h

#include malloc.h

#define NULL 0

#define LEN sizeof(struct student)

struct student

{ int data;

struct student *next;

};

int n;

struct student *insert(struct student *head, struct student *stud)

{struct student *p0,*p1,*p2;

p1=head;p0=stud; if(head==NULL)

{head=p0; p0-next=NULL;}

else{while((p0-datap1-data) (p1-next!=NULL))

{p2=p1; p1=p1-next;}

if(p0-data=p1-data) {if(head==p1) head=p0;

else p2-next=p0; p0-next=p1;}

else {p1-next=p0; p0-next=NULL;}}

n=n+1; return(head);

}

iocp文件传输系统怎么做

Windows网络与通信程序设计(第2版) 王艳平 这本书写的非常好,我有本王艳平写的 windows程序设计,写得很好,我自己不做网络开发,就没有买网络的那本书!不过推荐你看看,真的很不错!

本书将编程方法、网络协议和应用实例有机结合起来,详细阐明Windows网络编程的各方面内容。本书首先介绍Windows平台上进行网络编程的基础知识,包括网络硬件、术语、协议、Winsock编程接口和各种I/O方法等;然后通过具体实例详细讲述当前流行的高性能可伸缩服务器设计、IP多播和Internet广播、P2P程序设计、原始套接字、SPI、协议驱动的开发和原始以太数据的发送、ARP欺骗技术、LAN和WAN上的扫描和侦测技术、个人防火墙与网络封包截获技术等;最后讲述IP帮助函数和E-mail的开发方法。 本书结构紧凑,内容由浅入...

第1章 计算机网络基础 1

1.1 网络的概念和网络的组成 1

1.2 计算机网络参考模型 2

1.2.1 协议层次 2

1.2.2 TCP/IP参考模型 2

1.2.3 应用层(Application Layer) 3

1.2.4 传输层(Transport Layer) 3

1.2.5 网络层(Network Layer) 3

1.2.6 链路层(Link Layer) 4

1.2.7 物理层(Physical Layer) 4

1.3 网络程序寻址方式 4

1.3.1 MAC地址 4

1.3.2 IP地址 5

1.3.3 子网寻址 6

1.3.4 端口号 8

1.3.5 网络地址转换(NAT) 8

1.4 网络应用程序设计基础 10

1.4.1 网络程序体系结构 10

1.4.2 网络程序通信实体 11

1.4.3 网络程序开发环境 12

第2章 Winsock编程接口 13

2.1 Winsock库 13

2.1.1 Winsock库的装入和释放 13

2.1.2 封装CInitSock类 14

2.2 Winsock的寻址方式和字节顺序 14

2.2.1 Winsock寻址 14

2.2.2 字节顺序 16

2.2.3 获取地址信息 17

2.3 Winsock编程详解 20

2.3.1 Winsock编程流程 20

2.3.2 典型过程图 23

2.3.3 TCP服务器和客户端程序举例 24

2.3.4 UDP编程 26

2.4 网络对时程序实例 28

2.4.1 时间协议(Time Protocol) 28

2.4.2 TCP/IP实现代码 29

第3章 Windows套接字I/O模型 31

3.1 套接字模式 31

3.1.1 阻塞模式 31

3.1.2 非阻塞模式 31

3.2 选择(select)模型 32

3.2.1 select函数 32

3.2.2 应用举例 33

3.3 WSAAsyncSelect模型 36

3.3.1 消息通知和WSAAsyncSelect函数 36

3.3.2 应用举例 37

3.4 WSAEventSelect模型 40

3.4.1 WSAEventSelect函数 40

3.4.2 应用举例 42

3.4.3 基于WSAEventSelect模型的服务器设计 44

3.5 重叠(Overlapped)I/O模型 53

3.5.1 重叠I/O函数 53

3.5.2 事件通知方式 56

3.5.3 基于重叠I/O模型的服务器设计 56

第4章 IOCP与可伸缩网络程序 67

4.1 完成端口I/O模型 67

4.1.1 什么是完成端口(completion port)对象 67

4.1.2 使用IOCP的方法 67

4.1.3 示例程序 69

4.1.4 恰当地关闭IOCP 72

4.2 Microsoft扩展函数 72

4.2.1 GetAcceptExSockaddrs函数 73

4.2.2 TransmitFile函数 73

4.2.3 TransmitPackets函数 74

4.2.4 ConnectEx函数 75

4.2.5 DisconnectEx函数 76

4.3 可伸缩服务器设计注意事项 76

4.3.1 内存资源管理 76

4.3.2 接受连接的方法 77

4.3.3 恶意客户连接问题 77

4.3.4 包重新排序问题 78

4.4 可伸缩服务器系统设计实例 78

4.4.1 CIOCPServer类的总体结构 78

4.4.2 数据结构定义和内存池方案 82

4.4.3 自定义帮助函数 85

4.4.4 开启服务和停止服务 88

4.4.5 I/O处理线程 93

4.4.6 用户接口和测试程序 99

第5章 互联网广播和IP多播 100

5.1 套接字选项和I/O控制命令 100

5.1.1 套接字选项 100

5.1.2 I/O控制命令 102

5.2 广播通信 103

5.3 IP多播(Multicasting) 105

5.3.1 多播地址 105

5.3.2 组管理协议(IGMP) 105

5.3.3 使用IP多播 106

5.4 基于IP多播的组讨论会实例 110

5.4.1 定义组讨论会协议 110

5.4.2 线程通信机制 111

5.4.3 封装CGroupTalk类 111

5.4.4 程序界面 117

第6章 原始套接字 121

6.1 使用原始套接字 121

6.2 ICMP编程 121

6.2.1 ICMP与校验和的计算 121

6.2.2 Ping程序实例 124

6.2.3 路由跟踪 126

6.3 使用IP头包含选项 129

6.3.1 IP数据报格式 129

6.3.2 UDP数据报格式 131

6.3.3 原始UDP封包发送实例 133

6.4 网络嗅探器开发实例 134

6.4.1 嗅探器设计原理 135

6.4.2 网络嗅探器的具体实现 136

6.4.3 侦听局域网内的密码 138

6.5 TCP通信开发实例 140

6.5.1 创建一个原始套接字,并设置IP头选项 140

6.5.2 构造IP头和TCP头 140

6.5.3 发送原始套接字数据报 142

6.5.4 接收数据 146

第7章 Winsock服务提供者接口(SPI) 147

7.1 SPI概述 147

7.2 Winsock协议目录 148

7.2.1 协议特性 149

7.2.2 使用Winsock API函数枚举协议 150

7.2.3 使用Winsock SPI函数枚举协议 151

7.3 分层服务提供者(LSP) 153

7.3.1 运行原理 153

7.3.2 安装LSP 154

7.3.3 移除LSP 158

7.3.4 编写LSP 159

7.3.5 LSP实例 161

7.4 基于SPI的数据报过滤实例 165

7.5 基于Winsock的网络聊天室开发 171

7.5.1 服务端 171

7.5.2 客户端 171

7.5.3 聊天室程序的设计说明 172

7.5.4 核心代码分析 172

第8章 Windows网络驱动接口标准(NDIS)和协议驱动的开发 176

8.1 核心层网络驱动 176

8.1.1 Windows 2000及其后产品的网络体系结构 176

8.1.2 NDIS网络驱动程序 177

8.1.3 网络驱动开发环境 178

8.2 WDM驱动开发基础 181

8.2.1 UNICODE字符串 181

8.2.2 设备对象 181

8.2.3 驱动程序的基本结构 183

8.2.4 I/O请求包(I/O request packet,IRP)和I/O堆栈 183

8.2.5 完整驱动程序示例 186

8.2.6 扩展派遣接口 188

8.2.7 应用举例(进程诊测实例) 191

8.3 开发NDIS网络驱动预备知识 198

8.3.1 中断请求级别(Interrupt Request Level,IRQL) 198

8.3.2 旋转锁(Spin Lock) 198

8.3.3 双链表 199

8.3.4 封包结构 199

8.4 NDIS协议驱动 200

8.4.1 注册协议驱动 200

8.4.2 打开下层协议驱动的适配器 201

8.4.3 协议驱动的封包管理 202

8.4.4 在协议驱动中接收数据 203

8.4.5 从协议驱动发送封包 204

8.5 NDIS协议驱动开发实例 204

8.5.1 总体设计 204

8.5.2 NDIS协议驱动的初始化、注册和卸载 206

8.5.3 下层NIC的绑定和解除绑定 209

8.5.4 发送数据 217

8.5.5 接收数据 219

8.5.6 用户IOCTL处理 225

第9章 网络扫描与检测技术 233

9.1 网络扫描基础知识 233

9.1.1 以太网数据帧 233

9.1.2 ARP 234

9.1.3 ARP格式 236

9.1.4 SendARP函数 237

9.2 原始以太封包的发送 238

9.2.1 安装协议驱动 238

9.2.2 协议驱动用户接口 238

9.2.3 发送以太封包的测试程序 244

9.3 局域网计算机扫描 245

9.3.1 管理原始ARP封包 246

9.3.2 ARP扫描示例 249

9.4 互联网计算机扫描 253

9.4.1 端口扫描原理 253

9.4.2 半开端口扫描实现 254

9.5 ARP欺骗原理与实现 259

9.5.1 IP欺骗的用途和实现原理 259

9.5.2 IP地址冲突 260

9.5.3 ARP欺骗示例 261

第10章 点对点(P2P)网络通信技术 264

10.1 P2P穿越概述 264

10.2 一般概念 265

10.2.1 NAT术语 265

10.2.2 中转 265

10.2.3 反向连接 266

10.3 UDP打洞 267

10.3.1 中心服务器 267

10.3.2 建立点对点会话 267

10.3.3 公共NAT后面的节点 267

10.3.4 不同NAT后面的节点 268

10.3.5 多级NAT后面的节点 269

10.3.6 UDP空闲超时 270

10.4 TCP打洞 271

10.4.1 套接字和TCP端口重用 271

10.4.2 打开点对点的TCP流 271

10.4.3 应用程序看到的行为 272

10.4.4 同步TCP打开 273

10.5 Internet点对点通信实例 273

10.5.1 总体设计 273

10.5.2 定义P2P通信协议 274

10.5.3 客户方程序 275

10.5.4 服务器方程序 287

10.5.5 测试程序 291

第11章 核心层网络封包截获技术 294

11.1 Windows网络数据和封包过滤概述 294

11.1.1 Windows网络系统体系结构图 294

11.1.2 用户模式下的网络数据过滤 295

11.1.3 内核模式下的网络数据过滤 296

11.2 中间层网络驱动PassThru 296

11.2.1 PassThru NDIS中间层驱动简介 296

11.2.2 编译和安装PassThru驱动 297

11.3 扩展PassThru NDIS IM驱动——添加IOCTL接口 297

11.3.1 扩展之后的PassThru驱动(PassThruEx)概况 297

11.3.2 添加基本的DeviceIoControl接口 298

11.3.3 添加绑定枚举功能 302

11.3.4 添加ADAPT结构的引用计数 307

11.3.5 适配器句柄的打开/关闭函数 308

11.3.6 句柄事件通知 315

11.3.7 查询和设置适配器的OID信息 315

11.4 扩展PassThru NDIS IM驱动——添加过滤规则 323

11.4.1 需要考虑的事项 323

11.4.2 过滤相关的数据结构 324

11.4.3 过滤列表 326

11.4.4 网络活动状态 327

11.4.5 IOCTL控制代码 328

11.4.6 过滤数据 331

11.5 核心层过滤实例 339

第12章 Windows网络防火墙开发技术 342

12.1 防火墙技术概述 342

12.2 金羽(Phoenix)个人防火墙浅析 343

12.2.1 金羽(Phoenix)个人防火墙简介 343

12.2.2 金羽(Phoenix)个人防火墙总体设计 344

12.2.3 金羽(Phoenix)个人防火墙总体结构 345

12.3 开发前的准备 345

12.3.1 常量的定义 346

12.3.2 访问规则 348

12.3.3 会话结构 348

12.3.4 文件结构 349

12.3.5 UNICODE支持 355

12.4 应用层DLL模块 356

12.4.1 DLL工程框架 356

12.4.2 共享数据和IO控制 362

12.4.3 访问控制列表ACL(Access List) 364

12.4.4 查找应用程序访问权限的过程 367

12.4.5 类的接口——检查函数 370

12.5 核心层SYS模块 373

12.6 主模块工程 375

12.6.1 I/O控制类 375

12.6.2 主应用程序类 377

12.6.3 主对话框中的属性页 380

12.6.4 主窗口类 381

12.7 防火墙页面 383

12.7.1 网络访问监视页面 383

12.7.2 应用层过滤规则页面 387

12.7.3 核心层过滤规则页面 397

12.7.4 系统设置页面 403

第13章 IP帮助函数 406

13.1 IP配置信息 406

13.1.1 获取网络配置信息 406

13.1.2 管理网络接口 408

13.1.3 管理IP地址 412

13.2 获取网络状态信息 415

13.2.1 获取TCP连接表 415

13.2.2 获取UDP监听表 418

13.2.3 获取IP统计数据 420

13.3 路由管理 427

13.3.1 获取路由表 427

13.3.2 管理特定路由 431

13.3.3 修改默认网关的例子 432

13.4 ARP表管理 433

13.4.1 获取ARP表 433

13.4.2 添加ARP入口 434

13.4.3 删除ARP入口 434

13.4.4 打印ARP表的例子 434

13.5 进程网络活动监视实例 438

13.5.1 获取通信的进程终端 438

13.5.2 Netstate源程序代码 439

第14章 Email协议及其编程 444

14.1 概述 444

14.2 电子邮件介绍 445

14.2.1 电子邮件Internet的地址 445

14.2.2 Internet邮件系统 445

14.2.3 电子邮件信头的结构及分析 446

14.3 SMTP原理 448

14.3.1 SMTP原理分析 448

14.3.2 SMTP工作机制 449

14.3.3 SMTP命令码和工作原理 449

14.3.4 SMTP通信模型 450

14.3.5 SMTP的命令和应答 451

14.4 POP3协议原理 452

14.4.1 POP3协议简介 452

14.4.2 POP3工作原理 453

14.4.3 POP3命令原始码 454

14.4.4 POP3会话实例 459

14.5 实例分析与程序设计 460

14.5.1 总界面设计 460

14.5.2 SMTP客户端设计 461

14.5.3 POP3客户端设计 473

(责任编辑:IT教学网)

更多

推荐CorelDraw教程文章