您现在的位置是:首页 >其他 >【网络原理】数据链路层 和 应用层 重点协议网站首页其他

【网络原理】数据链路层 和 应用层 重点协议

bit me 2024-08-09 00:01:02
简介【网络原理】数据链路层 和 应用层 重点协议

请添加图片描述

✨个人主页:bit me?
✨当前专栏:Java EE初阶?

?一. 以太网协议(数据链路层)

以太网就是平时我们插网线的协议,平时插的网线也叫做 “以太网线”

  • 以太网帧格式:

在这里插入图片描述

  • 这里的 目的地址 源地址 是 mac 地址(物理地址)不是 IP 地址
  • 6 个字节的 mac 地址要比 IP 地址多很多!42亿9千万 * 65535,mac 地址还可以做到唯一的(网卡出厂的时候就被写死在网卡上了)
  • 第二行就是载荷,载荷就是数据报。46 - 1500 其中 1500 就是表示以太网数据帧的长度上限 1500,不同的数据链路层协议的最大长度不相同的,把这个最大长度称为 MTU。(如果一个以太网数据帧是一辆卡车,MTU 就是载重量,如果达到了这个量,就会触发 IP 的分包操作!1500其实非常小,也就 1 KB 多点,IP 分包不是因为数据长度达到了 64KB,主要是受到了 MTU 的限制。其中 1500 的大小是和硬件介质相关)
  • CRC :校验和,放在末尾了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

IP 数据报记录的是最初的起点和最终的终点,而以太网数据帧记录的是相邻节点的转发
 

  • ARP 效果是根据 IP 地址找到对应的 mac 地址
  • RARP 效果是根据 mac 地址找到对应的 IP 地址

 
路由器进行这种相邻节点转发的过程中,需要能够建立好一套转发的规则(转发表)
使用 ARP 和 RARP 主要是用来在转发之前,把转发表构造好,毕竟网络环境经常发生变化


?二. DNS (应用层)

DNS :域名解析(域名:网址)

例如 www.xxx.com 这就是域名,IP 地址,虽然写成了点分十进制,更方便人来理解了,但是仍然不是特别的直观!为了进一步简化人对 IP 的理解,方便传播,就引入了 “域名”。域名可以通过 DNS 系统自动转换成对应的 IP 地址,如果未来的 IP 地址有变化(机器迁移了)

最早的 DNS 系统是一个文件,称为 hosts 文件
在这里插入图片描述
在这里插入图片描述

这个方式比较原始,现在基本不用了,现在的成千上万的网站不能够把所有的映射关系都写到文件中,因此,更科学的办法就是使用专门的 DNS 服务器来保存这个文件,使用服务器把这些映射关系都储存好,哪个电脑需要 DNS 解析,就访问这个 DNS 服务器即可!

全世界要上网的设备非常多,每个设备都要请求 DNS 服务器?DNS 服务器扛得住这么大的访问量吗?(每个服务器在给客户端提供服务的时候,都需要消耗一定的硬件资源,如 CPU,内存,网络带宽…,并且每个服务器能提供的硬件资源是有限的)如何解决 DNS 服务器访问量太高的问题呢?

  1. 主机在请求 DNS 之后,会对映射关系在本地进行储存 (域名 - > IP 这个映射关系,虽然会变短,但是频率比较低),这就可以大大减少客户端访问 DNS 服务器请求的数量。
  2. 在全世界,架设很多的 DNS 镜像服务器。最初的 DNS 服务器,称为 “根服务器”,其他的 DNS 服务器,从服务器上同步数据 “镜像服务器”。(“镜像服务器” 非常多,一般各种大的网络运营商都会在自己业务的各个片区里面去部署镜像服务器)

DNS 既是一个协议,也是一套系统(分布式的服务器系统)


?三. 网络原理知识面试总结

经典面试题(高频面试题):

  • 从浏览器中输入 URL 开始,到最终看到页面位置,中间都发生了哪些事情?
  1. 浏览器是客户端,从这里输入 URL,就会访问对应的服务器。
    应用层角度:1.DNS 解析 2. 构造 HTTP 请求

  2. 传输层角度:对应到 TCP 协议
    1.对应三次握手,建立连接 2. 传输数据(确认应答,超时重传,滑动窗口,流量控制,拥塞控制…)

  3. 网络层的角度:网络数据报转发过程,一跳一跳的方式来转发。(路由表,路由表匹配规则,下一条相关内容)

  4. 数据链路层的角度:以太网数据帧,mac 地址,mac 在转发过程中如何变化,MTU,MTU 影响到的 IP 分包。

  5. 物理层的角度:上述数据会转成"光信号""电信号"进行编码,传输~~

  6. 总结:发送的过程中,涉及到从上到下,封装.接收方,涉及到从下到上的分用~~

上述过程是客户端给服务器发送请求的过程,后面服务器还需要根据请求计算响应,把响应按照类似的流程转发给客户端。(根据请求计算响应取决于业务代码了,后面慢慢更新此处的神秘面纱)

与此同时,上述回答,也是站在 “后端开发” 的角度来看待问题,站在前端开发的角度,网络工程师的角度,回答的方式就不一样了。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。