Dns解析过程

递归查询

  1. 客户端(求问XXX的IP地址是多少) –> 本地DNS服务器 (我不知道,但是根域名服务器可能会知道,我替去问他吧)
  2. 本地DNS服务器(求问XXX的IP地址是多少) –> 根域名服务器 (不知道,但是A域名服务器可能会知道,我替去问他吧)
  3. 根域名服务器(求问XXX的IP地址是多少) –> A顶级域名服务器 (查到XXX的IP地址是192.168.168.6)
  4. 根域名服务器(查到XXX的IP地址是192.168.168.6) –> 本地DNS服务器
  5. 本地DNS服务器 (查到XXX的IP地址是192.168.168.6) –> 客户端

迭代查询

  1. 客户端(求问XXX的IP地址是多少) –> 本地dns服务器(我不知道,但是你可以问根域名服务器)
  2. 客户端(求问XXX的IP地址是多少) –> 根域名服务器 (我不知道, A顶级域名服务器可能会知道)
  3. 客户端(求问XXX的IP地址是多少) –> A顶级域名服务器 (查到XXX的IP地址是192.168.167.1)

Dns解析过程

  1. 浏览器缓存查询
  2. 本地host文件是否映射
  3. 本地dnf服务器是否缓存(电脑上网时IPv4或者IPv6设置中填写的那个DNS,但是最终都会到网络运营商)
  4. 顶级服务器查询
  5. 迭代/递归查询

dns解析

Ping过程

局域网(同一网段)

  1. 主机A封装二层报文,查找自己的的MAC地址表,如果没有主机B的MAC地址就向外发送ARP广播包
  2. 交换机收到报文,检索有没有保存主机B的MAC地址。 如果有会返回给A; 如果没有就向所有的端口发送ARP广播,其他主机收到纷纷丢弃,直到主机B收到报文就立即响应,同时学到主机A的MAC地址,并按同样的ARP报文格式返回给主机A。
  3. 主机A学到了主机B的MAC地址,就把这个MAC地址封装到ICMP协议的二层报文中向主机B发送。
  4. 当主机B收到了这个报文后,发现是主机A 的ICPM回显请求,就按同样的格式,返回一个值给主机A,这样就完成了同一网段内的ping过程。

外网 (跨网段)

  1. 主机A发现主机B和自己不是在同一网段,就去网关转发; 如果不知道网关mac地址,则发送一个ARP广播,学到网关的MAC地址,再发封装ICMP报文给网关路由器。
  2. 当路由器收到主机A发过来的ICMP报文,发现自己的目的地址是其本身MAC地址,然后得到出口,加上自己的mac向主机B转发。
  3. 主机B学习到路由器mac, 然后就将ICMP请求回复给主机A。

参考来源

操作系统内存管理

进程和线程

  1. 进程是相互独立,线程是进程一个子集
  2. 进程拥有独立资源, 线程共享内存和资源
  3. 进程有独立的内存地址, 线程共享内存地址空间(共享进程上下文)