ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SylixOS中DNS静态映射简介

2019-04-08 10:51:21  阅读:286  来源: 互联网

标签:SylixOS 映射 地址映射 etc 域名 hosts DNS IP地址


#1. DNS功能简介
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,用户能够通过域名访问互联网,而不用去记住IP地址。通过域名得到其对应的IP地址的过程叫做域名解析。
每个域名都对应一个IP地址,但一个IP地址可以对应多个域名。
#2. SylixOS中DNS静态映射
主机名到IP地址的映射有两种方式:
1) 静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
2) 动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置域名到IP地址的映射。网络上需要使用域名的设备,首先需要到DNS服务器查询域名所对应的IP地址。
SylixOS中提供了两种主机名到IP地址的静态映射的实现方式。一种是在“/etc/hosts”文件中记录静态地址映射表;一种是以tshell命令的形式,在系统维护的哈希表中存放静态地址映射信息。
##2.1 /etc/hosts文件
网络组件初始化函数halNetInit中,会调用到函数API_NetInit初始化网络系统。在向操作系统内核注册网络组件的过程中,系统会调用函数__netCfgFileInit初始化“/etc/hosts”文件。
“/etc/hosts”文件中默认保存的信息为“127.0.0.1 localhost”,如图 2.1所示。
图 2.1 /etc/hosts文件内容
在“/etc/hosts”文件中增加地址映射信息“192.168.2.55 testip”,然后使用“ping testip”命令测试地址静态解析,发现成功地将testip地址解析为IP地址192.168.2.55,如图 2.2所示。
图 2.2 静态地址解析成功
在“/etc/hosts”文件中删除testip的地址映射信息,再次使用“ping testip”命令测试地址静态解析,发现地址解析失败,如图 2.3所示。
图 2.3 地址解析失败
##2.2 hosttable命令
在向操作系统内核注册网络组件的过程中,系统会调用函数__inetHostTableInit初始化本地地址转换表,同时添加名为“hosttable”的tshell命令。
使用hosttable命令可以查看本地动态主机域名表中保存的地址映射信息,使用“-s”选项可以增加一个地址映射信息,然后使用ping命令测试地址静态解析的结果,如图 2.4所示。
图 2.4 hosttable命令添加信息
使用“-d”选项可以删除一个地址映射信息,同时使用ping命令测试地址静态解析的结果,发现此时地址解析失败,如图 2.5所示。
图 2.5 hosttable命令删除信息
#3. SylixOS中DNS静态地址解析过程分析
SylixOS网络协议栈中会调用函数__inetHostTableGetItem查询本地动态主机域名表。
函数__inetHostTableGetItem查询本地动态主机域名表的过程可以分为三个部分。

  1. 查询本地主机地址
    SylixOS中定义了本地主机地址“sylixos”,如果查询的主机名为“sylixos”,输出参数传出解析完成的的IP地址,即127.0.0.1,同时函数返回成功。使用“ping sylixos”命令测试,结果如图 3.1所示。
    图 3.1 本地主机名sylixos
  2. 查询/etc/hosts文件保存的地址映射信息
    如果主机名不是“sylixos”,函数__inetHostTableGetItem会打开“/etc/hosts”文件,查询本地主机域名表,如果查询到相同主机名,输出参数传出对应的IP地址,并且函数返回成功。
  3. 查询hosttable命令添加的哈希表中的地址映射信息
    如果“/etc/hosts”文件中没有查询到相应的主机名,函数__inetHostTableGetItem随后会遍历hosttable命令添加的哈希表中的地址映射信息,如果查询到相同主机名,输出参数传出对应的IP地址,并且函数返回成功;如果没有查询到相应主机域名信息,则函数__inetHostTableGetItem返回失败。

标签:SylixOS,映射,地址映射,etc,域名,hosts,DNS,IP地址
来源: https://blog.csdn.net/qq_28267367/article/details/77977652

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有