代码编织梦想

DNS-HOST-IP之间的一些关系。

太长不看版

就是所有设备(你的个人电脑,服务器,手机等)通过网络才能交互。基于IP协议。(当然还有蓝牙啥的,不在讨论范围内)

IP协议就像打电话,你要给对方打电话,就要知道对方的电话号码。而IP协议就要知道对方的IP。

但是无论是电话号码还是ip都是很没规则的数字,不好记。对人不友好。对机器友好(涉及到存储,数字占用空间小,处理起来也快)
这时候就有了DNS-域名映射(类似于114查询台)。  

HOST呢,就像是你手机里的通讯录(更早的座机时代,就是一本电话簿)

配置好了手机通讯录,你下次要找张三,李四,你直接通过名字,点一下就打过去了。而不用记对方的具体的电话号码。
同理,配置好了host,你直接在浏览器输入域名,就会自动访问对应的IP的服务器了。不用记录服务器的具体IP

配置Host通常是找到你的Host文件,然后在里面加上一行`IP 域名`的映射就行了。
格式是:
IP`空格`域名
形如
192.168.0.1 www.baidu.com
是把百度的域名设置成了 192.168.0.1
你直接在浏览器访问域名(www.baidu.com),它就自动找到192.168.0.1 这个IP来访问了。
`注意`这个配置只是个演示,具体到使用的时候,还是要根据实际情况来设置ip和域名的映射关系的。

略微详细版

关于`DNS`,`HOST`,`IP`其实涉及的知识挺广的,展开说,可以把整个计算网络的相关知识都囊括进来,
因为这个是简单的类似于科普性的文章,所以对于一些扩展性的知识,可能会掠过,主要以自己的理解为基础,讲解一下三者之间关联的部分。

因为时常会碰到测试的同学,对于HOST IP之类的没有什么概念。
导致在测试的时候,会不太清楚为什么要切换一下Host,又为什么要配置Host才能调试测试环境。

整个问题浓缩一下,可以转化为下面这个问句:

`我们的电脑和电脑之间到底是怎么通信的`

首先,我们每台电脑都是独立的,要想互相通信,就要建立连接(通常是TCP/IP协议,而这个协议呢,是要知道对方的IP地址的。)
就像我们每个人也是独立得个体,有自己的思想,要要和别人“交流”,也得建立连接(你喊对方一声,或者打个电话,或者写封信,都属于和对方建立了连接)
计算机的连接抽象的看,和人与人建立连接没有太大区别。
建立了连接之后,再通过语言,文字,图片等方式向对方传递自己想要表达的信息。

接下来以打电话为例子:
比如你想给晓天打电话,知道我叫晓天是没什么用的,你得知道我的手机号才能打给我,和我交流。
就像我们知道百度的域名是www.baidu.com,如果没有DNS服务解析或者解析错误的话,你是无法访问百度的。
但是无论是电话号码还是IP都不是规律性很强的数字,不好记。对人不友好。对机器友好(涉及到存储,数字占用空间小,处理起来也快)
这时候就有了DNS-域名映射。  
DNS是一种`服务`,你输入域名,它会自动解析成IP。(基本上所有的能联网的设备的操作系统都会带这个。)
DNS有本地的(通常就是你本机。一个),区域的(N个),全球好像有几十个根吧。 类似  家-国-天下

而你本地有HOST配置,DNS服务器。DNS服务器还有根域
(它们三者的关系你可以理解为你的本地的DNS是`根域`的一个代理,也就是它的小弟,你的HOST配置,是本地DNS服务器的小弟。)
你发起了请求之后,会先去看看本地的host里面有没有配置www.baidu.com这个域名的ip地址,
如果没有就去本地的DNS缓存里面看看有没。再没有,本地DNS就会去找他的大哥(根域)问问他知不知道www.baidu.com的ip地址。
最后拿到了IP地址,你就会进行后续的2 3 4(握手,建立连接)
就像以前的传呼机,让电台帮你查查某个人/团体的号码(不确定哈,看电影看到过这种情节。哈哈)

