新闻资讯

域名和ip之间的转换工作是什么?域名转ip如何实现?

2019-03-7

对我们普通用户而言,形象化的符号要比一捆枯燥的数字编码要好记得多。比如,我们会很容易地记住字符串“www.oscar.com” ,却很难记住206.17.191.12。这就需要我们对域名和ip地址之间进行转换,那么域名转ip有什么好的方法呢?本文小编带大家了解一下域名和ip之间的转换工作和域名转ip的操作方法,希望能够帮助到有需要的人。

域名和ip之间的转换工作是什么?

Internet命名规则和地址划分约定

在Internet上,符号名(symbolic Name)用来命名主机和网络,例如www.oscar.com。这些符号名的“学名”叫做“Domain Name”,即域名。虽然域名对我们来说方便得多,但在它们用作通信标识之前,必须转换为ip地址(Internet Protocol Address)。ip地址是一个32位的标识符,包括一个网络标识和主机标识,以便唯一地标识主机和网络。域名转换为ip地址的工作是由专门的系统完成,这就是域名系统(Domain Name SystemDNS)。

同一网络或不同网络主机之间进行数据的发送/接收时,ip地址就开始起作用了。如果是同一网络中主机之间的数据传递,则仅利用ip地址中的主机标识,来确定网络中主机的所在。另一方面,如果是不同网络中主机之间的通信,则要同时利用主机标识和网络标识来确定相应的主机。定位网络和主机,再进行数据传送的过程称为路由(routing)。网络中的路由器(router)包含一个ip层(ip Layer),它负责执行路由算法,将数据包发送到目的地。在Internet上,将数据库发送到目的地是ip层份内之事。

ip地址是Internet注册部门Network Information Center(网络信息中心NIC)分配给不同的组织,各组织再下放给多个部门。ip地址要占用4个字节。

经过路由的数据包,也有可能会在传送的过程中丢失。于是,人们就利用底层传输协议,来进行数据传送正确与否的判断。例如,TCP用于检查错误或数据丢失,并在出错时,再次发送相应的数据库,直至对方主机正确接收为止。

域名转ip如何实现?

1,hostent结构体
2,gethostbyname函数的用法
以上内容全都是在Linux环境里。

详细内容

1,hostent结构体
struct hostent
{
char * h_name;
char alias_list;
int h_addrtype;
int h_length;
char h_addr_list;
};
h_name:主机的规范名,如“www.baidu.com”,它的规范名其实是“www.a.shifen.com”,这一点可以通过ping命令得到。

alisa_list:这是主机的别名,它是一个二级指针,这是因为主机的别名有可能有好几个。

h_addrtype:指主机的ip地址类型,到底是ipV4还是ipV6。

h_length:指主机的ip地址长度。

h_addr_list:它也是一个二级指针,它主要指向主机ip地址数组的指针,这是因为一个主机它的ip地址可能有多个,这也不难理解,如果你有多个网卡,你的ip地址自然也是有多个,但它们实际却都是指向你的。
另外还有一个定义h_addr它是一个指针,它指向h_addr_list[0],其实大部分时候我们只需要一个ip地址就够了,所以没必要知道那么多它的别名,需要注意的是这里的ip都是二进制的形式,它不是我们常见的点分十进制形式,所以如果直接打印可能会带来疑惑。
2,gethostbyname函数

它所在头文件:
sys/socket.h
netdb.h
//这里之所以不用include那种形式是因为带上‘#’markdown字体将会变大,所以见谅。
函数原型:
hosten gethostbyname(const char hostname);
它返回一个结构体的指针,如果没有找到“hostname”,将会返回NULL。

花生壳动态域名解析于2013年11月11日正式发布花生壳(内网穿透)服务。无需公网ip,无需路由器端口映射,从此对nat说NO!颠覆式的动态域名技术创新,全新的交互界面及功能体验,满足你多元化的需求,带给你焕然一新的使用感受。在安装完成花生壳(内网穿透)版本的客户端以及注册花生壳账号之后就可以使用花生壳进行内网穿透了。