-
查找操作系统是否缓存了IP地址
-
查找路由器是否缓存了IP地址
-
查找服务运营商时候缓存IP地址
-
查找跟域名服务器对应IP地址
因为网络资源比较宝贵,要是中途没有通过一下缓存的手段,可能会造成网络的阻塞或者网络承受不起中间的庞大请求,所以就必须缓存下来。但是也不是一直都有缓存,过了一定的时间就会消失记录,重新请求然后缓存。
如果浏览器和路由器都没有,一般服务运营商就是中国电信或者中国移动,查找是否缓存了IP地址,如果最后还是没有,就只能去根域名服务器查找了,这一次就一定可以找的到。当IP地址返回的时候,中间的过程会被浏览器,操作系统,运营商等缓存下来,那么下次再进行查找的时候就不会绕这么远的路了。
域名指的是为了识别主机名称和组织机构名称的一种具有分层结构的名称。——图解TCP/IP
域名是有分层结构的,比如有一些域名的后缀是.com/.cn/.org等,都代表了不同的组织机构,也便于域名的管理。域名的分层有点类似于倒挂的树形结构,最顶级就代表了根域名,下面就是二级域名、三级域名等。
图片来源于网络(侵删)
通过上面这张图可以清楚地看到,顶级域名有一个国家顶级域名,比如中国的是以.cn结尾,英国就以.uk结尾。下面我们可以看到一些教育网站都会以.edu结尾的,大学官网都会以这些结尾。
ARP是地址解析协议,上面我们知道,通过DNS域名系统可以找到对应主机的IP地址,但是有了IP地址还不够,因为在底层的数据链路层在进行实际通信的时候会找每一个IP地址对应的MAC地址。而从IP地址到MAC地址的时候就要依靠ARP协议。
工作机制
我们可以以主机A向主机B发送数据为例子,看一下中间的过程是怎么工作的。
主机A为了获取主机B的MAC地址,会先在当前的数据链路上广播发送一个ARP请求包,里面包含目标IP地址。因为在同一个链路上面的主机都会接收到这个请求包,然后每一个主机就会根据IP地址与自己的IP地址相比较,如果与自己的匹配就会接收这个请求包,然后发送响应包,里面就包含自己的MAC地址。
初此之外,ARP请求包里面也含有主机A的MAC地址。当获取了B的MAC地址后也会缓存一下,防止下一次的请求又要发送请求包,节省流量。这样的MAC地址与IP地址相对应的表就是ARP表,MAC地址缓存也是有一定的时间的,超过时间之后就会吧内容清除,然后重新请求。
IP地址与MAC地址的关系
其实有一段时间我也一直不太明白为什么有了IP后还要MAC来通信呢?这不是多此一举吗?
首先我们要明白一个很重要的区别,IP地址是会变的,一旦你关机重启之后IP就可能会不一样了,但是MAC地址就不一样,永远都是一样的不会改变。相当于我们的身份证号码一样,但是你搬家之后的住址就可能会改变了。
网络通信很大一部分都是不在同一个网络上的,所以数据会经过很多路由器才可以找到你的主机。比如我们网购东西写的地址就是IP地址,快递的分发机制我们都知道,通过省/市/区一层层分发下来,最终就会找到你的位置。但是除了这个位置还不行,你要知道你的名字是啥才会准确分到你的手上,这就是MAC地址的作用。
RARP
这个其实就是与ARP相反,作用是把MAC地址对应的IP地址找出来。那么这种协议有什么用呢?我们知道DHCP的作用就是动态分配一个IP地址给当前的主机,通过电脑我们可以自己设置,如果不设置就是由DHCP来给你分配一个IP地址。比如我们打印机联网的时候就会用到这个协议,当我们插上电源的时候,就会发送一条“我的MAC地址是xxx,我对应的IP地址是啥?”的请求信息。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
前端面试题汇总
JavaScript
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
性能
linux
前端资料汇总
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**