网络原理(7)——以太网数据帧和DNS协议(数据链路层和应用层)

目录

一、以太网数据帧(数据链路层)

二、DNS协议(域名解析系统,应用层协议)


一、以太网数据帧(数据链路层)

        以太网横跨了数据链路层和物理层,这里只做简单介绍,因为普通程序员用不到这一块,除非是做交换机开发的;下图是数据帧的格式。

目的地址和源地址:和IP协议上表达意思差不多,但这里是mac地址。

数据:以太网数据帧的载荷最小46字节,最大1500字节;这里的大小限制是因为受到了物理设备的特性46字节是因为ARP1500字节是因为硬件的限制(和以太网的网口 / 网线这些物理设备有关系),称为“MTU”在IP数据报拆包组包的过程中,原因往往不是因为自身大小超过64KB了,而是因为MTU的原因。(数据链路层不仅仅只有以太网这种协议,还有许多其他的协议,不同的协议,MTU也会有所差异)。

类型:标识了载荷数据的含义。有以下三种(上图的三种):

        IP数据报:如果载荷类型是这个,此时以太网数据帧大概率是能够携带业务数据的报文(大概率携带的是业务数据,也可能携带的是syn这种)。

ARP和RARP可以认为这两个横跨了 网络层 和 数据链路层 的协议。

        ARP:效果是让路由器 / 交换机 建立一个内部的结构,可以通过映射,找到mac的地址,映射关系:IP -> mac(类似哈希表这种)。

        RARP:效果也是让路由器 / 交换机 建立一个内部的结构,也是映射,不过找到的是IP地址,映射关系:mac -> IP

        前面通过路由表,可以拿着IP查询下一步走哪个网络接口(通常指路由器的 WAN / LAN口);但也还需要根据当前环境,获取当前对应要转发的mac地址(需要知道通向的设备具体的mac地址)。

        数据链路层这里,引用的地址协议和IP协议不一样,它有它自己的独立的一套地址体系:mac地址(或物理地址)mac地址 和 IP地址是独立的两条地址体系

        其实这两个地址协议是可以合并在一起的,但是因为历史的原因,这两个地址协议是两伙人搞出来的,而且既然搞出来了,就拿出来用了。

        之前说的IP协议 侧重于 全局的转发,从起点到终点,这整个转发过程,是通过IP协议完成的;而mac协议 侧重于 局部的转发,两个相邻的设备之间的转发(一个电脑连着路由器,电脑和路由器就是相邻的关系)。

        因为mac地址是6个字节的地址,所以可以表示的地址的个数比IP地址多很多,大概是:42亿9000万 * 65535,所以mac地址还是很充足够用的,这里用的就是静态地址硬件设备网卡,在出厂的时候就已经把mac地址给写死,所以每个电脑设备上的mac地址都是唯一的网卡和mac地址也是一对一绑定的;基于mac地址,有些程序,可以通过mac地址来作为你机器的身份表示,例如外挂,只有在你电脑上插u盘才能用,其他电脑插上就不能用,原因就是制作外挂者这里的服务器,用户这边的客户端,服务器利用mac地址就知道哪些人是从自己这买的外挂,然后允许他用外挂(声明:制作外挂、售卖外挂均为违法行为,请遵纪守法,做好合法公民)

        mac地址是用16进制方式表示的,字节之间则是用 “-” 或 “:” 来分隔的,如图是我电脑上的mac地址(Windows系统的物理地址就是mac地址):

        这里的mac地址和IP地址也有其他方面的不同,如图是以太网数据帧:

        源 / 目的mac地址类似一个小阶段的目标,而源 / 目的IP是类似终极目标这种。举个例子:

我要去陕西,途中我要经过:广东 -> 湖南 -> 湖北 -> 陕西。

        这里有不同的阶段,对应不同的mac地址,但IP地址一直都是相同的,如下:

        广东 -> 湖南        源IP:广东,目的IP:陕西        源mac:广东,目的mac:湖南

        湖南 -> 湖北        源IP:广东,目的IP:陕西        源mac:湖南,目的mac:湖北

        湖北 -> 陕西        源IP:广东,目的IP:陕西        源mac:湖北,目的mac:陕西

        mac地址和IP地址的不同如上(还有其他的不同),mac地址这里侧重的是局部(相邻)的转发(两个相邻的设备)IP地址这里侧重的是全局的转发,从起到到终点,这转发的整一个过程。        