所以呢,HOST也可以当做是你脑子里记了一些联系人的电话,如果想给人打电话了,首先就是在大脑(HOST)里回忆,想不起来,就会去找找电话簿(DNS)看看上面有没有。
如果没有,那就去问问周围人(根域)看看有没有人知道,如果都没人知道,那就“解析失败”,没法给那人打电话了。
请求也是这样,如果解析域名失败,也就没办法和对方建立链接了。
回到你刚才的那个问题,如果你的请求都是通过  www.xxx.com 之类的域名的方式请求的,那么你就可以通过配置host的方式,
直接标明如果是这个域名,你要访问哪个ip地址,这样就可以实现正式/测试环境的切换了。
例如 
www.baidu.com 192.168.0.1  //这个表示,你如果访问百度。实际访问是192.168.0.1这个ip。
www.baidu.com 180.101.49.12 // 这个表示你如果访问百度,实际访问的是180.101.49.12这个ip。
前提是。你在host中这样配置哈。

类似于,我们都比较相信自己的记忆,某个人号码记得就是xxx,那就直接打过去(可能自己会记错,或者对方已经换了号码也说不定)。
而如果记不住对方的电话号码。就开始查电话簿了,(虽然也可能会写错或者对方换了电话号码,甚至同一个个联系人记录了两次,这种情况下,我们通常都是自己判断到底打哪个,但是host文件只会匹配第一个,需要注意一下。)

但是如果你的请求直接就已经是写死的ip地址了。
那可能就要玩儿一下`代理`了。把某个ip的请求都拦截下来,再转发到你实际要请求的那个ip地址。(就像电视里头那种摇号电话,让接线员转接)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36854407/article/details/117802673

ip与域名解析 dns host-爱代码爱编程

参考文献: http://www.faqs.org/docs/securing/chap5sec39.html http://www.oschina.net/question/565065_77205     【1】执行顺序 所有的解析请求由linux的resolver library(指的是一些C标准库的函数,主要

什么是dns,如何设置,和host file的关系。-爱代码爱编程

什么是DNS,即Domain Name Server, 为了方便用户记忆,我们将IP变成一个个的域名来输入到浏览器进行访问。而这使得访问网站时要先将其域名解析成 IP 。 举个例子,tw.yahoo.com是台湾雅虎的网址,但是电脑根本不认识那串字符是什么东西,它只想知道它该链接到哪个IP地址。这时候就是DNS出场的时候了,它会跟你的电脑说其实tw.ya

dns解析host和ip_高晓伟_steven的博客-爱代码爱编程_host ip

dns.h #ifndef _DNS_H_ #define _DNS_H_ #define DBG_PRINT 0 #define DNS_PORT 53 #define MAX_DOMAIN 256 #define DNS_TYPE_A 1 //ipv4 #define DNS_TYPE_CNAME 5 //c

浅谈 hosts 与 dns_踏 浪的博客-爱代码爱编程_hosts和dns的区别

  目录 一、HOSTS 与 DNS 的共同点 二、HOSTS的特点、优缺点以及适用场景 三、DNS服务的特点、优缺点以及适用场景 四、HOSTS文件在 Windows系统与 Linux系统中的使用 五、DNS客户端在 Windows系统与 Linux系统中的配置 一、HOSTS 与 DNS 的共同点 hosts与dns的共同点: 都是做

DNS收集分析之host-爱代码爱编程

1>Host指令提供一个简单的DNS解析的功能。正常地使用名称到IP的解析,当指令没有任何参数和选项的时候,它将输出简单的带命令行参数和选项的概要。 名称是可以被解析的域名,也可以是点分十进制的IPV4的地址或冒号分隔的IPV6的地址,默认地,也可以行使一个反向解析的功能,DNS服务器既有名称又有IP地址,host查询可以替代它们,或者可以列在/e

