baidu的域名解析流程

发布时间 2023-11-22 16:51:41作者: 临溪夕夕

因为 baidu.com 是一个域名,所以要完成域名解析,即将百度的域名翻译成IP地址。这是由Windows上的DNS客户端访问DNS服务器实现的。

1,DNS服务器的设置在Windows的网络设置里配置, Linux下 /etc/resolv. conf。DNS服务器IP地址配置成 114.114.114.114;
2,客户端就要发送一个应用层数据报文:“ baidu.com 的IP地址是多少?”
3,到了传输层,传输层加上TCP的头20个字节,有两个关键的元素就是源端口(系统随机分配,假设为7777)和目的端口(53);
4,到了网络层,网络层加上IP头20字节,有两个关键的元素, 叫做源IP(192.168.2.101)和目的IP(114.114.114.114);
5,操作系统会看到源IP和目的IP不在一个网段内,这时候数据报文就要给默认网关,默认网关就是路由器的LAN口IP地址(192.168.2.1)
6,接下来数据到网络接口层,我们把网络接口层分为两层来看,就是数据链路层和物理层。现在先看数据链路层。数据链路层要加上帧头:
帧头里面有两个元素叫做源MAC地址和目的MAC地址(网关的MAC地址):
7,不知道路由器的MAC地址是多少? PC会发一个ARP的广播报文,“192.168.2.1, 你的MAC地址是多少?”
8, 这时候局域网内所有主机都会收到该报文,然后只有192.168.2.1 的主机会回复说,“XXX,我的MAC地址是 XX:YY:ZZ:MM:NN:00”
9,接下来用源MAC和目的MAC封装数据报文,通过物理层网卡以广播的形式发送出去;
10,局域网内所有的机器都会收到这个报文,他们会检查目的MAC地址是不是我自己,如果不是就丢掉;否则就继续解析;
11,这时候路由器LAN口收到数据包,发现是给自己的,就往上层网络层传输;
12,网络层收到数据包后,检查源IP和目的IP, 会私有IP转成公网IP, 把源端口也给改掉;并记录相应的修改记录到NAT表中;
13,这时候从WAN口中发出去的数据报文都是公网IP了,经过Internet上的路由器路由转发到达 114.114.114.114主机:
14, 114.114.114.114.114.114DNS服务器主机查询自己的数据库,获取 baidu.com baidu.com的IP是xx.
15,到传输层,将源端口和目的端口互换,到网络层将源IP和目的IP互换;再经过Internet上的路由器路由转发到家里的路由器WAN口上;
16,路由器查询NAT表,将公网IP和目的端口修改为记录里的私有IP和端口
17,路由器在LAN口上将数据报文广播发送出去:
18,PC查询MAC地址是自己,然后就剥去数据链路层的帧头,然后给网络层;
19,网络层查看IP地址,如果是自己的就剥去IP头传给传输层;
20,传输层解析出端口,再给DNS客户端,这时候DNS客户端就能够知道 baidu.com 的IP是xx.yy.zz.mm;