随笔-6  评论-19  文章-0  trackbacks-0

Visual C# DNS开发

  1. IP协议和DNS简介
    1. IP协议简介
    2. 域名简介
  2. 与DNS相关类的简介
    1. Dns类
    2. IPHostEntry类
    3. IPAddress类
    4. DnsPermission类
  3. DNS程序示例
    1. 获取本地主机名称
    2. 解析主机
    3. 通过主机名获取主机信息
    4. 通过UP地址获取主机信息
    5. 将整数转换为IP地址格式
  4. DNS集成服务系统
  5. 本章小结

IP协议和DNS简介

IP协议简介

IP基本概念:

网际层是整个TCP/IP协议簇的重点,定义了IP,ICMP,ARP,RARP等协议。其中,IP是建立TCP/IP网络的基本协议,向其他运行在网际层中或网际层之上的协议提供了数据传送服务。IP所能提供的服务是无连接和不可靠的(尽力而为的服务):

  • 封装数据到IP数据报。
  • 将IP数据报传送到目的地
  • 对数据进行分段
  • 路由选择
1.1.1.JPG

IP基本操作:

IP协议的工作原理是:IP数据包到达网关后,本地网络接口去掉网络头(如果存在网络头),将结果传送给IP模块。由这个IP模块决定本地网络地址,然后传送数据报到本地网络接口。该本地网络接口创建一个本地网络头加在数据报上,将数据报传送到目的主机。在目的主机上,其网络接口去掉数据报上的网络头,将结果交给IP模块。IP模块决定把数据报向哪一个应用程序传送,然后系统发出系统调用,IP模块返回源地址和其他参数。

IP地址

在IPv4的IP地址包括4个字节,它定义了两个部分:NETID和HOSTID。其中NETID标识一个网络,而HOSTID标识在该网络上的一个主机。因此因特网地址是一种层次型地址,携带有对象位置的信息。
IP地址的一般格式为:类别 + Netid + Hostid,其中:

  1. 类别:用来区分IP地址的类型:
  2. 网络标识(Netid):表示入网主机所在的网络
  3. 主机标识(Hostid):表示入网主机在本网段中的标识。
类别 NetID HostID

通常将因特网IP地址分成5种类型:(A类、B类、C类、D类、E类)

1.1.2.JPG

A类地址:
网络标识占1个字节,第1位为“0”,允许有27-2=126个A类网络,每个网络大约允许有1670万台主机。通常分配给拥有大量主机的网络,如一些大公司(如IBM公司等)和因特网主干网络。net-id范围是1~126。

B类地址:
网络标识占2个字节,第1,2位为“10”,允许有214=16383个网络,每个网络大约允许有65533台主机。通常分配给结点比较多的网络,如区域网。net-id范围是128~191。

C类地址:
网络标识占3个字节,第123位为110,允许有221=2,097,151个网络,每个网络大约允许有254台主机。通常分配给结点比较少的网络,如校园网。一些大的校园网可以拥有多个C类地址。net-id范围是192~223。

D类地址:
前4位为“1110”,用于多址投递系统(组播)。目前使用的视频会议等应用系统都采用了组播技术进行传输。net-id范围是224~239。

E类地址:
前4位为“11110”,保留未用。net-id范围是240~255。

特殊地址:
1.1.3.JPG

域名简介

  1. 因特网采用了层次树状结构的命名方法。
  2. 任何一个连接在因特网上的主机或路由器,都有一个惟一的层次结构的名字,即域名。
  3. 域名的结构由若干个分量组成,各分量之间用点隔开: … .三级域名.二级域名.顶级域名
  4. 各分量分别代表不同级别的域名。

DNS用于域名和IP地址的解析,其工作原理如下:

  1. DNS客户向本地的DNS服务器发出解析请求
  2. 如果该DNS服务器本身含有客户所需要的数据,则直接返回给客户,如果没有,则服务器与其他DNS服务器联系,从其他DNS服务器上获取数据,然后返回给用户
  3. 如果解析不成功,则返回解析失败的异常信息

与DNS相关类的简介

DNS类

Dns 类是一个静态类,它从 Internet 域名系统 (DNS) 检索关于特定主机的信息。参看MSDN:
ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemNetDnsMembersTopic.htm

公共方法:

