CV工程师用不到的链路层知识点

上古伪神

共 2375字,需浏览 5分钟

 ·

2021-04-02 18:30

前言

上一篇记录了一下当主机配置了动态获取IP之后,连入网络之后究竟是如何获取IP得,以及如何根据CIDR(无类型域间选路)信息获取子网号、网络中第一个地址和子网掩码。

今天来记录一下链路层相关的理论知识(八股文)

链路层

「链路层的主要功能」

(1)为IP模块发送和接收IP数据报

(2)为ARP模块发送ARP请求和接收ARP应答

(3)为RARP发送RARP请求和接收RARP应答

为IP模块发送和接收数据报

  • 数据包是发给谁的?谁应该接收?
  • 多个进程一起发,会不会产生混乱?有没有先发后发的规则
  • 发送过程出现了错误,怎么处理?

「MAC地址」

上图中标记的就是eno16777736网卡的物理地址,也就是MAC地址,用十六进制标识。

一个网络包要从一个地方传到另一个地方,除了要有确定的地址,还需要又定位功能,而有门牌号码属性的IP地址,才有远程定位功能。

MAC地址更像是一个身份证,而IP地址就是门牌号。

比如可以根据IP查找到主机在哪一栋楼,用MAC可以在用IP找到的楼中查找到对应的主机。

MAC地址有一定的定位功能,不过范围非常有限,只能局限在一个子网里面。

「数据报是发给谁,谁接收?」

此时在数据报中就需要存放源MAC地址以及目标MAC地址。

「多个进程一起发,会不会产生混乱?有没有先发后发的规则」

MAC的全程是Medium Access Control,即媒体访问控制。控制在往媒体上发数据的时候,谁先发,谁后发的问题。防止发生混乱。此问题中的规则,叫多路访问。

有三种方式解决此问题:

(1)分多车道,每辆车一车道,各走各的,这在计算机网络里叫做信道划分。

(2)限号出行协议,在计网中叫做轮流协议。

(3)先出门,发现很堵,返回,错峰出行,叫随机接入协议。以太网用的就是这种方式。

「发送过程出现了错误,怎么处理?」

在上一张图片中,最后面有个CRC,也就是循环冗余检测,通过XOR异或的算法,来计算整个包是否在发送的过程中出现了错误。

什么是ARP?

当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit的以太网地址(也就是MAC地址)来确定目的接口的。

地址解析为这两种不同的地址形式提供映射:32bit的IP地址和数据链路层使用的任何类型的地址。

ARP为IP地址到对应的硬件地址之间提供动态映射。从逻辑Internet地址到对应的物理硬件地址,在32 bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射

「也就是说,通过ARP可以根据IP地址找到对应的MAC地址」

在需要发送一个数据报的时候,通常是有IP地址,但是不知道对方的MAC地址是什么,这个时候就需要通过ARP请求去获取IP地址对应主机的MAC地址。

「通过局域网的交换机进行寻找。」


「ARP高速缓存」

ARP高速运行的关键是由于在每个主机上都有一个ARP高速缓存,这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录,每个元素生存时间是20分钟。

比如,发送数据报的时候只知道IP不知道MAC,此时就是发送ARP请求

「步骤:」

  • 先查看本地ARP缓存,没查到转下一步
  • 通过交换机广播ARP请求
  • 对应的机器进行ARP应答
  • 获取到MAC地址,存入缓存

「ARP代理」

如果ARP请求是从一个网络的主机发送到另一个网络的主机,那么连接这两个网络的路由器就可以回应该请求。

ARP代理也称为混合ARP或ARP出租,是由于通过两个物理网络之间的路由器可以互相隐藏物理网络。

「arp命令」

arp -a:显示ARP高速缓存中的所有内容

可以使用-d删除某项内容

使用-s保存某项内容

什么是RARP?

RARP称为「逆地址解析协议」

就是通过MAC地址获取对应主机的IP地址。

具有本地磁盘的系统从磁盘文件中获取IP地址,但是无盘机需要采用其他方法获取IP地址。

无盘系统的RARP实现过程是从接口卡上读取唯一的硬件地址,然后发送一份RARP请求,请求某个主机响应该无盘系统的IP地址。

报文结构如下:

跟ARP报文结构主要区别就是操作代码:3是RARP的请求,4是RARP的应答

环回接口

大多数的产品都支持环回接口(Loopback Interface),以允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。A 类网络号127就是为环回接口预留的。根据惯例,大多数系统把 IP地址127.0.0.1 分配给这个接口,并命名为localhost。一个传给环回接口的IP数据报不能在任何网络上出现。

一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过程,只是当IP数据报离开网络层时把它返回给自己。

需要指出的关键点:

  1. 传给127.0.0.1的任何数据均作为IP输入。
  2. 传给广播地址或多播地址的数据报复制一份传给127.0.0.1,然后送到以太网上。
  3. 任何传给该主机IP地址的数据均送到127.0.0.1。

最大传输单元 MTU

以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作MTU,最大传输单元。

通过ifconfig命令可查看每个网卡的MTU

路径 MTU

两台通信主机路径中的最小 MTU,路径MTU 在两个方向上不一定是一致的。



往期推荐

下期见

    

上古伪神

一个分享Java后端学习日志和健身的公众号

欢迎大家点个在看、点个赞、分享至朋友圈

浏览 37
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报