【计算机网络】数据链路层原理

在网络传输中,应用层解决的是将报文序列化交给传输层,从传输层读取的报文再转化成格式化数据的问题;传输层解决的是控制报文怎样发以及丢包之后如何处理的问题;网络层解决的是长距离网络传输路径选择的问题,数据链路层解决的是,数据在两个设备之间如何传输的问题。

一. 数据链路层报头

1.1 认识以太网

  • "以太网"不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物
    理层的内容。例如:规定了网络拓扑结构、访问控制方式、传输速率等;
  • 例如:以太网中的网线必须使用双绞线;传输速率有10M,100M,1000M等;
  • 以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网,无线LAN等;

1.2 数据链路层报头格式

这里的目的地址和源地址都是MAC地址,也就是源MAC地址和目的MAC地址,MAC地址长度为48位,是网卡在出厂时就确定的。

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

报头中的CRC属性是CRC校验码

数据链路层报头如何封装、解包

数据链路层报头的长度是6+6+2+4 = 18字节,所以前面去掉14字节、后面去掉4字节之后就可以得到完整的IP报文了

如何分用?

通过报头中的2字节类型确定交付给哪一个上层

认识MAC地址

MAC地址用来识别数据链路层中相连的节点,长度为48位,6个字节

一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)

在网卡出厂时就确定了,不能修改。MAC地址通常是唯一的(虚拟机中的MAC地址不是真实的MAC地址,可能会冲突;也有些网卡支持用户配置MAC地址)。

对比MAC地址和IP地址

源IP地址表明报文最初从哪台主机交出,目的IP地址是这个报文最终交付给哪台主机

源MAC地址表示报文上一站来自哪里,目的MAC地址表示报文下一站的地址

认识MTU

MTU相当于发快递时对包裹尺寸的限制,这个限制是不同的数据链路对应的物理层,产生的限制

以太网顿中的数据长度规定最小46字节,最大1500字节 ,ARP数据包的长度不够46字节,要在后面补填充位;
最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;

如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包

进行分片(fragmentation);不同的数据链路层标准的MTU是不同的;

MTU对IP协议的影响

由于数据链路层MTU的限制,对较大的IP数据包要进行分包

  • 将较大的IP包分成多个小包
  • 每个小包的IP协议头的16位标识id都是相同的
  • 每个小包的IP协议头的3位标志字段中,第一位是固定占用的。第二位为0表示允许分片,第三位来表示结束标记,如果当前是最后一个分片,就为1,否则为0;
  • 到达对端之后这些分片的数据会按照偏移量排序重组,然后重新交付给传输层
  • 一旦这些分片中,有一个分片丢失,就认为整个数据包丢失,要就行重传

MTU对UDP协议的影响

  • UDP的报头长度为8字节
  • 一旦UDP报文的长度超过(1500-20-8 = 1472)字节就会被网络层分成多个IP数据报
  • 这些分片一旦有一个分片丢失,在对端的网络层就会重组失败,整个报文就会被丢弃,丢包的概率就很大了

MTU对TCP的影响

  • TCP一个数据报的大小也受限于MTU,TCP的单个数据报的最大消息长度称为MSS(Max Segment Size)
  • TCP在三次握手时,会在SYN的报头的选项中携带自己的MSS大小,双方在通信的时候,使用MSS的最小值
  • 最理想的情况下,MSS的值正好时在IP层不会分片的最大长度(1500 - 20 - 20 = 1460)
  • TCP的MSS是滑动窗口中一个小报文的长度,滑动窗口中报文的数目 = 滑动窗口的大小 / MSS,MTU是数据链路层能接收的报文的最大长度;
  • TCP通信的时候,将滑动窗口一块一块发而不整体发送的原因是规避报文长度过长在IP层被分片,进而增大丢包概率的风险,也可以提高重传的效率。

二. ARP协议

在局域网通信中,处于同一个局域网的主机都能收到另一个主机发来的消息,但是主机在接收的时候会根据自己的MAC地址和报文中的目的MAC地址对比,看消息是否是发给本主机的,如果是就接收,否则就丢弃。这样上层也不会知道自己的主机接收过不属于发给本机的消息。

