二层转发的学习

1、网络拓扑

二层即网络接入层/数据链路层,处理单段链路(局域网)上的端到端报文交互。局域网(Local Area Network, LAN)指在某一区域内由多台网络设备互联组成的网络。

  1. pc1接入switch lan1口,pc2接入switch lan2口。
  2. pc1配置静态ip192.168.0.10,子网掩码为255.255.255.0
  3. pc2配置静态ip192.168.0.20,子网掩码为255.255.255.0

二层转发是基于 MAC 地址进行数据包的转发,本章以此拓扑为基础,通过 报文从 PC1 发出,如何被设备转发到 PC2,并且如何将 PC2 的报文转发回 PC1, 将其中所发生的过程通过一步一步的方式进行学习。

2、局域网互通

首先查看pc1 ping pc2发送了那些报文:

通过抓包查看只有ARP和ICMP两种报文,且都是跟IP相关的报文。

3、ICMP报文

  1. Pc1发送 ICMP Echo Request请求

  1. Pc2回复ICMP Echo Reply

当Pc1能正常收到Pc2的回复报文时,表示此时IP可达。

4、ARP报文

地址解析协议(Address Resolution Protocol),是根据 IP 地址获取物理地址的一个 TCP/IP 协议。报文格式如下:

  1. ARP请求

字段

字节数

描述

硬件类型

2

1,Ethernet,即局域网为以太网

协议类型

2

0x0800,IPv4

硬件地址长度

1

6,以太网采用MAC编址

协议地址长度

1

4,IPv4长度为4

操作码

2

1,ARP请求

发送端MAC

6

PC1 MAC

发送端IP

4

PC1 IP

接收端MAC

6

PC2 MAC

接收端IP

4

PC2 IP

  1. ARP响应

字段

字节数

描述

硬件类型

2

1,Ethernet,即局域网为以太网

协议类型

2

0x0800,IPv4

硬件地址长度

1

6,以太网采用MAC编址

协议地址长度

1

4,IPv4长度为4

操作码

2

2,ARP响应

发送端MAC

6

PC2 MAC

发送端IP

4

PC2 IP

接收端MAC

6

PC1 MAC

接收端IP

4

PC1 IP

同时,由抓包可知,ARP 报文的下层封装为 Ethernet II,即以太网协议

5、以太网帧

以太网协议是使用最为管饭的局域网技术协议,实现了二层数据链路的数据 传输和地址封装(MAC)。目前应用的帧格式常为 Ethernet II。

  1. 常见Type(类型)取值

0x0800

IPv4协议

0x86DD

IPv6协议

0x0806

ARP地址解析协议

0x8863

以太网PPP发现阶段

0x8864

以太网PPP会话阶段

0x8100

802.1Q

  1. MAC

MAC 地址由 48 位比特即 6 个字节来表示.

  1. I/G 为 0 则为单播地址,为 1 则为多播地址(组播、广播)。
  2. G/L 为 0 则为全局(全球分配)地址,为 1 则为本地地址(Local Address) 。
  3. OUI 为厂商标识 。
  4. 广播 MAC:全为 1 的 MAC 地址(FF-FF-FF-FF-FF-FF)表示 LAN 上的所 有设备。

6、IP报文

Internet Protocol 网际协议缩写为 IP,是 TCP/IP 协议族中最为核心的协议,拥有 V4 和 V6 两个版本,是网络设备互联互通的基础。

IPv4头部的最小长度为20字节,最大长度为60字节。

字段

大小

描述

版本

4bits

IP协议版本,IPv4和IPv6

IP头部长度

4bits

IP报文头部长度

区分服务tos

8bits

服务类型,一般不使用

总长度

16biits

头部和数据的长度和

标识

16bits

维持的计数器

标志

3bits

DF、MF,即分片传输或数据未分片

片偏移

13bits

分片在原始报文中的相对位置

生存时间TTL

8bits

路由时-1,防止无效报文传输

协议

8bits

上层协议号,TCP 6,UDP 17,ICMP 1

首部校验和

16bits

头部信息校验和

发送端IP

32bits

数据包的发送端IP

接收端IP

32bits

数据包的接收端IP

7、ARP的意义

当了解了一次 ping 互通检查所涉及到协议报文之后,回过来想一想,为什 么在 ping 的时候,首先会抓到 ARP 报文,ARP 的意义在哪里?试想一下,作 为实现者应该怎么去做。

