精华内容
下载资源
问答
  • 一、分层 通过借鉴计算机网络通信体系架构的OSI模型,可将区块链逻辑架构划分为三层。...3. layer2 第2层(Layer 2)包括合约层和应用层。 二、作用 Layer 1 解决信任,Layer 1 的代币的存在是为了让这...

     

    一、分层

     

    通过借鉴计算机网络通信体系架构的OSI模型,可将区块链逻辑架构划分为三层。

    1. layer0

    其中第0层(Layer 0)对应OSI模型的1-4层(底层协议),包括传输层。

     

    2. layer1

    第1层和第2层对应OSI模型的5-7层(上层协议),第1层(Layer 1)包括数据层、网络层、共识层和激励层.

     

    3. layer2

    第2层(Layer 2)包括合约层和应用层。

     

    二、作用

    Layer 1 解决信任,Layer 1 的代币的存在是为了让这条底层公链能够抵抗 51% 攻击。

    Layer 2 搞定性能,对于 Layer 2 协议来说,唯一能够捕获价值的方式是存储某种外部的、有价值的状态。

     

    三、应用

    现有的扩容方案分别针对不同层级进行改进,分为第0层扩容、链上扩容和链下扩容。

    第1层扩容,即链上(On-Chain)扩容,通过优化、改进公链基本协议提升区块链性能。

    第2层扩容,即链下(Off-Chain)扩容,不改变公链基本协议,通过链下在应用层进行改进提升性能。

    第0层扩容通过优化区块链底层数据传输协议提升区块链性能,不改变区块链的上层架构,是一种保留原有链生态规则的性能提升方案。


     

     

     

     

    http://www.btc798.com/articles/49401.html

    https://www.zhongbi.net/news/blocknews/140364.html

    展开全文
  • Developed in 1980s, Layer 2 (L2) switches have been widely applied to high-speed data transmission in the enterprise between end stations. Layer 3 (L3) switch works as routing over IP network, which m

    Developed in 1980s, Layer 2 (L2) switches have been widely applied to high-speed data transmission in the enterprise between end stations. Layer 3 (L3) switch works as routing over IP network, which mainly functions as dealing with network traffic. This article would provide general information about layer 2 and layer 3 switches, their differences as well as guidance on making choices between those two switches.


    Layer 2 and Layer 3 Networks


    Information About OSI Model

    If you want to figure out the layer things, you must understand what is the OSI model at first. OSI stands for Open Systems Interconnection, which is a model used to standardise the functions of telecommunication and computing systems around the world. It is a controlled hierarchy where information is passed from one layer to the next creating a blueprint for how information is passed from physical electrical impulses all the way to applications.


    Basically, there are totally 7 layers in the OSI model, the “layers” refers to how you configure an IT network. Function of each layer is to provide services to the above layer, so L2 props up L3, shown as the below figure.


    osi-model


    As per OSI Model, Layer 2 is Data Link Layer (DLL), which is basically divided into two sub-layers: Logic Link Control (LLC) and Media Access Control (MAC). LLC layer provides services to upper layer, and controls frame synchronization, flow control and error checking. MAC layer performs Layer 2 functions like switching, physical addressing etc. Besides, it controls how a computer on the network gains access to the data and permission to transmit it. Traditional switching operates at layer 2 of the OSI model, where packets are sent to a specific switch port based on destination MAC addresses. There are three distinct functions of layer 2 switching. The following figure shows how layer 2 switching working.

    • Address learning
    • Forward/filter decisions
    • Loop avoidance

    layer 2 switching


    Layer 3 Switch

    With the support of switching and routing technologies, Layer 3 creating logical paths, known as virtual circuits, for transmitting data from node to node. Routing and forwarding are functions of this layer, as well as addressing, internetworking, error handling, congestion control and packet sequencing. Compared to Layer 2 switching,Layer 3 switching is a relatively new term. That has been extended by a numerous vendors to describe their products. Here is an example to illustrate it. one school uses this term to describe fast IP routing via hardware, while another school uses it to describe Multi Protocol Over ATM (MPOA). The following figure shows how layer 3 switching working.

    layer 3 switching


    Layer 2 Vs. Layer 3 Switching

    —Functions

    Layer 2 Data Link: Responsible for physical addressing, error correction, and preparing the information for the media.


    Layer 3 Network: Responsible for logical addressing and routing IP, ICMP, ARP, RIP, IGRP, and routers.


    —Network traffic

    Layer 2 networks forward all their traffic, including ARP and DHCP broadcasts. Anything transmitted by one device is forwarded to all devices. This type of broadcast traffic is very fast. When the network gets too large, the broadcast traffic begins to create congestion and decreases network efficiency.


    Layer 3 traffic restricts broadcast traffic. Administrators on L3 can segment networks and restrict broadcast traffic to subnetworks, limiting the congestion of broadcast on large networks. This reduce overall traffic levels by allowing administrators to divide networks into smaller parts and restrict broadcasts to only that sub-network.


    In a conclusion, there is a limit to the size of a layer 2 network. However, a properly configured layer 3 network with the correct knowledge and hardware can have infinite growth.


    —Network routing

    Layer 2 switch lacks router hardware, leaving them susceptible to broadcast storm and the additional administrative overhead of IP allocations due to flat subnet across multiple sites. A Layer 3 switch is a high-performance device for network routing. A router works with IP addresses at layer 3 of the model. Layer 3 networks are built to run on on layer 2 networks. But Layer 2 switches only require switching, no routing gear is necessary. Besides, they cost less and offer very low latency.


    Which is Better?

    This is an open question, and the answer actually depends on what is your need. Both layers of the OSI have their role in the architecture of network performance. An L2 network would be more useful broadcasting information between two computers in the same office, close together. Routing controls happen at Layer 3, and that is what most businesses need. If you are looking for some L2/L3 switches, you can take FS a try. We offer L2/L3 network switches with high performance but low costs. For details, please visit www.fs.com.

     
    展开全文
  • 浅谈区块链扩容 之 Layer2 扩展

    万次阅读 2019-05-06 09:20:29
    摘要:以太坊扩容问题一直被大家所关注,这篇文章来谈一谈扩容问题的一个重要方向:Layer2 扩展(链下扩容)。 前言:自区块链技术诞生以来,对其 “性能” 的诟病就从来没有停止过。虽然从技术上说,一个基于...

    摘要:以太坊扩容问题一直被大家所关注,这篇文章来谈一谈扩容问题的一个重要方向:Layer2 扩展(链下扩容)。

    前言:自区块链技术诞生以来,对其 “性能” 的诟病就从来没有停止过。虽然从技术上说,一个基于分布式对等网络架构的系统,与成熟的中心化技术相比,其 “性能” 方面有着天然的劣势,但业内人士对区块链 “扩容” 的研究和努力也从没有停止过。近两年,所谓的 “区块链 Layer2 扩展” 的提法已经逐渐在业内达成共识,并出现了一些有潜力的项目。本文就将为大家介绍一些与区块链 “扩容” 和 “Layer2 扩展” 相关的基础概念。

    本文可以看作是对区块链的 Layer2 扩展的扫盲性介绍,不会涉及过多的技术细节;但我会假设读者已经知道比特币、以太坊是什么,区块链大概是什么,我们会基于这些最基础的知识来讨论扩容的问题。
    希望本文能给区块链开发者或爱好者一些有价值的参考。

    如何评估区块链的性能

    如果我们现在来问一个区块链爱好者或者从业者:你认为目前比较成熟的公链,比如比特币和以太坊在技术上面临的最大的问题是什么?我想大多数人的回答应该都是类似的:交易确认时间长(一个交易从发出到最终确认所经过的时间)、网络拥堵严重(如果同一个时间产生的交易太多,有些交易无法被马上处理)等等。这也就是通常意义上讲的所谓 “性能” 问题。

    对于目前基于区块链架构的公链平台的所谓 “性能” 的评估,应该考虑两个方面。

    被讨论最多的就是所谓的 TPS(Transactions Per Second 每秒交易量),这个维度衡量的是区块链在单位时间内所能处理的交易数量;我们近几年最常提到的所谓 “扩容” 指的就是这个维度。

    如果把以太坊比做 “世界计算机”,那么目前,它只能用单核(单线程)来进行计算(同一时间只能有一个矿工来记账,或者说只有一个矿工记的账会被接受);而所谓 “扩容” 可以想象为把这个 “世界计算机” 扩展为多核(多线程),使它在单位时间内可以同时运行多个任务(同时有多个矿工在记账,他们记的账都可以被接受),最终反映为 TPS 的提高。这也就是所谓的 Layer1 扩容。在以太坊里,指的就是现在已经合二为一的 Casper + Sharding(我之前曾发过一篇 技术翻译稿 - 以太坊的分片 来讲解 分片 Sharding 的原理,有兴趣的读者可以自行参考,这里不再展开了)。

    但是在实际应用中还有一个衡量性能的维度是不能忽视的,那就是 “平均处理时间”。基于刚刚的比喻,在以太坊中,这个维度就相当于这台 “世界计算机” 的单核(单线程)处理能力。

    什么是 区块链的 Layer2 扩展

    我们假设某个基于以太坊智能合约的业务流程需要 5 个步骤(交易)才能完成,也就是说,我大概有个智能合约,这个合约会有 6 个状态:初始状态,状态 1,…,状态 4,最终状态。那么要完成整个流程,就至少需要 5 个区块时间(从初始状态变为状态 1,需要交易 1 来完成,以次类推,则至少需要 5 个交易才能把状态变为最终状态)。

    很显然,在这个例子里,区块链性能的瓶颈就变成了 “区块时间”。(这是因为智能合约本质上就是一个可定制的状态机,如果它有 6 个单向变化的状态,那么必须经过 5 次变化才能达到最终状态,所以 5 个交易是必须的。)而区块时间是由公链协议所规定的,比如在比特币里是 10 分钟,在以太坊里现在大概是 16 秒,这是无法简单缩减的;整个流程的 5 个区块时间是最乐观的估计,也就是性能上限。那么我们如何缩短这个流程的执行时间、降低 “平均处理时间” 呢?

    这就是所谓的区块链 Layer2 扩展要解决的问题。而答案就是 —— off-chain(这个词的译法大概还没有共识,我这里姑且译为 “脱链”,也就是不在主链上处理的意思)。

    编者在 2019 年更新本文时,业界大多称为链下扩容

    这种 off-chain 解决方案的思路是:我们可以把计算、交易等业务处理拿到主链之外来执行,只在主链上反映最终的结果,中间过程不在主链做记录。

    这样,在上边例子里,我们要在主链上保存的状态就是初始状态和最终状态,中间过程的 4 个状态变动我们可以不关心,那对应的 4 个交易就可以拿到 “链外” 去执行;因为 off-chain 方案通常处理性能会非常高(后文中我会具体解释技术方案的原理),很有可能在主链的一个区块时间内就处理完这 4 个交易,并将结果发送回主链(即达到最终状态);于是从结果来看,整个处理过程只经过了一个区块时间(也就是最终状态的确认交易)就完成了。

    很明显,如果采用这样的方案,越复杂的流程得到的性能提升越大;比如一些有高交互性能需求的应用 —— 游戏。另外对于支付的场景,因为相对高昂的交易手续费,那些高频的小额交易从经济上讲也显然成本过高。所以无论是支付还是合约的应用场景中,都有对 Layer2 扩展的强烈需求。

    Layer2 扩展的技术方案

    Off-chain 链下扩容方案的总体思路是类似的:首先需要把主链上的部分 “状态” 拿到链外来,可以本地存储(基于某种客户端)或者临时存储;然后在链外做具体的操作,比如转账或者其他会影响 “状态” 的处理;当处理完成或者到达需要同步 “状态” 的时间点时,再把最终状态传回主链保存。

    目前已经成体系的 off-chain 链下扩容技术方案大概可以分为两大类:

    我们首先来看看 “状态通道”。

    状态通道是一个临时的点对点(交易的两个参与者间)价值转移通道:在开启时,通常会在主链上分别锁定一定的余额,并设定一个有效时间,并可以由任意参与方主动关闭,也就是参与方之间会基于特定的技术协议进行数据交互、价值转移(数字资产转移);然后当可以接入网络、到达某个约定的时间点或者某方主动向主链同步数据时,会将最终结果提交到主链。

    推荐 Solidity 文档中的一篇文章:如何在以太坊上实现一个微支付通道

    状态通道主要解决的是前边提到的高频、小额支付这样的场景中手续费过高的问题,但它的局限也很明显:

    首先,它是一个临时的通路,数据并不是永久存储的,而是由参与双方自己本地保存;如果某个参与者使用的设备出现故障,损失基本上无法避免(虽然绝对的经济损失大概并不会太高)。

    其次,一个状态通道仅能支持两个用户之间的价值转移;当系统中同时存在大量用户间的状态通道时,实际上就构成一个通道网络:网络中的两个用户有交易需求的时候,并不是简单地在他们两点间创建新的通道,而是通过特定的路由(routing)算法来查找是否有可用路径,而后再决定如何创建他们之间的数据通道;但这本身也增加了实现的难度和相应的技术风险。

    上图是一个状态通道网络示意图。我们可以看到,如果 A 要向 C 进行转账,可以通过 A -> B -> C 的路径完成的(通过 A -> B -> E -> D -> C 的路径也可以完成,但这通常会需要更多的网络传输,所以并不是首选);而如果 D 要向 F 转账,则可以通过 D -> E -> B -> A -> F 或 D -> C -> B -> A -> F 的路径完成。所以理论上说,如果某个节点与状态通道网络中的任意一个节点之间有通道,那么就不需要再创建新的通道,而可以通过路由算法找到对应的路径完成价值转移。

    当然,状态通道本身就是用来处理小额支付场景的,所以这些局限是可以接受的;即使出现不可恢复的故障,实际经济损失也不会过大。但这种技术本身显然限制了扩展的通用性和数据容量。
    所以,可以进行永久存储、可以容纳更多交易、可以拥有独立的地址空间的所谓 “侧链(side-chain)” 方案就应运而生了。

    侧链可以认为是主链的分支,是可以独立记账、独立增长的子区块链,所以其中同样会有记账人(矿工)、有永久存储机制和共识算法(因为参与侧链记账的通常会是实现了侧链协议的多个节点)。

    侧链方案简介

    下面我将基于以太坊的 Plasma 协议的思路来简单介绍侧链的实现方案。

    对于侧链来讲,我们可以把它与主链的交互抽象为若干的 “状态迁移(State Transition)”:在侧链产生时,需要把若干 “状态” 转移到侧链的 “创世区块” 中,作为侧链的 “初始状态”;在侧链自己演进的过程中,需要定期把侧链的状态变动在主链进行记录,以便在发生争议或者有用户想 “退出” 侧链时可以恢复相应的状态。

    从应用角度看,侧链要解决的主要技术问题就是用户如何 “进入” 侧链以及如何 “退出” 侧链
    由于侧链本身就是个区块链,所以侧链也可以拥有自己的地址空间;当主链用户 “进入” 侧链时就可以通过简单的 “地址映射”,将主链用户的 “状态”—— 比如账户余额或者持有的数字资产(ERC20 或者 ERC721 Token)—— 全部或者部分转移到侧链地址上。

    复杂的,当然是 “退出” 机制。

    当一个用户 A 想从侧链 “退出” 的时候,他应该要提出一个申请,将自己在侧链中的 “状态” 变动映射回主链。但因为用户在侧链中的状态变动必然是因为与其他用户进行了交互(交易)才会发生的,所以这也将会影响其他用户的 “状态”。因而,这需要一个争议期,在这个期间内,如果侧链的其他用户对用户 A 的退出状态有异议,他们可以发起一个 “争议(dispute)“,提交他们自己所留存的 “状态” 数据,并提交 “技术证明”(或者请求侧链上的无利益冲突的第三方证明人提供 “技术证明”,比如某个矿工或全节点提供的数据状态证明);主链上的所谓 “仲裁合约” 就可以根据 “技术证明” 来自动化地判断谁的状态变动才是 “合法” 的,从而进行最终在主链上的状态更改。

    这里只是一个极简的描述,实际的技术方案比较复杂,限于文章篇幅,就不再展开了。

    有兴趣的读者可以自行阅读参考资料: Plasma 论文

    Plasma 协议定义了一套子链(侧链)的实现协议,其中包括 5 个核心组件:

    1. 为了从经济上激励侧链本身的永久性存储而设计的一个激励层合约
    2. 为了最大化降低交易和结算成本而设计的树状结构交易数据
    3. 与上述两个组件相配合的基于 MapReduce 计算框架的状态转移欺诈验证机制
    4. 依赖于主链的某种侧链内部的共识算法
    5. 为最小化用户退出成本而设计的一个用于状态转移的 bitmap-UTXO 技术证明机制

    显然,因为侧链本身是一个有永久性存储的子区块链,里边同样需要矿工来记账,所以与普通公链类似的经济激励机制、共识算法以及数据存储结构设计就都是必然要考虑的东西。在侧链中,通常为了达到更高的处理性能,会采用 PoS、DPoS 或者其他改进算法,而不会采用 PoW 算法。同时还会在侧链自己的经济模型中考虑对有欺诈行为的矿工的惩罚机制。

    此外,因为侧链本身也是一个区块链,所以在侧链之上再创建侧链,理论上也是可行的。这就相当于提供了一种多层的、几乎无限的扩展方案。

    看起来这是种 “完美” 的方案;但事实上并没有 “完美” 的方案,Plasma 中也还有很多需要解决的问题。(可以在参考 Plasma 论文 的第 11 章找到相关论述,这里也不再展开了。)这也是社区和相关项目在努力研究的方向。

    侧链上的智能合约?

    既然侧链可以提供很高的 “性能”,那么在侧链上运行智能合约自然就是一件极具吸引力的事了。

    这里必须要提一个项目 ——Loom。Loom 是一个参考了 Minimal Viable Plasma 构建的侧链开发框架,已经在 2018 年 6 月发布了其 SDK,使用它的 SDK 我们可以快速地创建自己的侧链作为我们自己的 Dapp 的后端支撑。尽管这个框架目前来讲功能还比较弱,但已经是一个可用的选择了。因为它也是开源的,所以对侧链的具体实现也有很高的参考价值 (编者注: Loom SDK 在 2019 年 2 月发布了 2.0 版,功能已经强大的多)。

    此外就是 Celer 项目,这是一个通用的区块链 Layer2 扩展框架,有非常宏大的愿景;在状态通道网络的实现方案上也有自己的创新。不过我个人比较关心的还是它对侧链的支持,这也还需要等待后续的工程进展。

    在 Plasma 中,为了简化 “状态转换” 的验证,侧链的数据模型使用了 UTXO 模型,而对账户余额变动的验证则很自然地采用了所谓的 “Merklized Proof”。但这样的设计也对侧链上的智能合约执行框架提出了挑战。

    我们知道,智能合约本质上是一个 “状态机”,所以,必须有永久性的存储来保存其状态数据,也就是类似于以太坊中的 “存储树(Storage Trie)” 这样的设计。所以如果在侧链上运行智能合约,也就同样需要某种用来保存合约状态的机制。

    以太坊当初选择账户模型而不是 UTXO 模型的主要原因就是实现状态机的难度问题;显然,基于账户模型的状态机更容易实现,范式也更清晰。所以如何在基于 UTXO 模型的侧链上实现智能合约运行环境就有了很多可以研究和讨论的东西。我们可以基于 UTXO 模型构建状态验证机制,问题是这个账户状态(余额)变动如果不是通过交易直接产生的,而是通过合约代码产生的,那么如何证明这个改动是 “合法” 的就成了侧链在与主链间进行状态转移时的验证机制的关键。

    我们当然希望有更多的项目能在这方面拿出可行的、可验证的方案,因为这将对侧链技术的继续发展产生深远的影响。

    小结

    本文浅尝辄止地介绍了区块链的 Layer2 扩展的相关概念,仅仅希望作为区块链开发者或者爱好者进入这一领域的简单向导,更深入的学习理解自然也需要读者投入更多的时间和精力。比如你可以从精读下边列出的参考资料开始。

    参考资料

    [1] Lightning Network: https://lightning.network/lightning-network-paper.pdf
    [2] Raiden Network: https://raiden.network/
    [3] Plasma: https://plasma.io/plasma.pdf
    [4] Minimal Viable Plasma: https://ethresear.ch/t/minimal-viable-plasma/426

    展开全文
  • Layer2-2 交换机转发原理

    千次阅读 2016-07-07 21:53:26
    session 1 Layer2专题课第三天 一、交换机端口MAC地址的作用: 1、区分L2转发和L3转发,当交换机收到主机发来的电信号后,将这串电信号(数据包)串行化成交换机能识别的二进制数(01010101这样的bit),然后查看...
    session 1 Layer2专题课第三天
    一、交换机端口MAC地址的作用:
    1、区分L2转发和L3转发,当交换机收到主机发来的电信号后,将这串电信号(数据包)串行化成交换机能识别的二进制数(01010101这样的bit),然后查看其中的目的MAC地址的bit位,如果发现目的MAC是未知的或者是记录与CAM表中动态学习到的,那么就是L2转发。如果目的MAC地址是交换机预留地址(一般为逻辑接口地址,比如vlan接口的MAC)那么交换机做L3层转发(交给路由器等,或者本身为三层交换机使用路由功能)。
    2、交换机之间的数据发送与接收,由交换机产生的镇L2头部封装的源和目的MAC就是两个交换机接口的MAC

    二、L2、L3转发依据和原理,所谓L2层就是指同一网段(广播域),L3层就是指不同网段(不同的广播域)
    L2层代表:L2层交换机
    L3层代表:PC、路由器、防火墙等
    1、L2层转发依据:CAM表,交换机在收到数据包后查看CAM表,目的MAC在表中则单播转发,否则就会除接收口外的其余端口进行flood广播泛红发送。
    2、L3层转发依据:FIB+ARP表,路由器或主机在接收到包后查看FIB表,有条目的单播发,没有条目直接丢弃。
     
    L2层转发原理(同网段内)


    上图为PC向路由器发送数据的转发,中间经过2台来层交换机的过程来展示L2层转发原理。

          第一步、PC封装一个数据包发送给R,在封装L2层头部时因为不知道目的MAC地址导致封装失败,第一个包丢包,不能发送。(PC先查阅了自己的FIB表发现目的ip和自己同网段有路径可以发包)
          第二步、封装失败后自动启动arp协议,发送arp-request查询包,L2层目的MAC是全FFFF的广播,根据PC自己的FIB表(路由表)中的默认路由发送出接口为网卡发送出去,此时交换机SW1接收到这个数据包,第一件事是查看数据帧中的源MAC地址(PC的1.2.3),将地址与接口4的映射学习进CAM表,然后才是查看帧的目的MAC地址,发现全FFFF广播么,首先自己先看一下发现没自己什么事,然后就是除4口以为的接口开始flood,传到了SW2,交换机2跟交换机1一样首先查看数据帧中的源MAC地址,将地址与接口10射学习进CAM表,然后除10以外的接口flood出去,这个arp广播包就被R路由器收到,路由器一看L2层头目的MAC是广播,那好广播地址是允许网络中任何设备进行接收和查看的,那么路由器就拆开L2层查看L3层内容发现L3层arp包头目的ip是自己(1.2)的,一看是个arp知道有人在解析自己的MAC地址,在回复之前路由器会把arp包中的源ip源MAC写入自己的arp表中以备以后发送数据用,然后路由器查看自己的FIB表,发现源ip和自己是同网段的,OK有路径可以回包,R就会回复一个单播的arp-reply响应,L2层头部目的MAC地址封装的是PC的MAC地址,发送出去。第一个接收到的是SW2,SW2第一件事还是学习L2层帧头中的源MAC地址(路由器的MAC)将这个地址与接口12对应的关系写进CAM表中,然后查看目的MAC地址,发现CAM表中有目的MAC与接口10的对应关系,那么从接口10转发出去给了SW1,SW1和SW2一样首先学习L2层帧头中的源MAC地址(路由器的MAC)将这个地址与接口8对应的关系写进CAM表中,然后查看目的MAC地址,发现CAM表中有目的MAC与接口4的对应关系,那么从接口4转发出去给了PC,PC在接收到R发来的arp包后把R的ip和MAC写入自己的arp表中。下次发送数据的时候就可以直接查看FIB表和arp表后封装成完整的数据包后单播的形式直接发给路由器了(因为arp表中已经知道了R的MAC地址,不会再出现封装失败的情况)。
     
    L3层转发原理(不同网段)


    这个三层拓扑由PC1发送数据包到PC2的过程来展示L3层数据转发原理。
    PC1的MAC是1.2.3,ip是192.168.1.1以后简称1.2(2.1就是192.168.2.1)
    R1的f0/0接口的MAC是4.5.6,ip是1.1。F0/1接口的MAC是7.8.9,ip是2.1
    PC2的MAC是a.b.c,ip是2.2
          首先,PC1将查看自己的FIB+arp,发现FIB表有路由(设置了网关默认路由)而arp表中没有对应的MAC地址,第一个包在L2层头部的时候封装失败。
          第二步、PC1启动arp协议来代替ip协议,将L2层头部封装为源MAC=1.2.3,目的MAC=FFFF,L3层arp头源ip=1.2,目的ip=2.2,从默认路由出口(网卡)发送出去,传向了R1的f0/0接口。
          第三步、路由器R从f0/0接收到了PC1发来的ARP-request广播请求(arp广播是定义要回复的,不丢弃),R先记录PC1的ip+MAC到自己的ARP表中,然后发现PC1请求的MAC地址和PC1并不在同一个网段,那么开启ARP代理功能(不能丢弃就转成单播吧,由自己代理转发好了),回应一个arp-reply给PC1,将L2层头封装为源MAC=4.5.6,目的MAC=1.2.3,L3层头封装为源ip=2.2,目的ip=1.2,回复给PC1。
          第四步、PC1收到这个arp回应后,会将192.168.2.2+4.5.6这个条目放到自己的ARP表中。这时PC1的arp表中就有了PC2的MAC地址(当然这个是路由器F0/0接口的MAC,PC1以为是PC2的MAC),再次发送数据L2层就不会出现没有目的MAC的情况而丢包。假设PC1又发送了一个包给PC2,发送时PC1根据FIB+ARP表内容封装好数据包:L2层头源MAC=1.2.3,目的MAC=4.5.6,L3层头源ip=1.2,目的ip=2.2,发出去被R的f0/0接收到。R的f0/0接收到后发现MAC目的地址拆掉L2层头再看L3层头信息发现目的ip是PC2的,这个包是要给PC2的,只是由自己做个arp代理而已,然后R查找自己的FIB+ARP表,和PC1一样FIB路由表中有条目OK,L3层头封装没问题,再看ARP表中也没有PC2的MAC地址,L2层头的目的MAC又没有办法封装,那也丢包,然后自己也启动arp协议发一个arp请求给PC2,按照套路R发给PC2的arp-request请求包:L2层源MAC=7.8.9(f0/1口的MAC,因为是连接了PC2网段的接口),目的MAC=F.F.F.F,L3层源ip=2.1(路由器f0/1的ip),目的ip=2.2(PC2的ip)。从出口f0/1发出去,由SW1接收。
          第五步、SW1收到R1的arp-request后先把这个包中的源MAC=7.8.9与自己1号口的对应关系写进CAM表中,再看目的MAC=FFFF,一看是广播,那从除1号口以外的接口发出去,被PC2接收到。
          第六步、PC2接到R发来的arp包后先把ip=192.168.2.1+MAC=7.8.9这样的arp信息写入自己的ARP表,然后查看arp包发现是192.168.2.1在请求自己的MAC地址,那么回复一个arp-reply给2.1,L2层封装源MAC=a.b.c 目的MAC=7.8.9,L3层头源ip=2.2(PC自己的ip),目的ip=2.1(R的f0/1口ip)。经过查看FIB+ARP发送出去,被SW1收到,SW1先记录MAC=a.b.c+2号端口写入CAM表中,在查看L2层目的MAC,发现CAM中有目的MAC=192.168.2.1对应了自己的1号口,OK那么由1号口单播发出去,给了R路由器。
          第七步、R路由器的f0/1口收到PC2的arp-reply后将ip=192.168.2.2+MAC=a.b.c条目写入自己的ARP表。这样R中就有了PC1和PC2对应的ARP表项。PC1再发送数据给PC2的时候,PC1查看FIB+ARP表封装包为 L2层源MAC=1.2.3,目的MAC=4.5.6,L3层源ip=1.2,目的ip=2.2,发送出去被R的f0/0口接收。R查看L2层头发现目的MAC是自己,有权限拆掉L2层头,继续往下看L3层头,发现是发往192.168.2.2的,那么查看FIB+ARP表,发现有对应的路由条目和192.168.2.2+a.b.c的arp条目,那么重新封装包 L2层头 源MAC=7.8.9,目的MAC=a.b.c,L3层头 源ip=1.2,目的ip=2.2,通过路由出口发送出去。
          第八步、SW1收到这个包后发现学习过了,然后查看CAM表发现目的MAC在2号口,从2号口发给PC2,PC收到后发现arp学习过了,看包内容是源ip=1.2,源MAC=7.8.9,目的ip和MAC都是自己的,于是处理完数据包后进行回包,PC2查看自己的FIB+ARP表发现有条目,直接封装 L2层 源MAC=a.b.c.,目的MAC=7.8.9,L3层源ip=2.2,目的ip=1.2从网关出口发出去,SW1接收到查看CAM表,后从1口发出去,R的f0/1口接收到发现目的ip=1.2,查看自己的FIB+ARP表发现有条目,封装包 L2层 源MAC=4.5.6,目的MAC=1.2.3,L3层源ip=2.2,目的ip=1.2。然后通过路由出口f0/0口以单播形式发给PC1,这样就是PC1就收到了PC2的数据包完成了一次L3层通信过程。

           这也就是为什么在L3层网络传输有个特性是数据包在传输过程中源MAC,目的MAC会变而源ip、目的ip不变的现象。


    展开全文
  • openlayer2屏蔽双击放大事件

    千次阅读 2018-08-01 00:55:46
    openlayer2屏蔽双击放大事件 环境为 open layer 3.1.3.1 代码如下 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content=&...
  • 区块链:Layer 1 和 Layer 2 的价值

    万次阅读 2019-05-02 14:30:48
    在这篇文章中,我们将会从价值捕获的角度来评估 Layer 1 和 Layer 2 协议,并试图提出一套理论框架,解释它们如何能够捕获价值。 Layer 1 的价值捕获 Layer 1 的代币的存在是为了让这条底层公链能够抵抗 51% ...
  • (普罗斯旺的收获,梵高)V神对当前以太坊Layer 2 扩展策略的评价是初步部署“基本”成功,剩下的是细化完善和部署的问题。也就是说,他认为Layer 2的成功基本上算是确定性的事情,而...
  • 文章目录一、背景二、什么是Layer 2三、Layer2的主要技术四、什么是Rollup什么是Optimistic Rollup(OR)?什么是ZK Rollup(ZKR)?五、参考 一、背景 2020 年 9 月,以太坊的 gas 价格突破历史新高,超过 477 Gwei...
  • Physics.IgnoreLayerCollision 忽略碰撞层static function IgnoreLayerCollision (layer1 : int, layer2 : int, ignore : bool = true) : voidDescription描述Makes the collision detection system ignore ...
  • 经历了两年时间,区块链行业从无到有出现了数十个、上百个不同设计的 Layer 2 项目,而大部分人对 Layer 2 的认识仅仅就是「扩容方案」那般可有可无。为什么公链就...
  • 1.先利用geoserver发布了若干幅矢量图,利用openlayer+geoserver形式,在openlayer前端得到矢量图层(先不加载在地图上) //geoserver发布图1 var ELCLTB = new OpenLayers.Layer.WMS("ELCLTBworkspace:ELCETB_...
  • OpenLayer(Layer2)

    千次阅读 2013-10-17 22:52:19
    Layer类:  1. Google类  首先,需要导入代码的Google Api类,其次是如下代码,观察设置不同的type, 获得的地图类型  代码如下: 创建一个简单的电子地图 var map; var wms_base; function ...
  • 网络支付是电子商务的一个重要环节,尤其在外贸电子商务中,选择那些安全可靠的支付平台更为重要。本篇就为大家整理出15个国外知名的第三方支付平台。 1、paypal全球支付平台霸主www.paypal.com ...
  • Yersinia(A Framework for layer 2 attack)

    千次阅读 2014-05-12 13:08:58
    DESCRIPTION ... yersinia is a framework for performing layer 2 attacks. The following protocols have been implemented in Yersinia current  version: Spanning Tree Protocol (STP), VLAN Tr
  • openlayer2.X通过WMTS服务加载ArcGIS服务

    千次阅读 2015-10-14 16:14:12
    首先要说的是openlayer2.X版本和ol3版本略有不同。 在使用之前首先要获取WMTS的描述文件,在切片后的server服务中通过如下方式获取 获取后可以通过如下代码添加WMTS服务,需要之一的是对于地理200
  • 以太坊的Layer 2赛道

    千次阅读 2020-06-13 15:20:13
    (艺术家母亲,梵高)随着近期以太坊转账费用居高不下,以太坊的Layer 1明显不够用了。当前,人们的眼光都聚焦在DeFi上,人们可能没有注意到,随着以太坊费用的提升,以太坊其他领域的dA...
  • the average network has been dominated by the Layer 2 switch. Now as network complexity increases and applications demand greater functions from the network, Layer 3 and layer 4 network switches are ...
  • 区块链扩容技术 : Layer2

    万次阅读 2019-05-08 09:58:01
    以太坊扩容技术汇总,目前扩容技术主要有:分片(Sharding)和 分层(链下扩容技术) 链下扩容技术主要有:状态通道( ... Part2其他扩容项目 在比特币闪电网络也属于扩容技术,在比特币分类下有单独介绍。 1.1....
  • 相比于Layer3,Layer2的解码就简单得多了。  1.变量初始化 申明的成员变量在构造方法内初始化,这些常量值是从解码规范的文档里直接COPY过来的。  2.帧的数据结构 以Layer2编码的文件按帧存放,解码时也是逐帧...
  • 什么是区块链Layer 2扩容

    万次阅读 2019-03-18 14:51:57
    2.状态通道的生命周期 打开通道:首先由两个或多个参与者就初始状态达成一致,区块链中的某些状态将发生变化(在支付通道中意味着放入一些代币进行托管)则状态通道开启。通道预言机被用来报告通道中的状态,并根据...
  • Layer2/Layer4是什么?有什么区别?

    千次阅读 2019-07-17 15:29:41
    2层网络交换机使用数据链路(MAC)层地址运行。链路层、硬件或MAC层地址标识单个设备。大多数硬件设备在制造过程中都会永久分配此编号。 第二层的主要功能是帮助局域网内的设备之间的通信达到彼此。第2层交换机...
  • 在Eth2.0仍需数年才能部署完成,并且其对以太坊底层可扩展性的改善还有待检验之时,Layer2扩容方案应运而生,通过将链上一部分工作量转移到链下完成,人们对于以太坊低手续费、高吞吐量以及良好用户体验的期望将有...
  • 以太坊扩容技术:Layer2

    万次阅读 2019-05-08 09:59:20
    Part2其他扩容项目 本文是第二部分。 1.1. 扩容技术相关项目 状态通道 State Channels相关项目有: Counterfactual Celer Network Liquidity Network Lighting Network Raiden Network Perun Magmo ...
  • Layer2-1 L2层概览

    千次阅读 2016-07-07 21:46:46
    Layer2层是以太网,以太网的拓扑结构分为:1、总线型,这个就是一根总线连接所有的设备,总线的两端线头密封起来,且所有的节点必须连接设备或者密封起来,不然单一节点裸露会被认为有电阻无穷大效果,导致整个总线...
  • openlayer2常用功能

    千次阅读 2016-02-23 13:48:27
     layer = new OpenLayers.Layer.Vector('Points', {  styleMap: styleMap  });   //胥实现:构造自定义属性 tAtt={}; tAtt['speed']=tspeed; tAtt['time']=ttime; tAtts = OpenLayers.Util....
  • Layer2-多层交换原理

    千次阅读 2016-07-08 11:37:12
    1、第2层交换:本质上是多端口的透明桥接,但比传统桥接增加了存储转发外的两种转发交换方式。2层交换机比桥增加了VLAN功能,同一交换机可以做多个独立的桥使用,在分割冲突域的同时,分割广播域。扩展性有限,域中...
  • 最后,Layer2 生态已初具雏形,imToken 对于 Layer2 生态的支持正在加速,我们希望下次你转账时,看到矿工费不必再皱眉。 - 活动预热 - 扫描海报下方二维码,进群参与活动,最高可得 100 Dai(≈ 100 美元),...
  • Hint: If you want learn more,pls refer to 3gpps 04-04Layer 1: The physical layer (layer 1) is the lowest layer in the OSI Reference Model and it supports all functions required for the

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,895
精华内容 16,358
关键字:

layer2