《C网络编程第五章C网络编程方法概述.ppt》由会员分享,可在线阅读,更多相关《C网络编程第五章C网络编程方法概述.ppt(70页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 1C#C#网络编程技术教程网络编程技术教程第五章 C#网络编程方法概述 第第5 5章章 C C#网网络络编编程程方方法法概概述述2 2学习目标学习目标了解了解TCP/IPTCP/IP结构及其基本概念。结构及其基本概念。掌握掌握.NET.NET网络编程基础知识。网络编程基础知识。掌握套接字编程的基本原理。掌握套接字编程的基本原理。掌握掌握C#C#中的多线程编程方法。中的多线程编程方法。第第5 5章章 C C#网网络络编编程程方方法法概概述述3 3本章内容本章内容5.1 TCP/IP5.1 TCP/IP概述概述 5.2 .NET5.2 .NET网络编程基础网络编程基础 5.3 5.3 套接字编
2、程套接字编程 5.4 5.4 多线程编程多线程编程 5.5 5.5 基于多线程的编程实例基于多线程的编程实例 第第5 5章章 C C#网网络络编编程程方方法法概概述述4 45.1 TCP/IP5.1 TCP/IP概述概述 1OSI参考模型在计算机网络产生之初,每个计算机厂商都有一套自己的网络体系结构的概念,它们之间互不兼容。为此,国际标准化组织(ISO)在1979年成立了一个分委员会来专门研究一种用于开放系统互连的体系结构(OpenSystemsInterconnection,OSI)。其中“开放”这个词表示:只要遵循OSI标准,一个系统可以和位于世界上任何地方的、也遵循OSI标准的其他任何系
3、统进行连接。这个分委员会提出了开放系统互连,即OSI参考模型,它定义了连接不同类型计算机的标准框架。OSI参考模型将计算机网络通信定义为一个七层框架模型,如图5.1所示。这七层分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。图5.1OSI参考模型5.1.1OSI参考模型与TCP/IP模型第第5 5章章 C C#网网络络编编程程方方法法概概述述5 55.1 TCP/IP5.1 TCP/IP概述概述 各层的主要功能及其相应的数据单位如下:(1)物理层(PhysicalLayer)要传递信息就要利用一些物理媒体,如双绞线、同轴电缆等,但具体的物理媒体并不在OSI的七层之内,有人把物
4、理媒体当作第0层,物理层的任务就是为它的上一层提供一个物理连接,以及它们的机械、电气、功能和过程特性。如规定使用电缆和接头的类型,传送信号的电压等。在这一层,数据还没有被组织,仅作为原始的位流或电气电压处理,单位是比特。(2)数据链路层(DataLinkLayer)数据链路层负责在两个相邻结点间的线路上,无差错地传送以帧为单位的数据。每一帧包括一定数量的数据和一些必要的控制信息。和物理层相似,数据链路层负责建立、维持和释放数据链路的连接。在传送数据时,如果接收点检测到所传数据中有差错,就要通知发送方重发这一帧。(3)网络层(NetworkLayer)在计算机网络中进行通信的两个计算机之间可能会
5、经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点,以确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息(源站点和目的站点地址的网络地址)。5.1.1OSI参考模型与TCP/IP模型第第5 5章章 C C#网网络络编编程程方方法法概概述述6 65.1 TCP/IP5.1 TCP/IP概述概述 (4)传输层(TransportLayer)传输层的任务是根据通信子网的特性来最佳地利用网络资源,并以可靠和经济的方式,为两个端系统(也就是源站和目的站)的会话层之间,提供建立、维护和取消传输连接的功能,并负责可靠地
6、传输数据。在这一层,信息的传送单位是报文。(5)会话层(SessionLayer)会话层也称为会晤层或对话层,在会话层及以上的高层次中,数据传送的单位不再另外命名,都统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。(6)表示层(PresentationLayer)表示层主要解决用户信息的语法表示问题。它将欲交换的数据从适合于某一用户的抽象语法,转换为适合于OSI系统内部使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩,加密和解密等工作都由表示层负责。5.1.1OSI参考模型与TCP/
7、IP模型第第5 5章章 C C#网网络络编编程程方方法法概概述述7 75.1 TCP/IP5.1 TCP/IP概述概述 (7)应用层(ApplicationLayer)应用层确定进程之间通信的性质以满足用户需要以及提供网络与用户应用软件之间的接口服务。当然,OSI参考模型只是一个框架,它的每一层并不执行某种功能。在这个OSI七层模型中,每一层都为其上一层提供服务,并为其上一层提供一个访问接口或界面。不同主机之间的相同层次称为对等层。如主机A中的表示层和主机B中的表示层互为对等层,主机A中的会话层和主机B中的会话层互为对等层等。对等层之间互相通信需要遵守通信协议,主要通过软件来实现。每一种具体的
8、协议一般都定义了OSI模型中的各个层次具体实现的技术要求,主机正是利用这些协议来接收和发送数据的。5.1.1OSI参考模型与TCP/IP模型第第5 5章章 C C#网网络络编编程程方方法法概概述述8 85.1 TCP/IP5.1 TCP/IP概述概述 2TCP/IP模型OSI参考模型的提出是为了解决不同厂商、不同结构的网络产品之间互连时遇到的不兼容性问题。但是该模型的复杂性阻碍了其在计算机网络领域的实际应用。与此相反,由技术人员自己开发的传输控制协议/网际协议(TransferControlProtocol/InternetProtocol,TCP/IP)协议栈模型都获得了更为广泛的应用,成为
9、因特网的基础。实际上,TCP/IP协议也是目前因特网范围内运行的唯一一种协议。TCP/IP模型和OSI参考模型的对比示意图,如图5.2所示。TCP/IP模型是美国国防部高级研究计划局计算机网(AdvancedResearchProjectsAgencyNetwork,ARPANET)和其后继因特网使用的参考模型。ARPANET是由美国国防部(U.SDepartmentofDefense,DoD)赞助的研究网络。最初,它只连接了美国境内的四所大学。但在随后的几年中,它通过租用的电话线连接了数百所大学和政府部门。最终ARPANET发展成为全球规模最大的互连网络因特网。5.1.1OSI参考模型与TC
10、P/IP模型第第5 5章章 C C#网网络络编编程程方方法法概概述述9 95.1 TCP/IP5.1 TCP/IP概述概述 从名字上看,TCP/IP包括两个协议,即传输控制协议(TransferControlProtocol,TCP)和网际协议(InternetProtocol,IP),但实际上TCP/IP是一系列协议的代名词,它包括上百个各种功能的协议,如:地址解析协议(ARP)、Internet控制消息协议(ICMP)、文件传输协议等,而TCP协议和IP协议只是保证数据完整传输的两个重要协议。通常讲TCP/IP,但实际上指的是因特网协议系列,而不仅仅是TCP和IP两个协议,所以也常称为TC
11、P/IP协议族。该协议族分为四个层次:链路层、网络层、传输层和应用层。其各层所包含的主要协议如图5.3所示,具体各层所负责的功能如下。5.1.1OSI参考模型与TCP/IP模型图5.2OSI参考模型与TCP/IP模型对比图5.3TCP/IP协议族第第5 5章章 C C#网网络络编编程程方方法法概概述述10105.1 TCP/IP5.1 TCP/IP概述概述 (1)链路层链路层是TCP/IP协议族的最低层,有时也被称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡,它们一起处理与电缆(或其他任何传输媒体)的物理接口。该层负责接收IP数据报并通过网络发送到网络传
12、输媒体上,或者从网络上接收物理帧,抽出IP数据报交给IP层。实际上,TCP/IP模型并没有真正描述这一层的实现,只是要求能够提供给其上层(网络层)一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法也随着网络类型的不同而不同。(2)网络层网络层是整个TCP/IP协议栈的核心,有时也被称为互联网层或IP层。该层的主要功能是把分组发往目标网络或主机。同时,为了尽快发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层对分组进行排序。网络层除了完成上述功能外,还完成将不同类型的网络(异构网)进行互连的功能。除此之外,网络层还
13、需要完成拥塞控制的功能。在TCP/IP协议族中,网络层协议包括IP协议(网际协议)、ICMP协议(因特网控制报文协议)和IGMP协议(因特网组管理协议)。5.1.1OSI参考模型与TCP/IP模型第第5 5章章 C C#网网络络编编程程方方法法概概述述11115.1 TCP/IP5.1 TCP/IP概述概述 (3)传输层传输层主要为两台主机上的应用程序提供端到端的数据通信,它分为两个协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供有质量保证的端到端的数据传输。若传输层使用TCP协议,则该层负责数据的分组、质量控制和超时重发等,对于应用层来说,就可以忽略这些工作。UDP则只负责
14、简单地把数据报从一端发送到另一端。若传输层使用UDP协议,则数据是否到达、是否按时到达、是否损坏都必须由应用层来控制。这两种协议各有用途,前者可用于面向连接的应用,后者则在及时性服务中有着重要的用途,如网络多媒体通信等。(4)应用层应用层负责处理实际的应用程序细节,主要包括超文本传输协议(HTTP)、简单网络管理协议(SNMP)、文件传输协议(FTP)、简单邮件传输协议(SMTP)、域名系统(DNS)、远程登录协议(Telnet)等。其中,有些应用层协议是基于TCP来实现的,例如FTP、HTTP等,有些则是基于UDP来实现的,如SNMP等。5.1.1OSI参考模型与TCP/IP模型第第5 5章
15、章 C C#网网络络编编程程方方法法概概述述12125.1 TCP/IP5.1 TCP/IP概述概述 3TCP/IP工作原理由上述OSI参考模型可知,在因特网上源主机的协议层与目的主机的同层通过下层提供的服务实现对话。TCP/IP协议族模型也是按照这一原则来工作的。它们之间的对话实际上是在源主机上从上到下传递然后穿越网络到达目的主机后再从下到上到达相应层。下面以图5.4中的客户机A(信源)和服务器B(信宿)之间采用应用层协议HTTP协议提交数据请求为例,说明TCP/IP的工作原理。5.1.1OSI参考模型与TCP/IP模型第第5 5章章 C C#网网络络编编程程方方法法概概述述13135.1
16、TCP/IP5.1 TCP/IP概述概述 图5.4中的逻辑传输线路表明了数据传输的方向,以及信源和信宿,实际传输线路则表明了请求数据的真实传输链路。请求数据从信源传输到目的信宿的过程可描述如下:(1)在信源上,利用应用层协议(HTTP)将需传输的请求数据流传送给信源上的传输层(TCP)。(2)信源上的传输层将应用层的请求数据流截成若干分组,并加上TCP首部形成TCP段,送交信源上的网络层(IP)。(3)信源的网络层给TCP段加上包括源、目的主机IP地址的IP首部,生成一个IP数据报,并将IP数据报送交信源的链路层。(4)信源的链路层在其MAC帧的数据部分装上IP数据报,再加上源、目的主机的MA
17、C地址和MAC帧头,并根据其目的MAC地址,将MAC帧发往信宿或中间路由器,例如路由器R。(5)路由器是一个具有多个接口的网络互连设备,可以把数据从一个网络转发到另一个网络。当数据传输到路由器后,路由器将根据数据包中的目的地址进行传输路径的选择,并根据所选择的传输路径进行数据传输。通常,路由器只处理链路层和网络层的数据。在本实例中,路由器接收客户机A发送过来的IP数据报,并将该数据报转发给服务器B。5.1.1OSI参考模型与TCP/IP模型第第5 5章章 C C#网网络络编编程程方方法法概概述述14145.1 TCP/IP5.1 TCP/IP概述概述 (6)当数据传输到信宿,链路层将MAC帧的
18、帧头去掉,并将IP数据报送交信宿的网络层。(7)信宿的网络层检查IP数据报首部,假如首部中校验和与计算结果不一致,则丢弃该IP数据报;若校验和与计算结果一致,则去掉IP首部,将TCP段送交信宿的传输层。(8)信宿的传输层检查顺序号,判定是否是正确的TCP分组,然后检查TCP首部数据。若正确,则向信源发确认信息;若不正确或丢包,则向信源要求重发信息。(9)信宿的传输层去掉TCP首部,将排好顺序的分组组成应用数据流送给信宿上相应的应用程序。这样信宿接收到的来自信源的字节流,就像是直接接收到来自信源的字节流一样。5.1.1OSI参考模型与TCP/IP模型第第5 5章章 C C#网网络络编编程程方方法
19、法概概述述15155.1 TCP/IP5.1 TCP/IP概述概述 5.1.2TCP/IP基本概念1IP地址IP地址是进行TCP/IP协议通信的基础,IP地址是对连接在因特网中的设备进行唯一性标识的设备编码,与日常生活中寄信时所用的信箱号类似,以便设备之间能根据IP地址来识别。在因特网中,根据TCP/IP协议规定,在IPv4中,IP地址由32位二进制数组成,其地址空间是0232-1。为了便于记忆,将这32位二进制数分成四段,每段8位,中间用小数点隔开,将每八位二进制数转换成一位十进制数,这样就形成了点分十进制的表示方法。例如:192.168.0.181。一个简单的IP地址的格式为:IP地址=网
20、络地址+主机地址,包含了网络地址和主机地址两部分重要的信息。由于IPv4定义的有限地址空间将被耗尽,地址空间的不足必将影响因特网的进一步发展。所以在最新出台的IPv6中IP地址升至128位。IP地址共分五类:A类、B类、C类、D类和E类。其中A类、B类和C类为基本类;D类用于多播传送;E类属于保留类,暂未使用。它们的格式如下所示,其中“*”代表网络号位数。第第5 5章章 C C#网网络络编编程程方方法法概概述述16165.1 TCP/IP5.1 TCP/IP概述概述 5.1.2TCP/IP基本概念A类地址的最高位必须是“0”,其第一个字节为网络地址,后三个字节为主机地址。因此A类地址可拥有12
21、6个网络地址数,其中每个网络最多可以包含的主机数目为224-2(主机地址全1和全0都属于特殊地址),即有16777214台主机。因此,A类地址适用于超大规模的网络。B类地址的最高两位必须是“10”,前两个字节为网络地址,后两个字节为主机地址。B类IP地址中网络地址长度为14位,有16384个网络,其中每个网络最多可以包含的主机数目为2162,即有65534台主机。因此,B类地址适用于中等规模的网络。第第5 5章章 C C#网网络络编编程程方方法法概概述述17175.1 TCP/IP5.1 TCP/IP概述概述 5.1.2TCP/IP基本概念C类地址的最高三位必须是“110”,前三个字节为网络地
22、址,最后一个字节为主机地址。因此,C类地址的网络数目为221,即有2907152个网络,其中每个网络可以包含的主机数目为282,即有254台主机。因此,C类地址适用于小规模的局域网络。D类地址与前三类地址不同,它是一种特殊的IP地址类,应用于多播通信,因此也被称为多播地址。地址前面有4个引导位“1110”,其余的28位表示多播地址,因此其地址范围为:224.0.0.0239.255.255.255。D类地址只能作为目的地址,不能作为源地址。E类地址是一般不用的实验性地址,前面包含4个引导位“1111”,因此其地址范围为:240.0.0.0255.255.255.255。第第5 5章章 C C#
23、网网络络编编程程方方法法概概述述18185.1 TCP/IP5.1 TCP/IP概述概述 5.1.2TCP/IP基本概念除上述几类地址外,还有几个特殊的地址。网络地址:IP地址中主机地址为0的地址表示网络地址。这类地址不指派给任何主机,它只保留用来定义某个网络的地址。例如,某主机的IP地址为175.22.10.48,它是一个B类地址,则该主机所在网络的地址为175.22.0.0。广播地址:在A、B、C三类地址中,主机号全为“1”的地址为广播地址。这类地址用来同时向指定网络的所有主机发送信息。例如,如果某台主机使用175.22.255.255为目标地址发送数据报时,则网络地址为175.22.0.
24、0的网络中的所有主机都能收到该数据报。回送地址:在IP地址中,首字节数值为“127”的地址是一个保留地址,称为回送地址。如:127.0.0.1即为一个回送地址。该类地址用于网络测试或本机进程间通信。发送到这种地址的数据报不输出到线路上,而是立即被返回,又当作输入数据报在本机内部进行处理。例如,常用的“ping”命令,就是发送一个将回送地址作为目的地址的数据报,以测试IP软件能否接受和处理数据报。第第5 5章章 C C#网网络络编编程程方方法法概概述述19195.1 TCP/IP5.1 TCP/IP概述概述 5.1.2TCP/IP基本概念2子网与掩码如上所述,IP地址最初采用的是网络地址和主机地
25、址两级结构,然而在实际组网过程中,常常会出现使用C类地址时,主机编址空间不够,而使用A类或B类地址时,又会造成大量IP地址浪费的现象。为此,IP地址现在多采用三级结构,即IP地址=网络地址+子网地址+主机地址。把每个网络的主机地址空间根据需要再进一步划分成若干个子网,则原来两级地址结构中的主机地址又细分为子网地址和主机地址,子网地址位数根据子网的实际规模来确定。具体三级结构地址的确定需要借助子网掩码来实现。子网掩码是一个32位地址掩码,对应于网络地址和子网地址的地址掩码位设置为“1”,而对应于主机地址的地址掩码位设置为“0”。子网掩码用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该I
26、P地址是在局域网上,还是在远程网上。确定子网掩码的过程也就是划分子网的过程,通常划分步骤如下:(1)确定网络地址,划出网络标识和主机标识。例如:申请到的网络号为“202.195.a.b”,该网络地址为C类IP地址,网络标识为“202.195”,主机标识为“a.b”。(2)根据需求确认子网个数。在确认子网个数时应当考虑将来的扩展情况。例如:现在需要12个子网,将来可能需要16个子网,则至少需要用第三个字节的前四位来确定子网掩码,而后四位仍然用于主机地址。所以将前四位都置为“1”,后四位全置为“0”,即第三个字节为“11110000”。第第5 5章章 C C#网网络络编编程程方方法法概概述述202
27、05.1 TCP/IP5.1 TCP/IP概述概述 5.1.2TCP/IP基本概念(3)得出子网掩码。对应于网络地址和子网地址的地址掩码位设置为“1”,而对应于主机地址的地址掩码位设置为“0”。则子网掩码的二进制形式为:“11111111.11111111.11110000.00000000”,即为“255.255.240.0”。3端口号按照TCP/IP模型的描述,应用层所有的应用进程(应用程序)都可以通过传输层再传送到IP层,传输层从IP层收到数据后必须交付给指明的应用进程,因此必须给应用层的每一个应用程序赋予一个非常明确的标志。由于在因特网上使用的计算机的操作系统种类很多,不同的系统会使用
28、不同的进程标识符,因此无法采用计算机中的进程标识符来作为标志,必须采用统一的方法对TCP/IP体录的应用进程进行标志。为了标识通信实体中进行通信的进程,TCP/IP协议提出了协议端口(protocolport,简称端口)的概念。端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序通过系统调用与某端口绑定(binding)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据也通过该端口输出。类似于文件描述符,每个端口都拥有一个叫端口号的整数描述符,用来区别不同的端口。TCP/IP协议使用一个16位的整数来标识一个端口,它的范围是065535。由于TCP协议和U
29、DP协议是两个完全独立的软件模块,因此各自的端口号也相互独立。如TCP有一个255号端口,UDP也可以有一个255号端口,两者并不冲突。第第5 5章章 C C#网网络络编编程程方方法法概概述述21215.1 TCP/IP5.1 TCP/IP概述概述 5.1.2TCP/IP基本概念端口号的分配通常有以下两种方法:(1)全局分配这是一种集中分配方式,由一个公认权威的机构根据用户需要进行统一分配,并将结果公布于众。(2)本地分配本地分配又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和端口连接起来。TCP/IP端口号的分
30、配综合了以上两种方式,将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程。每一个标准服务器都拥有一个全局公认的端口,即使在不同的机器上,其端口号也相同。剩余的为自由端口,以本地方式进行分配。TCP和UDP规定,小于256的端口才能作为保留端口。具体讲,TCP/IP端口号分为如下两类。(1)服务器端使用的端口号。服务器端的端口号又分为两类,最重要的一类叫公认端口号(well-knownportnumber)或系统端口号,从01023,它们紧密绑定于一些服务。通常这些端口的通信明确表明了某种服务的协议。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Tel
31、net服务器的TCP端口号都是23,每个TFTP(简单文件传送协议)服务器的UDP端口号都是69,HTTP通信的端口号实际上总是80端口等。第第5 5章章 C C#网网络络编编程程方方法法概概述述22225.1 TCP/IP5.1 TCP/IP概述概述 5.1.2TCP/IP基本概念另一类叫注册端口号(RegisteredPorts),从102449151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。例如,许多系统处理动态端口从1024左右开始。使用这类端口号必须在IANA按照规定的手续登记,以防重复。(2)客户端使用的端口号。这类端口通常又称为动
32、态和/或私有端口(Dynamicand/orPrivatePorts),从4915265535。理论上,不应为服务分配这些端口。这类端口号是留给客户进程选择暂时使用的。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的端口号,因而可以把数据发送给客户进程。通信结束后,刚才已经使用过的客户端口号就不复存在。这个端口号就可以供其他客户进程以后使用。实际上,机器通常从1024开始分配动态端口。4地址解析地址解析(AddressResolution)就是将计算机中的协议地址翻译成物理地址(或称MAC地址,即媒体映射地址)。地址解析技术可分为如下3种。(1)表查询(Table-Lookup)。该
33、方法适用于广域网,通过建立映射数组(协议地址物理地址)的方法解决。当需要进行地址解析时,由软件通过查询找到物理地址。第第5 5章章 C C#网网络络编编程程方方法法概概述述23235.1 TCP/IP5.1 TCP/IP概述概述 5.1.2TCP/IP基本概念(2)相近形式计算(Closed-FormComputation)。该方法适用于可以自行配置的网络,IP地址和物理地址相互对应。通常分配给计算机的协议地址是根据其物理地址经过仔细挑选的,使得计算机的物理地址可以由它的协议地址经过基本的逻辑和算术运算计算出来。例如:202.195.50.1XXXl202.195.50.2XXX2可通过这种算
34、法得到物理地址:物理地址协议地址&0 xFF。(3)信息交换(MessageExchange)。该方式适用于LAN,是基于分布式的处理方式,即主机发送一个解析请求,以广播的形式发出,并等待网络内各个主机的响应。TCP/IP协议包含了地址解析协议(AddressResolutionProtocol,ARP)。ARP标准定义了两种基本信息类型:请求与响应。当一台主机要求转换一个IP地址时,它广播一个含有该IP地址的ARP请求,如果该请求与一台机器的IP地址匹配,则该机器发出一个含有所需物理地址的响应。响应是直接发给广播该请求的机器的。在使用ARP的计算机上都保留了一个高速缓存,用于存放最近获得的I
35、P地址到物理地址的绑定,在发送分组时,计算机先到缓存中寻找所需的绑定,如没有,则发出一个ARP请求。接收方在处理ARP分组之前,先更新它们缓存中发送方的IP地址到物理地址的绑定信息,再进行响应或抛弃。第第5 5章章 C C#网网络络编编程程方方法法概概述述24245.1 TCP/IP5.1 TCP/IP概述概述 5.1.2TCP/IP基本概念5域名系统在Internet上,既可以使用主机名标识一台主机,也可以使用IP地址来标识。但是在TCP/IP中,点分十进制的IP地址记起来总是不如名字那么方便,人们更愿意使用便于记忆的主机名标识符,所以,就采用了域名系统(DomainNameSystem,D
36、NS)来管理名字和IP地址的对应关系。一个系统的全域名由主机名、域名和扩展名三部分组成,各部分间使用“”分隔,例如。在TCP/IP应用中,域名系统是一个分布的数据库,由它来提供IP地址和主机名之间的映射信息,可以通过在程序中调用标准库函数来编程实现域名与IP地址之间的相互转换,这一转换过程称为“域名解析”。通过从域名地址到IP地址的映射,使得在日常的网络应用中,可以使用域名这种便于记忆的地址表示形式。所有的网络应用程序理论上都应该具有内嵌的域名解析机制。第第5 5章章 C C#网网络络编编程程方方法法概概述述25255.1 TCP/IP5.1 TCP/IP概述概述 5.1.2TCP/IP基本概
37、念域名解析的流程由以下几步构成:(1)客户机提出域名解析请求,并将该请求发送给本地的域名服务器。(2)当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该记录项,则本地的域名服务器就直接把查询的结果返回。(3)如果本地的缓存中没有该记录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。(4)本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该记录,则返回相关的下级域名服务器的地址。(5)重复第四步,直到找到正确的记录。(6)本地域名服务器把返回的结果保存到缓存,以备下
38、一次使用,同时还将结果返回给客户机。第第5 5章章 C C#网网络络编编程程方方法法概概述述26265.1 TCP/IP5.1 TCP/IP概述概述 5.1.2TCP/IP基本概念当主机通过网络向其他设备传输数据时,首先要对数据进行打包,这一打包的过程就称为数据封装。在TCP/IP模型中,为了实现通信并交换信息,每一层都有各自的协议数据单元(ProtocolDataUnits,PDU),通过封装使每个PDU附加到数据上。每个PDU都有其特定的名称,如:链路层数据帧,网络层数据包,传输层数据段。这种PDU信息只能由接收方设备中的对等层读取,在读取之后,报头就被剥离,然后把数据交给上一层。数据的封
39、装过程如图5.5所示。解封装则是数据封装的逆过程,当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称为解封装。第第5 5章章 C C#网网络络编编程程方方法法概概述述27275.2 .NET5.2 .NET网络编程基础网络编程基础 5.2.1.NET中的网络组件C#和C+的差异之一,就是它本身没有类库,C#所使用的类库是.Net框架中的类库.NetFrameworkSDK。因此了解并掌握.Net框架为网络编程提供的类库是学习C#网络编程的前提。.Net框架为网络开发提供了
40、两个顶层命名空间:System.Net和System.Web,同时它们又包含多个子命名空间,C#就是通过这些命名空间中封装的类和方法实现网络通信编程、Web应用编程以及WebService编程的。具体命名空间及其所含类的功能概述如表5.1所示。第第5 5章章 C C#网网络络编编程程方方法法概概述述28285.2 .NET5.2 .NET网络编程基础网络编程基础 5.2.1.NET中的网络组件命名空间功能概述System.Net为当前网络上流行的多种协议提供一个统一、简单的编程接口。其中WebRequest和WebResponse类形成了“可插入协议”的基础,利用这种网络服务的实现,可以开发在
41、使用Internet资源时不必考虑所用协议具体细节的应用程序System.Net.Cache定义类型和枚举,这些类型和枚举用于为使用WebRequest和HttpWebRequest类获取的资源定义缓存策略System.Net.Configuration所含类提供以编程方式访问和更新System.Net命名空间的配置设置的功能System.Net.Mail用于将电子邮件发送到简单邮件传输协议(SMTP)服务器进行传送的类System.Net.Mime包含用于表示多用途Internet邮件交换(MIME)标头的类型。这些类型与System.Net.Mail命名空间中的类型一起使用,用于在使用Sm
42、tpClient类发送电子邮件时指定Content-Type、Content-Disposition和Content-transfer-Encoding标头System.Net.NetworkInformation提供对网络流量数据、网络地址信息和本地计算机的地址更改通知的访问。该命名空间还包含实现Ping实用工具的类。您可以使用Ping和相关的类检查是否可通过网络访问某台计算机System.Net.Security为网络流在主机间的传输提供了安全控制System.Net.Sockets为需要严格控制网络访问的开发人员提供Windows套接字(Winsock)接口的托管实现System.Web
43、包含启用浏览器/服务器通信的类和接口。这些命名空间类用于管理到客户端的HTTP输出(HttpResponse)和读取HTTP请求(HttpRequest)。附加的类则提供了一些功能,用于服务器端的实用程序以及进程、cookie管理、文件传输、异常信息和输出缓存控制System.Web.UI包含创建Web窗体页的类,包括Page类和用于创建Web用户界面的其他标准类System.Web.UI.HtmlControls包含创建ASP.NETWeb 服务器控件的类。当添加到Web窗体时,这些控件将呈现浏览器特定的HTML和脚本,用以创建与设备无关的Web用户界面System.Web.Mobile包含
44、生成ASP.NET移动Web应用程序所需的核心功能,包括身份验证和错误处理System.Web.UI.MobileControls包含一组ASP.NET服务器控件,这些控件可以针对不同的移动设备呈现应用程序System.Web.Services包含使您能够生成和使用XMLWebservices的类,这些服务是驻留在Web服务器中的可编程实体,并通过标准Internet协议公开第第5 5章章 C C#网网络络编编程程方方法法概概述述29295.2 .NET5.2 .NET网络编程基础网络编程基础 5.2.1.NET中的网络组件类名功能概述DNS提供简单域名解析功能DnsPermission控制对
45、网络DNS服务器的访问EndPoint用于标识网络地址FileWebRequest为WebRequest类提供了一个文件系统实现FileWebResponse为WebResponse类提供了一个文件系统实现HttpVersion定义了由HttpWebRequest和HttpWebResponse类支持的HTTP版本号HttpWebRequest为WebRequest类提供了特定于HTTP的实现HttpWebReponse为WebResponse类提供了特定于HTTP的实现IPAddress提供了IP地址IPEndPoint以IP地址和端口号的形式代表一个网络终端IPHostEntry为Inte
46、rnet主机地址信息提供了容器类ProtocolViolationException当使用网络协议时出现错误,则将抛出由该类所代表的异常SocketAddress代表一个套接字地址SocketPermission控制在传输地址上生成或接收连接的权限SocketPermissionAttribute允许将SocketPermission的安全动作,施用于使用声明安全性的代码WebClient为客户与Internet资源间的数据发送和接收提供了通用方法WebException当通过可插入协议访问网络时出现错误,则将抛出由该类代表的异常WebProxy包含WebRequest类的HTTP代理WebR
47、equest代表一个到URI的请求WebResponse代表来自URI的响应第第5 5章章 C C#网网络络编编程程方方法法概概述述30305.2 .NET5.2 .NET网络编程基础网络编程基础 5.2.1.NET中的网络组件类名功能概述LingerOption包含套接字延迟时间的信息,即当数据仍在发送时,套接字应在关闭后保持的时间MulticastOption包含了IP多点传送数据包的选项值NetworkStream为网络访问提供了基础数据流Socket实现了Berkeley套接字接口SocketException当出现套接字错误时,将抛出由该类所代表的异常TCPClient为TCP网络服
48、务提供了客户连接TCPListener用以监听TCP客户连接UDPClient用于提供UDP网络服务第第5 5章章 C C#网网络络编编程程方方法法概概述述31315.2 .NET5.2 .NET网络编程基础网络编程基础 5.2.1.NET中的网络组件类名功能概述HttpApplication定义了ASP.NET应用程序中所有应用程序对象的通用方法、属性和事件HttpApplicationState允许ASP.NET应用程序中的多个会话和请求共享全局信息HttpBrowserCapabilities允许服务器收集客户端浏览器的性能信息HttpContext封装了所有关于HTTP请求的特定信息H
49、ttpException提供了生成HTTP异常的手段HttpFileCollection为由用户上传的文件提供访问和组织手段HttpParseException为生成HTTP解析异常提供了手段HttpPostedFile提供了访问由客户上传的文件的方式HttpRequest允许ASP.NET读取在Web请求中由客户发送的HTTP值HttpResponse封装了来自一个ASP.NET操作的HTTP响应信息HttpUtility为处理Web请求时的URL编码和解码提供了方法ProcessInfo提供了当前运行的进程信息第第5 5章章 C C#网网络络编编程程方方法法概概述述32325.2 .NET
50、5.2 .NET网络编程基础网络编程基础 5.2.2网络编程中的常用类1IP地址类与IP地址相关的类有IPAddress类、IPHostEntry类、IPEndPoint类等。IPAddress类是一个描述IP地址的类,主要用来存储IP地址。IPAddress类的属性和方法如下表所示。属性、方法名说明Any只读属性,提供一个IP地址,标识服务器应该监听所有网络接口上的客户活动Broadcast只读属性,提供IP广播地址,等价于255.255.255.255Loopback只读属性,提供IP回送地址,等价于127.0.0.1None只读属性,提供一个IP地址,标识不应使用网络接口Address获