BeginGetHostByName
受 .NET Framework 精简版的支持。
开始异步请求关于指定 DNS 主机名的 IPHostEntry 信息。
BeginResolve
受 .NET Framework 精简版的支持。
开始异步请求将 DNS 主机名或 IP 地址解析为 IPAddress 实例。
EndGetHostByName
受 .NET Framework 精简版的支持。
结束对 DNS 信息的异步请求。
EndResolve
受 .NET Framework 精简版的支持。
结束对 DNS 信息的异步请求。
GetHostByAddress
受 .NET Framework 精简版的支持。
已重载。获取 IP 地址的 DNS 主机信息。
GetHostByName
受 .NET Framework 精简版的支持。
获取指定 DNS 主机名的 DNS 信息。
GetHostName
受 .NET Framework 精简版的支持。
获取本地计算机的主机名。
Resolve
受 .NET Framework 精简版的支持。
将 DNS 主机名或 IP 地址解析为 IPHostEntry 实例。

IPHostEntry类

IPHostEntry 类将一个域名系统 (DNS) 主机名与一组别名和一组匹配的 IP 地址关联。参看MSDN:
ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemNetIPHostEntryMembersTopic.htm

公共构造函数

IPHostEntry 构造函数
受 .NET Framework 精简版的支持。
初始化 IPHostEntry 类的新实例。

公共属性:

AddressList
受 .NET Framework 精简版的支持。
获取或设置与主机关联的 IP 地址列表。
Aliases
受 .NET Framework 精简版的支持。
获取或设置与主机关联的别名列表。
HostName
受 .NET Framework 精简版的支持。
获取或设置主机的 DNS 名称。

IPAddress类

参看MSDN:ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemNetIPAddressMembersTopic.htm

公共构造函数

IPAddress 构造函数
受 .NET Framework 精简版的支持。
已重载。初始化 IPAddress 类的新实例。

公共字段

Any
受 .NET Framework 精简版的支持。
提供一个IP 地址,指示服务器应侦听所有网络接口上的客户端活动。此字段为只读。
Broadcast
受 .NET Framework 精简版的支持。
提供 IP 广播地址。此字段为只读。
IPv6Any Socket.Bind 方法使用 IPv6Any 字段指示 Socket 侦听所有网络接口上的客户端活动。
IPv6Loopback 提供 IP 环回地址。此属性为只读。
IPv6None 提供指示不应使用任何网络接口的 IP 地址。此属性为只读。
Loopback
受 .NET Framework 精简版的支持。
提供 IP 环回地址。此字段为只读。
None
受 .NET Framework 精简版的支持。
提供指示不应使用任何网络接口的 IP 地址。此字段为只读。

公共属性

Address
受 .NET Framework 精简版的支持。
已过时. 网际协议 (IP) 地址。
AddressFamily 获取 IP 地址的地址族。
ScopeId 获取或设置 IPv6 地址范围标识符。

公共方法

Equals
受 .NET Framework 精简版的支持。
已重写。比较两个 IP 地址。
HostToNetworkOrder
受 .NET Framework 精简版的支持。
已重载。将值由主机字节顺序转换为网络字节顺序。
IsLoopback
受 .NET Framework 精简版的支持。
指示指定的 IP 地址是否是环回地址。
NetworkToHostOrder
受 .NET Framework 精简版的支持。
已重载。将数字由网络字节顺序转换为主机字节顺序。

Parse
受 .NET Framework 精简版的支持。

将 IP 地址字符串转换为 IPAddress 实例。
ToString
受 .NET Framework 精简版的支持。
已重写。将 Internet 地址转换为标准表示法。

DnsPermission类

用于控制对网络上域名系统 (DNS) 服务器的访问权限。默认权限允许所有的本地和 Intranet 区域的应用程序访问 DNS 服务,并且 Internet 区域的应用程序没有 DNS 权限。MSDN参看:
ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemNetDnsPermissionMembersTopic.htm

公共构造函数

DnsPermission 构造函数 创建 DnsPermission 类的新实例,该类或者允许无限制的 DNS 访问,或者不允许 DNS 访问。

公共方法

Deny(从 CodeAccessPermission 继承) 防止调用堆栈中处于较高位置的调用方通过调用此方法的代码来访问由当前实例指定的资源。
Equals(从 Object 继承) 已重载。确定两个 Object 实例是否相等。
PermitOnly(从 CodeAccessPermission 继承) 防止调用堆栈中处于较高位置的调用方通过调用此方法的代码来访问除当前实例指定的资源外的所有资源。
Union 已重写。创建一个是当前权限实例与指定权限实例的并集的权限实例。
posted on 2006-11-06 16:45 阿土仔的世界 阅读(1137) 评论(1)  编辑 收藏 引用 网摘 所属分类: 网络编程

评论:
# re: [课件]第一章:Visual C# DNS开发 2007-07-29 11:56 | 铂金
C#可以像JAVA一样自由的网络开发
http://www.hoopower.com
  回复  更多评论
  

只有注册用户登录后才能发表评论。