网络原理 - 9

目录

数据链路层

以太网

以太网帧格式

[MAC 地址](#MAC 地址)

[DNS(Domain Name System)](#DNS(Domain Name System))

完!


数据链路层

这里的内容也是简单了解,除非是做交换机开发,一般程序员不需要涉及~~

以太网

"以太网"不是一种具体的网络,而是一种技术标准,既包含了数据链路层的内容,也包含了一些理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等等~~

例如,以太网中的网线必须使用双绞线:传输速率有 10M 100M 1000M等等~~

以太网是目前使用最广泛的局域网技术,和以太网并列的还有令牌环网,无线 LAN 等~~

以太网帧格式

**源地址和目的地址:**指的是网卡的硬件地址(也叫 MAC 地址),长度是 48 位(6 个字节的地址),是在网卡出场时候就固化了

帧协议类型字段有三种值,分别对应 IP,ARP,RARP

IP:此时意味着以太网数据帧是一个能够携带业务数据的报文(大概率是业务数据,也有可能是一个携带 syn 这种的业务~~)

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

ARP

在网络通信中,源主机的应用程序知道目的主机的 IP 地址和端口号,却不知道目的主机的硬件机制。数据包显示被网卡接收到然后再去处理上层协议的,如果接收到的数据包的硬件地址与主机不符,则直接丢弃~因此在通讯前必须获得目的主机的硬件地址

ARP效果就是能够让路由器 / 交换机建立一个内部的结构, IP -> MAC (类似于 hash表)(转发表,并不是路由表,只是描述着一个设备和那些设备之间是连接着的~~)

RARP

RARP 也是路由器和交换机也是建立一个内部的结构,不过是 MAC -> IP

帧末尾是 CRC 校验码

以太网的数据帧,载荷部分是有长度要求的(46 - 1500 字节)。46 字节,是因为 ARP 是 46 字节,1500 字节,是硬件的限制,最大的载荷长度,称为 MTU,我们前面在 IP 中讲到 IP 数据报拆包组包往往就是因为这个 MTU 导致的~(数据链路层也不仅仅是以太网,还有其他的协议,不同的协议,对应的 MTU 也会有差别~)

MAC 地址

在数据链路层,引入了另外一套地址体系,称为"MAC 地址" / 物理地址

MAC 地址和 IP 地址是两套独立的地址体系。

IP 地址,侧重于全局的转发,从起点到终点,整个转发过程,通过 IP 地址负责完成。

MAC 地址,侧重于局部的转发,两个相邻设备之间的转发(一个电脑脸上一个路由器,这就是相邻设备)

MAC 地址是用来识别数据链路层中相邻的节点,一般用 16 禁止数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)

MAC 地址表示的范围比 IPv4 的地址大的多,当前的 MAC 地址都是和主机(网卡)一对一进行绑定的,IP 地址我们前面提到过,是动态分配的,但 MAC 地址就是静态分配的,网卡出厂的时候,MAC 地址就写死了~~

举个栗子~~

从江西到山西大同,路程非常远,没办法直达~有三条路线可选:

  1. 江西 - 湖北 - 河南 - 山西 - 大同

  2. 江西 - 安徽 - 河南 - 山西 - 大同

  3. 江西 - 湖北 - 山西 - 山西 - 大同

上面的三种路线,就是网络层的路由选择的过程,一跳一跳的可以进行"投石问路"

如果确定了路线三:江西 - 湖北 - 山西 - 大同。

则就又有不同的出行方式:

  1. 江西 - 湖北:

源 IP:江西,目的 IP:大同

源 MAC:江西,目的 MAC:湖北

(坐飞机)

  1. 湖北 - 山西

源 IP:江西,目的 IP:大同

源 MAC:湖北,目的 MAC:山西

(坐火车)

  1. 山西 - 大同

源 IP:江西,目的 IP:大同

源 MAC 山西,目的 MAC:大同

(坐大巴)

上述不同的出行方式,即是每经过一个路由器 / 交换机,路由器 / 交换机就会把上述数据包进行分用和重新分装,其中的源 MAC 和目的 MAC 就会发生改变,如果不考虑 NAT 机制,源 IP 和目的 IP 是始终不变的~~(公网对公网)

DNS(Domain Name System)

DNS 是一整套从域名映射到 IP 的系统

TCP / IP 中使用 IP 地址和端口号来确定网络上的一台主机的一个程序,但是 IP 地址不方便记忆~

于是人们发明了一种叫主机名的东西,是一个字符串,并且使用 hosts 文件来描述主机名和 IP 地址的关系~~

hosts 文件里面的内容就是行文本,包含很多行,每一行都有 IP 和域名,每次访问每个域名就会进行查询,获取到对应的 IP。hosts 文件目前仍然是有效的,只不过一般情况下都是空的内容~~

随着互联网不断发展,域名和服务器都越来越多了,此时维护 hosts 文件,就非常麻烦了。

干脆就有大佬,搭建了一组服务器,来提供域名解析服务(将 hosts 内容放到了服务器里面了),某个主机想要访问某个域名,就先查询一下 域名解析服务器(DNS 服务器),查到的结果,就是域名对应的 IP,拿着 IP 进行访问即可~~

DNS 服务器,并非只有一份,是有很多份的~~最开始的一套 DNS 服务器,称为"根域名服务器",这里面的内容是非常全的~~ 各个国家的网络运营商,再根据域名服务器里面的内容,搭建出"镜像服务器",上网的时候,一般就是就近的访问附近运营商的镜像 DNS 服务器,镜像 DNS 服务器会定期的从跟服务器中同步数据~~

搭建域名服务器的时候。还会对于域名进行分级管理,一级域名,二级域名,三级域名....这样就可以控制每个服务器管理的数据都是适量的~~

例如,www.baidu.com ==> 一级域名:www 二级域名:baidu 三级域名:com~~

完!

相关推荐
shykevin25 分钟前
python开发Streamable HTTP MCP应用
开发语言·网络·python·网络协议·http
tmacfrank1 小时前
网络编程中的直接内存与零拷贝
java·linux·网络
数据与人工智能律师3 小时前
虚拟主播肖像权保护,数字时代的法律博弈
大数据·网络·人工智能·算法·区块链
QQ2740287564 小时前
Soundness Gitpod 部署教程
linux·运维·服务器·前端·chrome·web3
qwfys2004 小时前
How to configure Linux mint desktop
linux·desktop·configure·mint
南方以南_4 小时前
Ubuntu操作合集
linux·运维·ubuntu
purrrew4 小时前
【Java ee初阶】HTTP(2)
网络·网络协议·http
火星数据-Tina4 小时前
从HTTP轮询到WebSocket:如何让体育API性能提升100倍?
websocket·网络协议·http
冼紫菜5 小时前
[特殊字符]CentOS 7.6 安装 JDK 11(适配国内服务器环境)
java·linux·服务器·后端·centos
Chuncheng's blog6 小时前
RedHat7 如何更换yum镜像源
linux