但是主机A为什么要将数据发送给主机E?

主机A在转发消息的时候,会先将目的IP地址和子网掩码&,看一下接收方的主机是否和自己处于同一个子网,如果属于,就会将数据在本局域网中传播;如果不属于自己所处的子网,就需要跨网络传输,即通过路由器进行传输,路由器根据目的IP地址和路由表一跳一跳的将数据传给目标主机所在的子网,再进行局域网传输。

因此是路由决定的,这里交给主机E是交给主机E所在的子网,而非主机E本身

一个局域网就是一个碰撞域,在以太网中,任何时刻,只允许一台机器向网络中发送数据。如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞。

以太网是共享资源("临界资源"),在使用以太网的时候,使用的时间越短,就越能规避数据碰撞的风险,数据帧越短就越能规避数据碰撞的风险,数据帧越少,就越能规避数据碰撞的风险。综上所述,数据帧既不能太长,也不能太短,即数据帧的大小有上限也要有下限。

因此,MAC帧规定,数据的大小为[46,1500]字节

在数据在网络中传输的时候,最后一定会转变成局域网传输,那么就一定需要MAC地址进行确认主机,但是在封装MAC帧的时候,发送主机只知道目标主机的IP地址,怎么能知道目标主机的MAC地址,进行目标地址数据段的填写呢?

如果我们只知道目标主机的IP地址,但不知道对方的MAC地址,就无法给对方发送数据帧,所以就需要一种局域网协议,将目标主机的IP地址转化成目标主机的MAC地址,这种协议叫ARP协议,地址解析协议。

真正在网络中流动的是MAC帧

2.1 ARP

ARP协议是数据链路层的协议位于MAC帧的上层,当数据需要在局域网中进行分发且没有目标主机的MAC地址的时候,就会生成一个填写了本主机IP、MAC地址以及目标主机IP地址的ARP报文,将这个报文交付给下层,封装成MAC帧。

ARP报头属性:

  • 硬件类型:指的是链路层为网络类型,1为以太网
  • 协议类型:指要交换的地址类型,0x0800为IP地址
  • 硬件地址长度:以太网的地址长度为6字节
  • 协议地址长度:对于IP地址为4字节
  • op字段,1为ARP请求,2为ARP应答,一台主机既能收到ARP请求,也能收到ARP应答

ARP的工作流程:

无论是读取ARP应答还是ARP请求,都是先读取op字段

主机会在一段时间内,记录下来该局域网中各个IP对应的MAC地址。不永久记录下来是因为有些主机会更换网卡,这时候IP对应的MAC就变了;而且IP是动态分布的,有时候同一个IP可能对应的是不同的主机。而且发送ARP请求应答也不是很耗时的行为。

因为ARP的请求和应答大小都是28字节,但是MAC帧要求数据的大小要>= 46字节,所以会在ARP请求或应答后填充数据,保证满足MAC帧对数据大小的要求,填充的数据不影响ARP的内容。

相关推荐
新手88603 小时前
Oracle VirtualBox虚拟机安装 和 安装 window11版本虚拟机 及 启用EFI和硬盘无法使用 问题
服务器·windows·计算机网络·安全·虚拟机
Du_chong_huan5 小时前
1.5 协议层次及其服务模型 | 计算机网络的 “分层架构” 哲学
计算机网络·架构
tobias.b9 小时前
计算机基础知识-计算机网络
计算机网络
XuanTao779 小时前
【分享】✍️手写生成器|高级版|轻松生成自然逼真手写字体
数码相机·计算机网络·网络安全·智能手机·软件工程
简单的事情重复做9 小时前
计算机网络中的术语
计算机网络
先跑起来再说10 小时前
HTTP到底是什么?一次讲清楚
网络·网络协议·计算机网络·http
小糖学代码1 天前
计算机网络理论:5.传输层
计算机网络
南梦浅1 天前
三层网络搭建(思科模拟器)
网络·计算机网络
向往着的青绿色1 天前
雷池(SafeLine)社区版免费部署教程|从环境检查到防护实操全流程
网络·计算机网络·nginx·网络安全·容器·网络攻击模型·信息与通信