二、DNS协议(域名解析系统,应用层协议)

        如果使用IP地址来描述设备的地址,又长又难记,如果访问某个服务器,需要记住它的IP地址的话,就很难记住,也可能记混的现象;所以,有更好的方法:使用域名(word),通过域名,把域名转换成对应的IP地址,就好记很多,也不容易错。

        DNS协议就是域名解析的一个协议,在上古时期,那时候是通过host文件把域名和IP一一对应起来,每一行都有域名和IP每次访问某个域名,就会通过这个域名,在host文件中查找对应的IP,从而找到这个访问设备在网络中位置

        但是随着互联网发展的越来越快,域名和服务器都越来越多,此时维护的成本就很大,所以大佬们就干脆 搭建一个服务器,提供域名解析的功能(之前的host内容也放到服务器上了),你的设备想要访问某个域名,就会先到域名解析服务器(DNS服务器)上查一下,找到对应的IP,拿着这个IP访问即可。

        但是,全世界那么多人,如果都访问这个DNS服务器,那不会很容易挂了,它能抗住这么多请求吗?显然是不能的,其实DNS服务器并非只有一份,而是有很多份。如下解释:

        最开始的DNS服务器称为根域名服务器这里的内容最全然后各个国家的运营商,就根据这个根域名服务器的内容,搭建出镜像服务器网民上网时,一般就是访问你附近的运营商搭建的镜像DNS服务器,而镜像服务器也会定期从根DNS服务器中同步数据

        域名还分为一级,二级,三级.....,这样就可以控制每个服务器管理的数据都差不多,如图:

        上图的com是一级域名,sogou是二级域名,www是三级域名其中根域名服务器里的内容非常重要,如果把其中一部分内容删除掉,就可能会导致一个地区 / 一整个国家网络瘫痪,无法上网。而根域名服务器一共有13个,大部分都是美国人维护的,所以,这也是我国迫切要升级IPv6的原因。

        有时候会出现一种情况,QQ、微信能等的上去,但是网页却打不开,可能就是你附近的运营商的DNS服务器挂了,这时候我们可以换个DNS服务器地址,如:8.8.8.8,这是谷歌搞得一套DNS镜像服务器,换完后,可能就可以打开网页了。


都看到这了,点个赞再走吧,谢谢谢谢谢

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

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

相关文章

Rust基本类型

数值类型 整数类型 无符号整数只能取正数和0,有符号整数可以取正数负数和0。isize和usize类型取决于程序运行的计算机CPU类型,若CPU是32位的,则这两个类型是32位的,若CPU是64位的,则它们是64位的。rust整型 默认使用…

基于Spring Boot的云上水果超市的设计与实现

摘 要 伴随着我国社会的发展,人民生活质量日益提高。于是对云上水果超市进行规范而严格是十分有必要的,所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套云上水果超市,帮助商家进行…

酒店管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址:https://download.csdn.net/download/qq_50954361/89036287 更多系统资源库…

拓展AI边界:去中心化人工智能的应用场景和主要项目盘点

随着区块链技术的发展和普及,去中心化人工智能(AI)逐渐成为技术领域的焦点之一。区块链的去中心化特性为AI技术的应用提供了新的可能性,使得数据共享、模型训练和应用部署更加安全、透明和可靠。本文将探索去中心化AI的应用场景&a…

达梦数据库自动备份(全库)+还原(全库) 控制台

一 前提 1.安装达梦数据库DB8(请参照以前文章) 我的数据库安装目录是 /app/dmDB8 2.已创建实例 (请参照上一篇文章) 二 准备测试数据 三 自动备份步骤 1.开启归档模式 开启DM管理工具管理控制台 弹不出来工具的 输入命令 xhost 第一步 将服务器转换为配置状态 右键-&g…

2.4 如何运行Python程序

如何运行Python程序? Python是一种解释型的脚本编程语言,这样的编程语言一般支持两种代码运行方式: 1) 交互式编程 在命令行窗口中直接输入代码,按下回车键就可以运行代码,并立即看到输出结果;执行完一行…

【网络爬虫】(1) 网络请求,urllib库介绍

各位同学好,今天开始和各位分享一下python网络爬虫技巧,从基本的函数开始,到项目实战。那我们开始吧。 1. 基本概念 这里简单介绍一下后续学习中需要掌握的概念。 (1)http 和 https 协议。http是超文本传输&#xf…

前端必会的一些基础

1、如何把obj对象 添加到arr数组对象内 2、手机号、邮箱、隐藏用户手机号中间四位正则 3、两个数组 数组a未全部人员 数组b为已选中人员 默认选中 4、数组去重、 5、localStorage 存取 数组 方法 6、数据filter过滤 7、请求接口时header 请求格式不对 需要怎么转换&#xf…

男生穿什么裤子最帅?目前最流行的男裤子款式分享

不少男性朋友都觉得现在挑选一条合适的裤子实在太难了,尤其是现在市面上还有很多材质舒适性差、版型不正确的裤子,导致买回来后发现根本不合适。 相信各位小伙伴心中一直存在疑惑,不知道选什么牌子的裤子比较好?接下来就给大家科…

刷题记录:最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入:strs ["flower","flow","flight"] 输出:"fl"示例 2: 输…

rust中字符串String常用方法和注意事项

Rust 中通常说的字符串指的是&#xff1a;String 和 &str(字符串字面值、或者叫字符串切片)这两种类型。str是rust中基础字符串类型&#xff0c;String是标准库里面的类型。Rust 中的字符串本质上是&#xff1a;Byte的集合&#xff08;Vec<u8>&#xff09; 基础类型…

[技术杂谈]解决windows上出现文件名太长错误

最近执行python setup.py install总是失败&#xff0c;提示文件名太长发现网上有取消限制文件名长度&#xff0c;测试发现改完注册表无需重启cmd就生效了。但是有时候会失败&#xff0c;现在方法放这。 转到Windows“开始”&#xff0c;然后键入REGEDIT。选择注册表编辑器 选…