目录
MAC地址
以太网数据帧的结构如下:
这里的目的地址和源地址,并不是ip地址。而是数据链路层特有的MAC地址/物理地址。
MAC地址由6个字节构成,是使用16进制的形式表示的。
物理地址,是在网卡出厂的时候,就设置好的。原则上来说,每个网卡的物理地址都是不相同的。因此物理地址可以作为主机身份的唯一标识。
mac地址和ip地址,目的都是为了区分网络上的不同设备。
ip地址的作用是支持整个传输过程转发。
MAC地址的作用是支持两个相邻结点之间的转发。
当传输数据的时候,ip层面上要进行路线规划。数据链路层数据帧中的MAC地址存放的是相邻结点间的MAC地址。ip地址是长期目标,MAC地址是短期目标。比如A向B传输数据:
程序员写代码的时候,直接告诉计算机,要把数据往5.6.7.8这里进行传输。主机A就要查询路由表,发现目的ip在路由表里没有,就需要走下一跳(默认的表项)。ip层决定了要找哪个主机,数据链路层决定具体该怎么找(数据包要从路由器的哪个接口发送出去)。主机/路由器,在数据链路层,也维护了一张表。这个表里就记录了,每个网口,以及网口对端的设备的mac地址关联关系。
以太网数据帧结构
以太网协议是数据链路层比较常见的协议。以下是以太网数据帧的结构:
一个以太网数据帧,最大长度是1500字节。
2位类型:描述了后面载荷部分是什么样的数据。有三种取值:
0800:表示后面是ip数据报。分用的时候,发现类型是0x0800的时候,此时就需要把这个数据交给网络层的ip协议了。
0806/8035:ARP协议是为了给每个路由器/交换机,建立一个“转发表”(不是路由表)。这个表里就记载了ip地址->MAC地址映射,表项只是包含,路由器/交换机周围的邻居设备。ARP就是为了收集周围设备的mac地址。
在数据传输的过程中,先根据目的ip,确定接下来往哪走,知道下一跳的ip(查路由表),根据下一跳的ip,查转发表,知道ip对应的mac/端口是哪个。然后再发。
DNS
DNS协议,中文称为域名解析系统。
ip地址,采用点分十进制表示,但是并不容易记忆,也不便于传播。为了让人们使用ip地址更加方便,于是就出现了域名。域名就是一串单词,就可以使用这一串单词,来表示某个/某组ip地址了。比如:sogou.com(搜狗)baidu.com(百度)
曾经每个人的电脑上,都会有一个很大的文件,存储所有网站的域名的对应情况。随着互联网的发展,每天都有新的网站出现,也有旧的网站消亡,导致文件需要频繁更新。十分麻烦。
后来取而代之的是,搭建了DNS服务器,把这样的映射关系,使用DNS服务器来保存,个人电脑上就不需要保存文件了,如果要访问域名,就可以通过访问DNS服务器,查询到对应的ip地址了。
DNS服务器如何撑得住这么大的请求呢?
1)客户端缓存
当你的电脑尝试访问某个域名,得到ip,就会把ip与域名的对应关系,存储到客户端缓存之中。下次再次访问同一个域名的时候,就不会重新查询DNS服务器。
2)分布式的方式
全世界各个地方,建设了很多DNS镜像服务器。此时请求DNS服务器,就只需要访问附近的镜像服务器即可。
全世界共有13个根域名服务器,根域名服务器是其他镜像服务器的源头。镜像服务器会从根域名服务器里拷贝域名。如果你想申请一个域名,搭建网站。就需要把你的域名和ip的映射,提交到根域名服务器这边,然后其他的镜像就会从根域名这里同步数据。
以上,关于数据链路层的相关知识,希望对你有所帮助。