- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验主机域名和IP地址的解析
实验二、 主机(域)名和 IP 地址解析
实验目的及要求:掌握主机(域)名和IP地址相互转换的工作原理,学会使用Winsock提供的相关函数编制程序。
实验方法: 1. 阅读文档,熟悉主机(域)名和IP地址解析工作原理;
2. 参考本实验后附录的关键功能的程序示例,使用Visual C++ 输入编辑、编译、运行与调试解析程序;
3. 在命令行状态下测试本机主机名和IP地址是否解析正确,测试附录中表里所列信息是否正确,并记录一些常用门户网站的域名及对应的IP地址。
实验内容:(1)写出编写的 Visual C++域名和地址解析源程序如下:
(2)运行、测试域名地址解析程序,记录测试结果,分析遇到的问题与解决的办法。
(3)记录 5个常用门户网站的域名及对应的 IP 地址。
编程背景材料:
1.基本概念
(1)主机(域)名 -> IP地址解析
Winsock 应用程序如要通过 TCP/IP 网络和另一台主机通信时,必须知道那个主机的 IP 地址。依用户看来, IP 地址是不容易记的。在指定机器时,许多人更愿意利用一个易记的、友好的主机名而不是 IP 地址。Winsock 提供了两个支持函数,它们有助于用户把一个主机名解析成 IP 地址。
Windows 套接字API函数 gethostbyname() 和 WSAAsynGetHostByName() 从主机数据库中取回与指定的主机名对应的主机信息。两个函数均返回一个 HOSTENT 结构,在 winsock2.h 里该 HOSTENT 结构的格式声明如下:
struct hostent {
char FAR * h_name; /* official name of host */
char FAR * FAR * h_aliases; /* alias list */
short h_addrtype; /* host address type */
short h_length; /* length of address */
char FAR * FAR * h_addr_list; /* list of addresses */
#define h_addr h_addr_list[0] /* address, for backward compat */
};
并由此定义了指向该结构的指针LPHOSTENT:
typedef struct hostent FAR * LPHOSTENT;
h_name 字段是正式的主机名。如果解析名字时使用域名系统 DNS,它就是使域名服务器返回响应的“全限定域名”(FQDN)。如果解析名字时按本机系统目录中的 hosts 文件来解析,主机名就是该文件中对应 IP 地址行后跟的第一个主机名。 h_aliases 字段是一个由若干个主机别名组成的空中止字符串数组。 h_addrtype 表示即将返回的地址家族类型。h_length 字段则对 h_addr_list 字段中的每一个地址的字节长度进行定义。 h_addr_list 字段是一个由若干个主机 IP 地址组成的空中止数组(因为可以为一台主机分配若干个 IP 地址),这个数组中的每个地址都是按网络字节顺序返回的。一般情况下,应用程序都采用该数组中的第一个 IP 地址。但是,如果返回的地址不止一个,应用程序就会相应地选择一个最恰当的,而不是一直都用第一个地址。可以使用 inet_ntoa() 函数将网络字节顺序的地址转换到以‘.’分隔的十进制字符串形式。
=====================================================================
说明(1) : “主机字节顺序”与“网络字节顺序”
如将四字节的IP地址“”(MSB=1, LSB=4)写成一个 unsigned long 型的长字时,字节顺序的排法有两种:一种是 Intel X86 主机内存中的排法,叫“主机字节顺序”,最低有效字节LSB在前,最高有效字节MSB在后,字节顺序为 0x04,0x03,0x02,0x01;另一种是“网络字节顺序”,这是互联网联网标准指定使用的多字节顺序排法,它规定,最高有效字节MSB在前,最低有效字节LSB在后,因此,上例的字节顺序排成 0x01,0x02,0x03,0x04.
文档评论(0)