host文件地址_DNS与host到底是什么呢?-爱代码爱编程

什么是DNS? ? “ Domain Name System(域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。 mmp,讲人话! 请记住一下标签: 电话本 云电话本 有很多电话号码的电话本 虽然这是废话。。。 DN

bind dlz mysql rpm_智能DNS --BIND DLZ+MYSQL-爱代码爱编程

智能DNS --BIND DLZ+MYSQL 一.概念介绍: 1.智能DNS: 智能DNS就是根据用户的来路,自动智能化判断来路IP返回给用户,而不需要用户进行选择。 智能DNS与普通DNS区别: 普通的DNS服务器只负责为用户解析出IP记录,而不去判断用户从哪里来,这样会造成所有用户都只能解析到固定的IP地址上。智能DNS颠覆了这个概念。智

java 设置dns_通过代码直接设置Java的DNS - Java Dns Cache Manipulator-爱代码爱编程

通过代码直接设置Java的DNS - Java Dns Cache Manipulator 通过代码直接设置Java的DNS(实际上设置的是DNS Cache),支持JDK 6+。 通过代码直接设置Java的DNS - Java Dns Cache Manipulator 功能 设置/重置DNS(不会再去Lookup DNS) 可以设置单条 或是

聊聊nacos-coredns-plugin的Domain-爱代码爱编程

序 本文主要研究一下nacos-coredns-plugin的Domain Domain nacos-coredns-plugin/nacos/nacos_domain.go type Domain struct { Name string `json:"dom"` Clusters string CacheMillis int64 Las

怎么用Python批量添加zabbix-host主机-爱代码爱编程

# /usr/bin/env python3 # -*- coding:utf-8 -*- ## user config here ## user config end import requests import json import os import pandas as pd from tqdm import tqdm ip = 'xxx.x

关于Linux的hostname,hosts,IP的理解-爱代码爱编程

最近在安装Ambari,用虚拟机安装的时候,遇到了这个一直以来就不是很清楚的难题…终于下决心梳理了一番. 1,本机IP:无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号.每个域名都对应一个IP地址,但一个IP地址可有对应多个域名.这个容易理解,一个地址可以有多个名字,有官方名称,

linux 指定dns host,Linux设置IP 、 DNS 、Hostname方法-爱代码爱编程

设置Hostname: 修改/etc/hostname文件 127.0.0.1  localhost.localdomain   localhost 192.168.1.100  centos 或 #hostname ha01  #设置 #uname -n  #查看 设置网关: 修改/etc/sysconfig/network NET

host文件放在dns服务器,DNS配置:设置Host文件或DNS-爱代码爱编程

在浏览器上浏览虚拟主机,必须使用Hosts文件或域名系统(DNS)实现主机名到IP地址的解析。在局域网中用Hosts文件或DNS均可以,在Internet上只能用DNS了。   web 1.Hosts文件的设置windows windows 95/98的Hosts文件在windows目录中;windows NT的Hosts文件在winnt\syst

解读先电2.4版 iaas-pre-host.sh 脚本-爱代码爱编程

#!/bin/bash #声明解释器路径 source /etc/xiandian/openrc.sh #生效环境变量 #selinux sed -i 's/SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config #编写配置文件,永久关闭selinux setenforce 0

DNS-域名解析-爱代码爱编程

DNS 介绍 概述 DNS(domain name system ) :域名管理系统 域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称。 IP地址比较隐晦,难以记忆;而域名更加便于人们记忆,可通过DNS服务器的key-value数据库,记录ip-域名的对应关系,从而将域名解析为IP地址,用于通信。 DNS作用: 域名的正向

2022 预备春招: 面试必看的 1000 道面试解析,助你通关大厂-爱代码爱编程

前言: 本文收集整理了各大厂常见面试题 N 道,你想要的这里都有内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈,希望大家都能找到适合自己的公司,开开