DNS :Domain Name System,域名系统 ,通俗的来说需要把我们日常见到的URL 网址信息解析成IP地址,例如

DNS域名解析过程

  • 用户浏览器:用户在浏览器地址栏输入域名进行访问,浏览器最先进行解析,先去浏览器缓存中找这个域名的IP地址。TTL 控制缓存时间限制,太长导致IP变化后域名无法解析,太短每次都要解析一次

  • 用户操作系统:如果用户浏览器缓存中没有域名的记录,就会去操作系统中查找是否有这个DNS解析结果,Windows用户下(Linux是 exc/hosts)其实就去找c:\windows\system32\drivers\etc这个里的hosts文件里面有没有,如果你在这里指定了一个域名、IP映射关系,那么实际上浏览器就会去访问这个IP,这也就是 域名劫持,如图我就我的localhost修改为pzh

  • Local DNS Server:如果etc文件中还没有这个记录,那么就会去这个本地服务器里面找,它可能是学校、小区所在地的DNS服务器,大约八成的解析工作在这里完成,即返回解析结构给浏览器。window下通过 ipconfig 查看 该服务器地址,Linux通过 $ cat /etc/resolv.conf查看,如果还没有找到就会去rootserver根域名服务器请求解析了

  • Root Server:根域名服务器会给本地服务器返回一个所查询域名所在的主域名服务器(gTLD server) 例如 .com .org .cn

背景导入:根服务器主要用来管理互联网的主目录,全世界只有13台(这13台根域名服务器名字分别为“A”至“M”),1个为主根服务器在美国。其余12个均为辅根服务器,其中9个在美国,欧洲2个,位于英国和瑞典,亚洲1个位于日本。毫不夸张的说如果这几台服务器出点问题,整个互联网都可能瘫痪。

gTLD Server: 国际顶级域名服务器,例如 .org .com .cn 等,根据跟服务器返回的向对应的 gTLD 服务器发送请求,然后gTLD 会返回该域名的 Name Server 地址

  • Name Server:该服务器就是 该域名所在的域名服务器,加入你购买一个某域名提供商的域名,那么该域名解析任务就有该域名提供商的 Name server完成。
  • GTM:实际上不只这些步骤可能更多,也可能不只一个name server 服务器,或者有一个GTM 来负载均衡控制

DNS解析方式

  • A记录:A是address ,可以将一个或者多个域名解析成一个IP地址,不能将一个域名解析出多个IP地址
  • MX记录:将某个域名下的邮件服务 xxx@aa.com => 1.1.1.1:xxx,其中aa.com 对应着 1.1.1.1
  • CNAME记录:别名解析,就是将一个域名设置成一个或者多个名字而已,
  • NS记录:该域名有指定的DNS服务器去解析
  • TXT记录:主机名或者域名设置txt记录说明

跟踪DNS域名解析过程

  • windows : cmd下输入 : nslookup www.baidu.com
  • Linux: dig www.baidu.com

清除DNS缓存

  • windows : cmd下输入 : ipconfig/flushdns
  • Linux: 可以通过 /etc/init.d/nscd restart 来清除缓存

Java Web 深入分析(2) DNS的更多相关文章

  1. Java Web 深入分析(6) Tomcat

    tomcat是什么:汤姆猫?Javaweb服务器? Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache ...

  2. Java Web 深入分析(8) Servlet工作原理解析

    Servlet Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态We ...

  3. Java Web 深入分析(7) Jetty原理解析

    1Jetty的基本架构 Jetty有一个基本的数据模型,这个模式就是handle,所有拷贝拓展的组件都被当做一个handler被添加到server中,然后由jetty统一管理. 1.1Jetty基本架 ...

  4. Java Web 深入分析(4) Java IO 深入分析

    I/O问题可以说是现在海量数据时代下 ,I/O大部分web系统的瓶颈.我们要了解的java I/O(后面简称为(IO)) IO类库的基本结构 磁盘IO的工作机制 网络IO的工作机制 NIO的工作方式 ...

  5. Java Web 深入分析(12) JVM(2) 垃圾收集与内存分配

    前言 java的内存分配和垃圾回收往往是影响系统性能和并发能力的主要因素,虚拟机提供许多的参数就是为了根据不同环境和请教下进行调优,没有最好的调优也没有固定的调优.需要我们深入的去了解jvm的各个垃圾 ...

  6. Java Web 深入分析(11) JVM(1)

    前言 Java启动后作为一个进程运行在操作系统中,该进程要分配的内存有以下几个: 1.Java堆: 存储java内存区域,堆大小是在jvm启动时就像操作系统申请完成,其中 -Xmx和-Xms 分别表示 ...

  7. Java Web 深入分析(11) JVM 体系结构与工作方式

    jvm体系 jvm简介 java virtual machine jvm体系详解 jvm工作机制 虚拟机怎么执行代码 jvm为何基于栈 执行引擎 执行引擎过程 java调用栈 总结

  8. Java Web 深入分析(10) Spring 实践

    Spring helloworld [http://wiki.jikexueyuan.com/project/spring/hello-world-example.html] HelloWorld.j ...

  9. Java Web 深入分析(9) Session 和 Cookie

    前言: session 和cookie都是为了保持服务器和客户端之间交互状态.如果一天的PV有几亿,而一个cookie占200个字节但是也会占用很多带宽?所以大访问量就引用session,但是几百台服 ...

随机推荐

  1. 不建议在for循环中使用”+”进行字符串拼接

    https://mp.weixin.qq.com/s/qG6bdhndAip9s-_XM9oP3A 为什么阿里巴巴不建议在for循环中使用”+”进行字符串拼接 互联网后端架构 1周前    

  2. PorterDuffXfermode之PorterDuff.Mode.SRC_IN

    package com.loaderman.customviewdemo.view; import android.content.Context; import android.graphics.B ...

  3. 36 Flutter仿京东商城项目 用户登录 退出登录 事件广播更新状态

    Login.dart import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:flutter/material.da ...

  4. (五)UML之协作图

    一.什么是协作图? 顾名思义协作图就是合作图,有合作就涉及到多个对象. 协作图(Collaboration Diagram /Communication Diagram,也叫合作图)是一种交互图(in ...

  5. (十六)集合框架(Collection和Map)和比较器(Comparable和comparator)

    一.集合框架 1.1 为什么要使用集合框架? 当我们需要保持一组一样(类型相同)的元素的时候,我们应该使用一个容器来保存,数组就是这样一个容器. 那么,数组的缺点是什么呢? 数组一旦定义,长度将不能再 ...

  6. activity 工作流

    https://blog.csdn.net/cs_hnu_scw/article/details/79059965 https://blog.csdn.net/xnf1991/article/deta ...

  7. Docker从入门到动手实践

    一些理论知识,我这里就不累赘了 docker 入门资料,参考:https://yeasy.gitbooks.io/docker_practice/content/ Dockerfile常用命令,图片来 ...

  8. sql-获取重复和删除重复数据

    //获取相同用户名的数据 //删除相同的数据,保留最大的id或者最小的id min(id) delete from user where id not in(select max(id) from u ...

  9. 项目中常用的19条MySQL优化技巧

    原文:https://segmentfault.com/a/1190000012155267 声明一下:下面的优化方案都是基于 “ Mysql-索引-BTree类型 ” 的 一.EXPLAIN 做My ...

  10. Flutter 流式布局列表实例+上拉加载

    页面变化的几种方式: 一.StatefulWidget的setState形式 先声明两个变量. ; List<Map> list = []; 写了一个方法,获取数据: void _getH ...