前文讲道,网络实现中分层与封装是核心思想,对于收到的报文,本层处 理完之后,解封装去除头部,交予上层处理,对于发送的报文,本层收到数据 后,加上本层头部,传递给下层处理,那么,一步一步来构建 PC1 的报文。

  1. ICMP报文每个字段都能填写。

  1. ICMP 协议基于 IP 协议,于是交给 IP 层处理,由于所有的信息已 知,IP 层也可以完成报文头部的封装。

3))IP 层封装完后,交予下层 MAC 层处理,MAC 层进行报文头部封 装,需要目的 MAC 和源 MAC,此时,源 MAC 从本机可得,目的 MAC 成为 未知。

所以需要ARP协议,来获取目的IP的MAC地址,来实现整个报文的封装,将报文发送出去。

8、ARP表

凡是需要自行封装报文的网络设备,均会存储 MAC 与 IP 的对应关系,称为 ARP 表。

通过命令 arp -a查看当前主机下的所有arp表项。

9、MAC地址表

既然是二层转发,那么网络设备即是工作在网络参考模型的二层,即对 MAC 层进行处理,依靠 MAC 地址来进行报文的转发。

MAC地址表的字段有

  1. Hash

表示表项在整个mac地址表中的hash索引,方便快速找到。

  1. Port

表示报文接受对应的端口。

  1. Vid

表示报文对应的vlan id,可能来自于端口的pvid,也可能来自于报文本身。

  1. Age

表示表项的老化时间。

  1. mac-address

表示由接受报文的源MAC提供。

10、vlan

VLAN(Virtual Local Area Network,虚拟局域网)是一种将局域网划分为多个逻辑上独立的虚拟局域网的技术。通过使用 VLAN 技术,可以将一个物理上的局域网划分成多个逻辑上的子网,不同的子网之间彼此隔离,就好像它们是连接到不同的交换机端口一样。

VLAN 的主要作用包括:

  1. 隔离流量:不同 VLAN 中的数据包不会直接在交换机上进行转发,这样可以隔离广播、组播等网络流量,提高网络的安全性和性能。
  2. 灵活管理:通过 VLAN 可以根据业务需求对网络进行逻辑上的划分,而无需重新布线和调整物理连接。
  3. 安全性:VLAN 可以帮助实现安全策略,限制不同 VLAN 中的设备相互访问,从而提高网络安全性。

Vlan的核心功能就是数据转发的出入规则。

11、广播

广播工作在 OSI 七层模型中的数据链路层。

广播会将报文发送到整个二层网络中所有的端口,包含发送端口本身。

12、泛洪

对于单播报文的泛洪以及直接端口转发。二层转发根据MAC表来实现转发, 根据报文中的目的 MAC,在转发表中查找出接口。如果找不到出接口,则将报 文发送到该接口之外的所有其它接口,称之为泛洪;如果找到出接口则直接端口 转发。

根据目的MAC地址,在MAC地址表中查询对应的接口,如果不存在就将数据转发给所有接口,宁可全发错发,也不愿意不发。

13、二层ping的流程

1)选择网卡

通过目标ip在本地路由表中选择一个最合适的网卡来发送数据。

根据目的ip和本地路由表中的子网掩码计算得到最合适的网卡。

如果有多个合适的网卡优先选择子网掩码最大的网卡。

如果都没有就会选择本地路由表中的缺省路由(0.0.0.0,下一条(网关)192.168.80.1,网卡192.168.81.93)

在链路上表示是局域网。

  1. 2)查看本地arp表

    在本地arp表中查询是否有目的ip的mac映射。

    如果有则直接进行第四步。

    如果没有,就封装arp请求报文,内容为硬件类型为1(以太网类型),协议类型为0x0800(IPv4),MAC地址长度6,IP地址长度4,操作码为1(arp请求),源mac、ip,目的mac(全0)、ip。

    因为arp的下层封装为以太网,所以还需要封装以太网帧头,内容为目的mac地址全f,源mac地址,类型0x0806(arp)。

    3)封装报文

    封装imcp头,内容为type 0,code 8,校验和,标识(一般为进程号),序列号(消息发送顺序),时间戳。

    封装IP头,封装以太网帧头。

    4)解报文

    接收端收到从端口转发的报文后,检查以太网帧头的目的mac,如果是自己就接受,不是就丢弃,如何拆解ip头,得到icmp报文,然后解析数据,再执行第四步,但code要修改为0.

    5)发送端收到回复

    发送端收到报文后会检查一下是否是发给自己的,是的话ping完成。

  • 22
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值