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

请添加图片描述

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

目 录

  • 🍀一. 以太网协议(数据链路层)
  • 🌻二. DNS (应用层)
  • 🌿三. 网络原理知识面试总结

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

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

  • 以太网帧格式:

在这里插入图片描述

  • 这里的 目的地址 源地址 是 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. 总结:发送的过程中,涉及到从上到下,封装.接收方,涉及到从下到上的分用~~

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/48.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

40 # npm 的使用

npm 3n: nrm:node 中源管理工具nvm:node 中的版本管理工具npm:node 的包管理器,管理的都是 node 的模块 第三方模块 分两种: 全局模块:只能在命令行中使用,任何路径都可以本地模…

Vue Router activated deactivated 路由守卫

6.12.activated deactivated activated和deactivated是路由组件所独有的两个钩子&#xff0c;用于捕获路由组件的激活状态具体使用 activated路由组件被激活时触发deactivated路由组件失活时触发 src/pages/News.vue <template><ul><li :style"{opacity}…

Spring Boot定时任务

目录 1.概述 2.Spring Boot定时任务 2.1.快速使用 2.2.cron表达式 3.业务示例 3.1.业务描述 3.2.业务实现 4.实现原理 5.自定义线程池 1.概述 在某些业务场景中&#xff0c;需要定时执行一些任务&#xff0c;有可能是定时统计然后生成报表&#xff0c;有可能是定时发…

一个好看美观的登录注册界面的实现

序言&#xff1a;之前介绍那个博客&#xff0c;然后自己搞了这个界面。最近有人和我要&#xff0c;把代码给大家贴出来&#xff0c;提供参考。 首先是这个界面哈 <!DOCTYPE html> <html lang"en"> <head><script src"../static/lib/jquer…

mac本地创建ssh key连接github

起因 今天克隆自己github上面的笔记到新电脑上&#xff0c;用http连接进行克隆&#xff0c;然后要我输入账号密码&#xff0c;输入完报了个提示“remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.”…

XHbuilder 需要的 ipa 签名,超详细的教程,你不看吃亏的是自己!

今天使用 hbuilder 运行到 ios 真机的时候&#xff0c;突然发现还需要 ipa 签名&#xff0c;这是什么东东呢&#xff1f; 1、IPA 签名是什么&#xff1f; 因苹果公司禁止企业证书用于非企业内部开发者。所以开发者无法再使用DCloud的企业证书签名的标准运行基座。 运行标准基…

享元模式:减少内存占用的诀窍

一&#xff0c;概要 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;它主要通过共享对象来降低系统中对象的数量&#xff0c;从而减少内存占用和提高程序性能。这听起来有点像单例模式&#xff0c;但它们在实现和用途上有很大的区别。享元…

web前端求职面试题参考精选(合集)

web前端求职面试题之选择题 1. CSS样式表根据所在网页的位置&#xff0c;可分为?(B ) A.行内样式表、内嵌样式表、混合样式表 B.行内样式表、内嵌样式表、外部样式表 C.外部样式表、内嵌样式表、导入样式表 D.外部样式表、混合样式表、导入样式表 2. 对于标签&#xff0…

01 | 一条 SQL 查询语句是如何执行的?

以下内容出自 《MySQL 实战 45 讲》 一条 SQL 查询语句是如何执行的&#xff1f; 下面是 MySQL 的基本架构示意图&#xff0c;从中可以清楚地看到 SQL 语句在 MySQL 的各个功能模块中的执行过程。 大体来说&#xff0c;MySQL 可以分为 Server 层和存储引擎层两部分。 Server …

较旧系统的轻量级的LINUX发行版—FATDOG64

导读我们回顾FatDog64 Linux&#xff0c;这个轻量级的Linux发行版可能不是现代的&#xff0c;但它非常适合于老化的计算机&#xff0c;fatdog64 Linux是一个小而灵活的64位多用户Linux发行版。 有一个Linux发行版几乎每一个都需要&#xff0c;有Linux分布的黑客&#xff0c;天…

Jenkins在Ubuntu的安装问题

使用apt安装没有成功&#xff0c;各种报错。最后使用了离线安装方式。 1、安装jdk。和之前的安装jdk无异&#xff0c;增加一步 添加一个软链接 sudo ln -s /path/to/java/home/bin/java /usr/bin/java 2、下载deb包&#xff0c;然后安装 2.1、前置步骤&#xff0c;安装可能…

点击向数组中添加对象,并判断是否已经包含了重复值

需求&#xff1a;现在有一堆列表&#xff0c;当我每次点击列表的每一项时&#xff0c;希望将此项添加到一个数组中&#xff0c;并且已添加的数据不能再添加 效果图 实现&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset&quo…