域名--->IP 和 IP---->MAC

结合前面两篇文章,当在浏览器的地址栏中输入一个域名时域名------>IP地址的转化与第一次数据传输之前IP------>MAC地址的映射是很相似的两个过程。

接下来就对这两个过程进行说明:

1、域名----->IP(DNS解析)

浏览器近期访问的记录会保存在本地的一个DNS缓存(域名------->IP映射)

首先浏览器会根据查找自己的DNS缓存找到与目的主机的域名匹配的一项,然后获得目的主机的IP。如果在自己的DNS缓存中没有找到目的主机域名;

接下来会查找系统缓存(调用gethostbyname),如果在系统缓存中还是没有找到;

接下来会将查询请求发送到路由器中,在路由器的DNS缓存中进行查找,如果仍然没有找到;

接下来会将查询请求发送到ISP提供的DSN服务器上去查询,所有的记录都会在这个ISP上找到,然后返回给浏览器,浏览器就获取了目的主机的IP地址。




2、IP------>MAC

ARP报文中主要的字段是:客户端IP、客户端MAC、服务器端IP、服务器端MAC

TCP协议中规定目的地址为全1FFFFFFF的报文是广播方式发送的,会给整个局域网的所有主机发送。


在第一次数据交换之前,要获取目的主机IP的MAC地址,通过ARP请求/应答的模式获取目的主机的MAC地址的。

类似于DSN缓存,每个浏览器都有自己的一个ARP高速缓存,存放的是浏览器最近访问的IP------->MAC映射。

首先浏览器会在自己的ARP高速缓存中去查找IP地址用来获得IP对应的MAC地址,如果找到直接返回;如果在浏览器自己的ARP高速缓存中没有找到;


接下来,浏览器会对浏览器所在的局域网发送ARP请求(目的MAC为FFFFFF的广播报文),局域网的所有主机都会收到这个报文,收到后将ARP请求中IP与自己的IP进行匹配。如果匹配成功,将自己的MAC地址填充到ARP请求的MAC字段,并作为ARP应答返回;如果ARP请求中的目的主机IP与自己的不匹配,直接丢弃ARP请求;


如果目的主机与客户端不在同一网段,当ARP请求经过路由器时,路由器对ARP请求进行广播到另一个局域网...不断传播直到ARP请求到达目的主机。


例子:


假设A要向B发送数据,在第一次发送数据之前要获取到B的MAC地址。

A首先会查询自己的ARP缓存,去找B:IP------>MAC;如果没有找到,A向A所在的局域网以广播方式发送一个ARP请求报文,A所在局域网的其他主机收到这个报文后丢弃(因为目的主机的IP与自己不符)。

路由器收到这个ARP请求后,会将ARP请求以广播方式发送到B所在的网络,然后B、C、D都会收到ARP请求报文,但是C和D会将ARP请求丢弃。B将自己的MAC地址填充到ARP请求中,将ARP应答以单播形式返回给A。



3、HTTP请求HOST请求头的作用

一个物理服务器上可以部署多个虚拟站点,相当于一个服务器上部署有多个服务吗,每一种服务都会在ISP的DSN服务器上有一个映射记录:域名-------->服务器IP。

所以一个物理服务器会有多个域名,每个域名就是一个服务。

HTTP请求的HOST字段指明了具体使用的服务。在浏览器中输入域名,首先会根据本地DSN缓存、系统缓存、路由器DSN缓存、ISP的DNS缓存找到域名对应的IP地址。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值