《《计算机网络编程技术》多媒体课件 P1 绪论》由会员分享,可在线阅读,更多相关《《计算机网络编程技术》多媒体课件 P1 绪论(40页珍藏版)》请在金锄头文库上搜索。
1、5/24/2019,1,计算机网络编程技术,第1章 绪论,张晓明 北京石油化工学院计算机系,5/24/2019,2,“2000-2001年度 国家八六三计划信息安全技术领域信息安全技术应急计划”,电子商务系统安全技术 网上安全支付技术 身份认证与数字签名 网络传媒信息安全技术 浏览器内容安全技术工具 网络安全管理与测评技术 网络隐患扫描 安全审计技术,信息防护技术 网络入侵检测与攻击防护 网络化动态病毒防治 快速反应及灾难恢复 操作系统安全增强技术 数据库安全增强技术 服务器安全增强技术 基础类技术研究 安全的网络协议研究 新型加密算法研究 网络安全管理技术研究 智能信息内容分析方法与研究 信
2、息安全系统工程方法研究 公共安全接口技术研究,5/24/2019,3,讲授内容指南,网络通信程序设计原理与基本方法; 重视安全扫描、安全传输和安全监测; 专题编程讲解,体现实用性: 主机扫描程序设计 基于TCP协议的程序设计 基于UDP协议的程序设计 远程屏幕监视程序设计 木马程序设计 IP语音网络通信程序设计 E-mail服务程序设计 FTP服务程序设计 网络信息加密传输程序设计 网络信息隐藏通信程序设计,5/24/2019,4,1.1 TCP/IP协议的体系结构,TCP/IP与OSI的比较 TCP/IP协议簇,5/24/2019,5,OSI模型,5/24/2019,6,应用程序如何使用协议
3、?,5/24/2019,7,1.2 网络编程的重要术语,套接字 网络服务类型 网络进程的标识 端口与端口号 客户机/服务器模式,5/24/2019,8,(1) 套接字,比喻:电源插口、电话插口、网络插口 3种基本类型及其比较: 流式套接字 提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复地发送,且按发送顺序接收。内设流量控制,避免数据流超限;数据被看作是字节流,无长度限制。 数据报套接字 提供了一个无连接服务。数据包以独立包形式被发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱。 原始套接字 该接口允许对较低层协议,如IP、ICMP直接访问。 常用于检验新的协议实现或访问现
4、有服务中配置的新设备。,5/24/2019,9,(2)服务方式:面向连接/无连接,5/24/2019,10,多媒体信息如话音、图像的网络传输应采用何种方式?,点对点方式:面向连接和无连接两种服务均可; 参见有关研究生论文。 广播方式:只能采用UDP协议,使用无连接服务; 对于无连接服务,可以由应用程序增加重传机制,来提供可靠的数据报服务。 参见:“提供可靠的数据报服务”,汤毅坚,计算机实用网络编程,人民邮电出版社,1993年3月,p 326-341。,5/24/2019,11,(3) 网络进程的标识与通信,地址 三级寻址:特定网络、主机地址、进程标识。类似于电话号码,如:86-10-81298
5、888 半相关与全相关 半相关:(协议,本地地址,本地端口号) 全相关:(协议,本地地址,本地端口号,远地地址,远地端口号),IP地址分类,5/24/2019,12,网络地址分类和子网掩码,最初设计有A、B、C三种掩码。 对一个特定IP地址进行“与”操作时,得到网络标识,路由器就是靠它是寻找地址的。例如: A类:(1.2.3.4) AND (255.0.0.0)=1.0.0.0 B类:(129.5.10.20) AND (255.255.0.0)=129.5.0.0 C类:(210.111.112.213) AND ( 255.255.255.0 )= 210.111.112.0 D类:多播地
6、址 E类:(保留用) 当地址全设置为1时(255),表示所包含的包是用来广播的。,5/24/2019,13,(3) 网络进程的标识与通信(续),端口与端口号 端口的概念:用于标识通信的进程 端口操作类似于一般的I/O操作 端口号的概念:类似于文件描述符 端口号的分配方法:全局分配/静态分配、动态分配 端口号的范围:065535 保留端口:01023,属于全局分配; 注册端口号:102449151,由一些公司注册。 常用端口号?HTTP,FTP,SMTP,5/24/2019,14,(4) 客户机/服务器模式,建立Client/Server模式的起因: 资源共享; 利于网间进程通信; 工作过程 服
7、务器方:重复服务请求/并发服务请求。其差异犹如个体餐馆和星级饭店比较 客户机方;,举例 说明,5/24/2019,15,并发服务器的工作原理,5/24/2019,16,1.3 C#网络编程概述,VS.NET介绍 常用的网络组件 IP寻址的类和方法 数据流 多线程技术,5/24/2019,17,(1) C#的一些特点,完全支持类和面向对象编程,包括接口和继承、虚函数和运算符重载的处理。 定义完整、一致的基本类型集。 对自动生成XML文档说明的内置支持。 自动清理动态分配的内存。 对.NET基类库的完全访问权,并易于访问Windows API。 可以使用指针和直接内存访问,但C#语言可以在没有它们
8、的条件下访问内存。 以VB的风格支持属性和事件。 ,5/24/2019,18,(2) 常用的网络组件,5/24/2019,19,System.Net命名空间中的主要类,5/24/2019,20,System.Net.Sockets命名空间中的主要类,5/24/2019,21,(3) IP寻址的类和方法,IPAddress类 IPHostEntry类 IPEndPoint类 Dns类,5/24/2019,22,主机IP寻址示例,string localName=Dns.GetHostName();/获取主机名 Console.WriteLine(“主机名:0“,localName); IPHos
9、tEntry localHost=Dns.GetHostByName(localName); /输出对应IP地址 foreach(IPAddress localIP in localHost.AddressList) Console.WriteLine(“IP地址:“,localIP.ToString(); /使用Parse方法创建IPAddress的实例 IPAddress ip1=IPAddress.Parse(“192.168.1.1“); Console.ReadKey();,5/24/2019,23,使用IPEndPoint类来指定IP地址与端口的组合,using System; u
10、sing System.Net; class TestIPEndPoint public static void Main() IPAddress localIP=IPAddress.Parse(“127.0.0.1“); IPEndPoint localEP=new IPEndPoint(localIP,8000); Console.WriteLine(“The local IPEndPoint is:0“,localEP.ToString(); Console.WriteLine(“The Address is:0“,localEP.Address); Console.WriteLine(
11、“The AddressFamily is:0“,localEP.AddressFamily); Console.ReadKey(); ,The Local IPEndPoint is:127.0.0.1:8000 The Address is:127.0.0.1 The AddressFamily is:InterNetwork,输出:,5/24/2019,24,(4) 数据流,网络流Network Stream,命名空间是System.Net.Sockets,用于网络数据的读/写操作; 内存流Memory Stream,命名空间是System.IO,用于内存数据的处理和转换; 文件流Fil
12、e Stream,命名空间是System.IO,用于文件的读/写操作。,5/24/2019,25,NetworkStream类,Socket netSocket=new Socket(AddressFamily.InterNetwork,SocketType.Dgram, ProtocolType.Udp); NetworkStream netStream=new NetworkStream(netSocket); 此后,程序将一直使用NetStream发送和接收网络数据,而不需要使用Socket对象NetSocket。,5/24/2019,26,MemoryStream类,MemoryStr
13、eam封装以无符号字节数组形式存储的数据,该数组在创建MemoryStream对象时被初始化,或者该数组可创建为空数组。 MemoryStream在屏幕图像捕获、音频实时处理等数据量大的场合得到应用,用于读/写内存数据流,经常作为不同缓冲数据之间的转换方式。,5/24/2019,27,FileStream类,文本文件的读/写类:StreamReader、StreamWrite; 二进制文件的读/写类:BinaryReader、BinaryWrite。,Directory和DirectoryInfo类,提供了对目录的各种操作; File和FileInfo类,提供了对文件的各种操作; Path类,
14、提供了对包含文件和目录路径信息的字符串进行操作的静态方法。,5/24/2019,28,文件流操作示例,using System; using System.IO; public class TestFileStream static void Main() StreamWriter sw=new StreamWriter(“MyFile.txt“,true,System.Text.Encoding. Unicode); sw.WriteLine(“第一条语句。“); sw.WriteLine(“第二条语句。“); sw.Close(); StreamReader sr=new StreamRe
15、ader(“MyFile.txt“,System.Text.Encoding. Unicode); while(string str=sr.ReadLine()!=null) Console.WriteLine(str); sr.Close(); Console.ReadLine(); ,5/24/2019,29,(5) 多线程技术,线程与进程比较 ? 基本操作:启动线程、让线程休眠、销毁线程、设置ThreadState属性、设置线程的优先级和线程池。 引用System.Threading命名空间 优先级: Normal、AboveNormal、BelowNormal、Highest、Lowe
16、st. 线程状态: Unstarted、Running、WaitSleepJoin、Stopped、AbortRequested、Suspended、Aborted等 线程池: 使用System.Threading中的ThreadPool类,5/24/2019,30,多线程技术示例,using System; using System.Threading; class TestMultiThreads public static void Main() Thread thread1=new Thread(new ThreadStart(Method1); Thread thread2=new Thread(new ThreadStart(Method2); thread1.Priority=ThreadPriority.Highest; /设置最高优先级 thread2.Priority=ThreadPriority.Normal; thread1.St