跳至主要内容

计算机网络基础 DNS

什么是 DNS

DNS 全称 Domain Name System,即域名系统
域名系统的出现使得人类可以更加方便的到达目的地,而不需要记住 IP。域名更符合人类的语义化,让人更加容易的记住。

常用的记录

A 记录      用于将特定的主机名映射到对应的主机 IP
CNAME   用于将某个别名指向某个 A 记录上
AAAA      IPv6 的 A 记录
SRV          记录用来标识某台服务器使用了某个服务 
NAPTR    使用正则映射一个域名

DNS 工作原理

在考虑一个域名是如何转换成 IP 之前,先了解几件事情
  • DNS 本质上是一个层次结构的分布式数据库
  • DNS 的域有着明确的划分
  • 目前全球一共有 13 组根域名(TLD)服务器
  • DNS 缓存时间由记录的 TTL 决定
DNS 工作流程

Tips:
  • 在有转发设置时域名有下至上查询
  • 在无转发设置时本地域名服务器先向根域名服务器请求,由上向下查询
  • 域名服务器存在缓存,优先查找缓存

DNS 污染

GFW 的技术之一就是 DNS 污染
总体来说:是将符合规则的域名解析到虚假的 IP 地址中,导致墙内用户通过域名无法获取到正确的 IP
1.使用加密代理的远程 DNS
2.修改 hosts

评论

此博客中的热门博文

在 LSF 中使用 docker 运行任务

LSF + Docker Table of Contents 1. 环境信息 2. 修改配置文件在 lsf 上启用 docker 3. 验证 4. 部署常见问题 5. 部署参考链接 1  环境信息 docker 18.09.5 Kernel Version: 3.10.0-862.11.6.el7.x86_64 lsf 10.1.0.6 OS CentOs 7.6.1810 2  修改配置文件在 lsf 上启用 docker 1.conf/lsf.conf 添加/修改 LSF_PROCESS_TRACKING=Y LSF_LINUX_CGROUP_ACCT=Y LSB_RESOURCE_ENFORCE="cpu memory" 2.conf/lsf.shared 添加 docker Boolean () () (Docker container) 3.conf/lsf.cluster 添加 $your-host-name ! ! 1 3.5 () () (docker) 4./conf/lsbatch/$clustername/configdir/lsb.applications 添加 Begin Application NAME = app1 CONTAINER = docker[image(ubuntu:latest) options(--rm --network=host --ipc=host -v /etc/passwd:/etc/passwd -v /etc/group:/etc/group) starter(root)] DESCRIPTION = Test Docker Application Profile 1 End Application 5.badmin reconfig 验证是否可用 3  验证 在非 root 用户下, bsub -app app1 -I cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DES

Python 中的 UUID

python 中的 uuid 代码参考 cpython/Lib/uuid.py 版本 3.7 什么是 UUID UUID 的全称是 Universal Unique Identifier,中文名是 通用唯一标识符; wikipedia 上 UUID 的定义是 a 128-bit number used to identify information in computer systems UUID 需要满足两个条件: 128 bit 具有标识别计算机系统的能力 UUID 的规则 格式 将 16 个 8 位字节表示成 32 个十六进制数 按照 8-4-4-4-12 的格式加上 4 个连字符 “-‘ 版本 UUID 应该是下面的这种格式 xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx 其中 M 开始的 4 位表示版本,N 开始的 4 位表示变种 Name                        Length(bytes)    Length(hex digits)                       Contents time_low                         4                             8                  integer giving the low 32 bits of the time time_mid                         2                             4                  integer giving the middle 16 bits of the time| time_hi_and_version      2                              4                  4-bit “version” in the most significant bits,                                                                                               fol

k8s 源码阅读 -- eviction

Table of Contents 1. 前言 2. 资料 3. 代码详解 3.1. 代码参考 3.2. 详细 1  前言 在某些情况下 k8s 会出现 evicted 的 pod, 然而这并不在  pod 的生命周期 中.这就是 k8s 的驱逐机制。 当机器的一些资源(内存、磁盘)过小时,为了保证 node 不会受到影响,会将 pod 驱逐至其他的机器上 2  资料 可以在  这里看到相关资料 来看一下代码中,驱逐策略是怎样实现的 3  代码详解 3.1  代码参考 kubernetes release-1.10 3.2  详细 pkg/kubelet/apis/kubeletconfig/v1beta/default.go 定义了这几个默认值作为阈值 pkg/kubelet/kubelet.go kubelte 初始化了 eviction manager 在 runtime 相关模块被加载时,eviction manager 被加载进来 开始了 evict 相关的控制循环 接下来是 evict 真正工作的代码 代码目录是 pkg/kubelet/eviction/ 主要看该目录下的两个文件 eviction manager.go  helpers.go pkg/kubelet/eviction/eviction manager.go Start 是 evict manager 的入口 这里是一个死循环 循环中的主要函数是 synchronize 用来清理 pod、同步信息。这个就是今天的主角 先看一下 synchronize 的参数 diskInfoProvider podFunc diskInfoProvider 是一个接口,用来提供磁盘的信息,作为是否发生驱逐的依据。实际函数在  pkg/kubelet/stats/  下 synchronize 中仅用到了 HasDedicatedImageFs podFunc 用来获取一个待检查的 pod 列表,实际函数在 pkg/kubelet/kubelet pods.go 首先检查 imagesfs, 数据从 cadvisor 中获取 获得容器