数据链路层
以太网
以太网的帧格式如下所示:
源地址和目的地址
源地址和目的地址是指网卡的硬件地址(也叫MAC地址).
mac 地址和 IP 地址的区别:
- mac 地址使用6个字节表示,IP 地址4个字节表示.
一般一个网卡,在出厂的时候,mac 地址就已经被分配好了,就写死了(不能改).- mac 地址使用在数据链路层,用来实现两个相邻设备之间的数据转发.(微观)
IP地址使用在网络层,立足于整个转发流程,进行路径规划.(宏观)理论上来说,搞一套地址,也能完成宏观和微观上层次的所有工作,IP地址和mac地址留一组就可以了.但是实际上两个都留了下来,分配了不同的任务.
IP地址和mac地址,是两伙人,同一个时间段,各自独立搞出来的,两边都觉得自己的东西好,于是就综合一下,你这个地址负责这块,你那个地址负责那块就可以了~举个例子(不考虑 NAT )
我要从西安出发,去吉林省白城市安广镇.
- 第一步,路径规划(网络层).
西安 -> 北京 -> 长春 -> 白城 -> 安广- 第二步,实施.
以太网数据帧里面的 mac 地址,会随着转发的过程,时刻发生改变(每经过一个交换机/路由器都会变).
类型
类型: 描述了载荷中是啥样的数据.
ARP 数据报 / ARP协议: 可以视为是让当前设备,获取到周围 IP 地址和 mac 地址之间的映射关系.
在IP协议路由转发的过程中,路由器会根据目标IP地址查找路由表,以确定传输数据的下一个网络接口。然后,路由器将需要转发的数据包转发给与该网络接口相连的设备,这涉及到将IP地址转换为目标设备的MAC地址。
ARP 协议就是用来建立上述的映射关系的.
当设备接入网络时,它会发送一个ARP请求广播报文,该报文中包含设备的IP地址。收到该广播报文的其他设备会检查该IP地址是否与自己的IP地址匹配,如果匹配则会返回一个ARP响应报文,其中包含设备的IP地址和MAC地址。这样,设备就可以通过ARP响应报文获得其他设备的MAC地址,从而建立通信。
数据
我们可以看到,数据的长度为 46 ~ 1500字节.
这里不解释46是咋来的.主要关心1500.
认识 MTU
数据链路层数据帧 的最大载荷长度,1500字节,相当于 1.5 kb.这个数字,我们把它叫做MTU.
MTU和硬件直接相关,不同的硬件设备,就对应到了不同的数据链路层协议,也就对应到了不同的 MTU .(不同的硬件设备和协议可能有不同的MTU值,本文只是拿1500字节举个例子)
以太网,其实是挺短的,1.5非常小. IP/UDP 至少还是 64kb.
此处MTU的限制,就会对上层协议产生直接影响.
最典型的就是IP协议,IP协议能拆包组包,其实IP协议的拆包组包,不是应对IP的64kb,更多的是应对MTU的限制.
当一个IP数据报,达到 1500kb 以上的时候,就会自动拆包了.
重要应用层协议 DNS
DNS 可以认为是一个应用层协议,也可以认为是一套系统.
DNS 是一整套从域名映射到IP的系统.
域名和 IP 地址,存在对应关系,一般是一个域名对应一个或者多个IP,也有可能多个域名对应一个IP.
虽然已经把 IP 写作点分十进制了,但是仍然对于人类来说不是很友好,记一个 IP 地址是比较费劲的,你再把这个 IP 地址告诉别人,别人再把它记住,这些都很麻烦.
于是我们通过单词字符串来表示IP地址.
把域名转换成 IP 地址,这样的一套系统,就称为域名解析系统.
早期的域名解析系统做的非常简单,它是通过一个文件 hosts 来实现,这个文本文件就记录了 IP 地址和域名之间的对应关系.
现在已经不使用这个东西了(虽然仍然有效).
不使用这个东西的原因: 网站太多了,域名有很多, IP 地址也有很多,靠文件来维护,不现实,也不方便.
为了解决上述问题,我们就搭建了 DNS 服务器,把 hosts 文件放到 DNS 服务器里.
当某个电脑需要进行域名解析时,就访问DNS服务器.
全世界有这么多设备上网,每时每刻都在访问 DNS 服务器, DNS 服务器不会挂吗?
很简单,多搞一些 DNS 服务器就行,多搞出来的 DNS 服务器称为"镜像服务器".
实际上,全世界有数不清的镜像服务器,往往是一些运营商/互联网公司维护的.每个人上网的时候,都会就近访问 DNS 服务器.
有这么多 DNS 服务器,那数据变更了要咋办?
答: 一旦有数据变更,针对这种变更就需要约定以某个服务器的数据为基准.一旦数据有变更,就修改这个基准的服务器(根服务器),其他服务器从基准的服务器同步数据.