数据链路层相关知识总结

1. 以太⽹帧

1.1 格式

  • 源地址和⽬的地址是指⽹卡的硬件地址(也叫MAC地址),⻓度是48位,是在⽹卡出⼚时固化的;
  • 帧协议类型字段有三种值,分别对应IP、ARP、RARP;
  • 帧末尾是CRC校验码。

1.2 认识MAC地址

MAC地址,即 Media Access Control Address,⽤于标识⽹络设备的硬件物理地址。

  • 主机具有⼀个或多个⽹卡,路由器具有两个或两个以上⽹卡;其中每个⽹卡都有唯⼀的⼀个MAC地址。(可理解为每个人的身份证号,无论去哪里,身份证号不变)
  • ⽹络通信,即⽹络数据传输,本质上是⽹络硬件设备,将数据发送到⽹卡上,或从⽹卡接收数据。
  • 硬件层⾯,只能基于MAC地址识别⽹络设备的⽹络物理地址。(可理解为坐高铁得刷身份证不能报名字)
  • MAC地址⽤来识别数据链路层中相连的节点
  • ⻓度为48位,即6个字节。⼀般⽤16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19
  • 在⽹卡出⼚时就确定了,不能修改。虚拟机中的MAC地址不是真实的MAC地址,可能会冲突(可理解为在游戏世界里创建的角色都有一个专属ID,这个ID只在游戏世界里有用);也有些⽹卡⽀持⽤户配置MAC地址。

特殊的MAC地址

⼴播数据报:发送⼀个⼴播数据报,表示对同⽹段所有主机发送数据报。⼴播数据报的MAC地址

为:FF:FF:FF:FF:FF:FF

2. 认识MTU

最⼤传输单元(Maximum Transmission Unit, MTU )

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

制。

  • 以太⽹帧中的数据⻓度规定最⼩46字节,最⼤1500字节,ARP数据包的⻓度不够46字节,要在后⾯补填充位(可以理解为发货的快递箱内不能太空,得塞泡沫避免中途损坏);
  • 最⼤值1500称为以太⽹的最⼤传输单元(MTU),不同的⽹络类型有不同的MTU;
  • 如果⼀个数据包从以太⽹路由到拨号链路上,数据包⻓度⼤于拨号链路的MTU了,则需要对数据包进⾏分⽚(fragmentation)(可理解为一个快递箱放不下得分成两个快递箱发货);
  • 不同的数据链路层标准的MTU是不同的(可理解为不同的快递公司快递箱的尺寸标准不同);

MTU对IP协议的影响

由于数据链路层MTU的限制,对于较⼤的IP数据包要进⾏分片。

  • 将较⼤的IP包分成多个⼩包,并给每个⼩包打上标签(可理解为一个快递箱放不下得分成两个快递箱,并且是两个快递箱分别发货,有两张快递单);
  • 每个⼩包IP协议头的 16位标识(id) 都是相同的(可理解为拆成两个快递分别发货,但两份快递单中的地址,收件人和联系电话都一致);
  • 每个⼩包的IP协议头的3位标志字段中,第2位置为0,表示允许分⽚,第3位来表示结束标记(当前是否是最后⼀个⼩包,是的话置为1,否则置为0);
  • 到达对端时再将这些⼩包,会按顺序重组,拼装到⼀起返回给传输层(可理解为发过来的是一个未组装好的家具,拿到手后得先将其组装好后才能使用);
  • ⼀旦这些⼩包中任意⼀个⼩包丢失,接收端的重组就会失败。但是IP层不会负责重新传输数据(可理解拿快递的时候弄丢任何一个包裹,收货人无法正常组装家具,但快递员不会重新送货);

3. 总结:

回顾全文,我们其实只讲了两件简单的事:地址包装

  1. 关于地址 :MAC地址就像人的身份证号,与生俱来、全球唯一。在网络世界里,硬件设备只认这个号码。

  2. 关于包装 :MTU就像快递公司的箱子尺寸限制。以太网的箱子最大装1500字节,太小了还得塞泡沫(填充位)。如果数据包太大,路由器就得拆箱(IP分片),拆的时候要贴上相同的订单号(16位标识),还要标注"未完待续"还是"最后一件"(标志位)。

相关推荐
仍然.14 分钟前
初识计算机网络
网络·计算机网络
小程同学>o<37 分钟前
Linux 应用层开发入门(二十五)| 网络编程
linux·网络·嵌入式软件·嵌入式应用层·应用层开发·linux应用层开发
忡黑梨1 小时前
eNSP_DHCP配置
c语言·网络·c++·python·算法·网络安全·智能路由器
YaBingSec1 小时前
玄机网络安全靶场:Jackson-databind 反序列化漏洞(CVE-2017-7525)
linux·网络·笔记·安全·web安全
TechWayfarer1 小时前
网络安全溯源实战:78.1%网络攻击来自境外,如何精准定位攻击源
网络·安全·web安全
ElevenS_it1881 小时前
日志在哪里找?分布式环境下日志采集断裂的5个排查路径
运维·网络·分布式
半壶清水1 小时前
ubuntu中部署开源交换机模拟器bmv2详细步骤
linux·运维·网络·网络协议·tcp/ip·ubuntu
爱吖吖吖a1 小时前
CSMA/CA(载波侦听多路访问/冲突避免)
网络·网络协议
minji...2 小时前
Linux 网络套接字编程(六)TCP的通信是全双工的,自定义协议的定制,序列化和反序列化
linux·运维·服务器·网络·c++
hhb_6182 小时前
Tcl脚本自动化运维实操落地案例详解
运维·网络·自动化