【javaEE】计算机网络数据链路层深度剖析与DNS域名系统


🎬 那我掉的头发算什么个人主页
🔥 个人专栏 : 《javaSE》《数据结构》《数据库》《javaEE》

⛺️待到苦尽甘来日


文章目录

数据链路层

以太网协议

以太网是一种数据链路层+物理层的协议,只要是通过网线进行上网,都会使用到以太网协议。

以太网数据帧格式


此处的地址,并不是指IP地址,而是mac地址。

mac地址与ip地址


对于我现在这台电脑来说,我的WIFI目前拥有的物理地址和IP地址如上。

mac地址是通过六个字节表示的,因此最大数量是2^32 * 2^16,大概在千万亿级别。所以目前来说mac地址是非常够用的,所以他没有使用NAT机制分配地址,而是每一个设备在出厂时就被内置了一个唯一的mac地址。它的作用其实和ip一样,都是为了唯一标识我们的设备。但是在实际使用中,二者的作用略有不同。

IP处于网络层,关注的是整个网络传输过程的路径,mac处于数据链路层,关注的是两个相互通信的设备之间的信息转发。

举个例子:

如图所示,我们假设一次信息传输中涉及到五个设备的名称以及地址如上。现在我们想要从A向E发送一个信息。

1.A-B

此时我们的数据包中报头部分的地址信息:

源ip:A

目的ip:E

源mac:A

目的mac:B

2.B-C

源ip:A

目的ip:E

源mac:B

目的mac:C

... ... ... ...

5.D-E

源ip:A

目的ip:E

源mac:D

目的mac:E

mac地址只会标识相邻节点的地址信息,因为它只能作用在数据链路层和物理层,受限制。ip地址标识整个传输过程中的起点和终点。


此处的类型表示的是载荷的类型,不同类型载荷数据格式不同。

帧尾四个字节表示校验和。

最大字节数1500。我们知道IP协议数据包最大长度是64KB,远大于数据链路层,理论上数据链路层根本承载不了IP数据包啊。

其实,IP在拆包的时候,并不是根据自身最大长度拆包的,而是根据以太网数据包的最大限制拆包,每个小包大小都在1500B以下,以此来避免数据缺失。

ARP协议

如果数据帧数据类型部分如上,则这个请求是一个ARP请求。

ARP请求传输的并非业务的逻辑,而是一些辅助功能,主要作用是根据IP地址找到MAC地址,以此来完成数据链路层的传输。

网络传输过程中,网络层是根据IP来转发数据的,数据链路层则需要MAC地址。但是IP协议数据包传下来的只有IP地址,我们仅仅拿到IP地址没法完成数据帧的转发。此时就需要ARP发挥作用:已知我们拥有下一个节点的IP地址,我们可以向下一个节点的本地网段的广播地址发送ARP请求,广播地址会把这个请求发给所有的设备,当有设备发现ARP请求包的目的IP与自己的一致,就发送一个ARP响应,告诉源主机自己的MAC地址。
(广播地址:同一个局域网中主机位全为一,如192.168.1.256或者10.256.256.256。像广播地址发送一个数据之后,会将这个数据转发给网络中的所有设备)

重要应用层协议

DNS

咱们都知道,每一个设备/服务器都拥有唯一的IP地址,我们在访问服务器时就是在访问这些IP地址。但是在日常搜索网站时,就比如百度,我们通常都是搜索www.baidu.com而并非xxx.xxx.xxx.xxx。这背后就是DNS的功劳,它能将域名映射成为机器可以识别的IP地址,让我们对于网站的地址记忆起来更加方便快捷。

在早期,网站很少,知名网站就那几个,大家完全可以把网站IP地址记忆下来,使用的时候输入即可。但是后来网站越来越多,根本记不住,于是有了DNS的概念。DNS开始时是使用本地的hosts文件来映射的,它会对我们输入的域名进行解析映射。后来因为网站越来越多并且hosts文件很难维护,所以hosts文件中的内容被提取出来,放到了一个DNS服务器上。我们每次访问域名时,先访问DNS服务器,把域名对应的IP拿到,再真正的访问服务器。
以上就是本博客全部内容!!

相关推荐
大Mod_abfun几秒前
AntdUI教程#1ChatList交互(vb.net)
服务器·前端·ui·交互·antdui·聊天框
嵌入式×边缘AI:打怪升级日志几秒前
2.3.2 目录与文件操作命令(保姆级详解)
linux·运维·服务器
艾莉丝努力练剑3 分钟前
MySQL查看命令速查表
linux·运维·服务器·网络·数据库·人工智能·mysql
皮皮哎哟4 分钟前
Linux网络最终篇:TCP并发服务器
linux·服务器·select·epoll·poll·tcp并发
无心水8 分钟前
【OpenClaw:进阶开发】11、OpenClaw插件开发入门——从零编写“文件统计与报表生成”Skill
linux·运维·ubuntu
sbjdhjd8 分钟前
RHCE | Linux 例行性工作(定时任务)从入门到精通
linux·运维·服务器·华为·云计算
枷锁—sha10 分钟前
【CTFshow-pwn系列】03_栈溢出【pwn 056-057】详解:32位 与64位Shellcode 与 Linux 系统调用底层原理剖析
linux·运维·网络·笔记·安全·网络安全·系统安全
人间打气筒(Ada)12 分钟前
ansible之role角色
运维·ansible·自动化运维·template·role·红帽·批量部署
shimly12345612 分钟前
github 配置 ssh key ssh-key
运维·ssh·github
qq_4371006612 分钟前
ElasticSearch查询实例等记录
运维·jenkins