HCIP-BGP

本贴最后更新于 1391 天前,其中的信息可能已经事过境迁

1.概述

边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓扑图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。

自治系统 AS(Autonomous System)

AS 是指在一个实体管辖下的拥有相同选路策略的 IP 网络。BGP 网络中的每个 AS 都被分配一个唯一的 AS 号,用于区分不同的 AS。AS 号分为 2 字节 AS 号和 4 字节 AS 号,其中 2 字节 AS 号的范围为 1 至 65535,其中 1-64511 为公有 AS 号,64512-65534 为私有 AS 号。4 字节 AS 号的范围为 1 至 4294967295。支持 4 字节 AS 号的设备能够与支持 2 字节 AS 号的设备兼容。这个编号由 IANA 分配。

clipboard.png

clipboard.png

2.特点

BGP 属于外部或域间路由协议。BGP 的主要目标是为处于不同 AS 中的路由器之间进行路由信息通信提供保障。BGP 既不是纯粹的矢量距离协议,也不是纯粹的链路状态协议,通常被称为通路向量路由协议。这是因为 BGP 在发布到一个目的网络的可达性的同时,包含了在 IP 分组到达目的网络过程中所必须经过的 AS 的列表。通路向量信息时十分有用的,因为只要简单地查找一下 BGP 路由更新的 AS 编号就能有效地避免环路的出现。BGP 对网络拓扑结构没有限制,其特点包括:

(1)实现自治系统间通信,传播网络的可达信息。BGP 是一个外部网关协议,允许一个 AS 与另一个 AS 进行通信。BGP 允许一个 AS 向其他 AS 通告其内部的网络的可达性信息,或者是通过该 AS 可达的其他网络的路由信息。同时,AS 也能够从另一个 AS 中了解这些信息。与距离向量选路协议类似,BGP 为每个目的网络提供的是下一跳(next-hop)结点的信息。

(2)多个 BGP 路由器之间的协调。如果在一个自治系统内部有多个路由器分别使用 BGP 与其他自治系统中对等路由器进行通信,BGP 可以协调者一系列路由器,使这些路由器保持路由信息的一致性。

(3)BGP 支持基于策略的选路(policy-base routing)。一般的距离向量选路协议确切通告本地选路中的路由。而 BGP 则可以实现由本地管理员选择的策略。BGP 路由器可以为域内和域间的网络可达性配置不同的策略。

(4)可靠的传输。BGP 路由信息的传输采用了可靠地 TCP 协议。BGP 四层使用 tcp 179 号端口

(5)路径信息。在 BGP 通告目的网络的可达性信息时,处理指定目的网络的下一跳信息之外,通告中还包括了通路向量(path vector),即去往该目的网络时需要经过的 AS 的列表,使接受者能够了解去往目的网络的通路信息。

(6)增量更新。BGP 不需要再所有路由更新报文中传送完整的路由数据库信息,只需要在启动时交换一次完整信息。后续的路由更新报文只通告网络的变化信息。这种网络变化的信息称为增量(delta)。

(7)BGP 支持无类型编制(CIDR)及 VLSM 方式。通告的所有网络都以网络前缀加子网掩码的方式表示。

(8)路由聚集。BGP 允许发送方把路由信息聚集在一起,用一个条目来表示多个相关的目的网络,以节约网络带宽。

(9)BGP 还允许接收方对报文进行鉴别和认证,以验证发送方的身份。

(10)BGP 主要用于大型网络、大型集团、运营商、银行、国家电网、国家与国家之间的路由。

(11)BGP 可以跨路由器建立邻居(因为 BGP 发送的报文都是单播)

(12)一台路由器只能启用一个 BGP 进程

3.运行方式

如图 1 所示,BGP 按照运行方式分为 EBGP(External/Exterior BGP)和 IBGP(Internal/Interior BGP)。

clipboard.png

  • EBGP:运行于不同 AS 之间的 BGP 称为 EBGP。为了防止 AS 间产生环路,当 BGP 设备接收 EBGP 对等体发送的路由时,会将带有本地 AS 号的路由丢弃。
  • IBGP:运行于同一 AS 内部的 BGP 称为 IBGP。为了防止 AS 内产生环路,BGP 设备不将从 IBGP 对等体学到的路由通告给其他 IBGP 对等体,并与所有 IBGP 对等体建立全连接。为了解决 IBGP 对等体的连接数量太多的问题,BGP 设计了路由反射器和 BGP 联盟。

说明:

如果在 AS 内一台 BGP 设备收到 EBGP 邻居发送的路由后,需要通过另一台 BGP 设备将该路由传输给其他 AS,此时推荐使用 IBGP。

BGP 报文交互中的角色

BGP 报文交互中分为 Speaker 和 Peer 两种角色。

Speaker:发送 BGP 报文的设备称为 BGP 发言者(Speaker),它接收或产生新的报文信息,并发布(Advertise)给其它 BGP Speaker。

Peer:相互交换报文的 Speaker 之间互称对等体(Peer)。若干相关的对等体可以构成对等体组(Peer Group)。

BGP 的路由器号(Router ID)

BGP 的 Router ID 是一个用于标识 BGP 设备的 32 位值,通常是 IPv4 地址的形式,在 BGP 会话建立时发送的 Open 报文中携带。对等体之间建立 BGP 会话时,每个 BGP 设备都必须有唯一的 Router ID,否则对等体之间不能建立 BGP 连接。

BGP 的 Router ID 在 BGP 网络中必须是唯一的,可以采用手工配置,也可以让设备自动选取。缺省情况下,BGP 选择设备上的 Loopback 接口的 IPv4 地址作为 BGP 的 Router ID。如果设备上没有配置 Loopback 接口,系统会选择接口中最大的 IPv4 地址作为 BGP 的 Router ID。一旦选出 Router ID,除非发生接口地址删除等事件,否则即使配置了更大的地址,也保持原来的 Router ID。

4.BGP 报文

BGP 对等体的建立、更新和删除等交互过程主要有 5 种报文、6 种状态机和 5 个原则。

BGP 对等体间通过以下 5 种报文进行交互,其中 Keepalive 报文为周期性发送,其余报文为触发式发送:

Open 报文:用于建立 BGP 对等体连接。

Update 报文:用于在对等体之间交换路由信息。可以发布也可以撤销路由信息。

Notification 报文:用于中断 BGP 连接。

Keepalive 报文:用于保持 BGP 连接。

Route-refresh 报文:用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的 BGP 设备会发送和响应此报文。

5.BGP 状态机

BGP 对等体的交互过程中存在 6 种状态机:空闲(Idle)、连接(Connect)、活跃(Active)、Open 报文已发送(OpenSent)、Open 报文已确认(OpenConfirm)和连接已建立(Established)。在 BGP 对等体建立的过程中,通常可见的 3 个状态是:Idle、Active 和 Established。

图 2 BGP 对等体交互过程

clipboard.png

  1. Idle 状态是 BGP 初始状态。在 Idle 状态下,BGP 拒绝邻居发送的连接请求。只有在收到本设备的 Start 事件后,BGP 才开始尝试和其它 BGP 对等体进行 TCP 连接,并转至 Connect 状态。
  • Start 事件是由一个操作者配置一个 BGP 过程,或者重置一个已经存在的过程或者路由器软件重置 BGP 过程引起的。
  • 任何状态中收到 Notification 报文或 TCP 拆链通知等 Error 事件后,BGP 都会转至 Idle 状态。
  1. 在 Connect 状态下,BGP 启动连接重传定时器(Connect Retry),等待 TCP 完成连接。
  • 如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报文,并转至 OpenSent 状态。
  • 如果 TCP 连接失败,那么 BGP 转至 Active 状态。
  • 如果连接重传定时器超时,BGP 仍没有收到 BGP 对等体的响应,那么 BGP 继续尝试和其它 BGP 对等体进行 TCP 连接,停留在 Connect 状态。
  1. 在 Active 状态下,BGP 总是在试图建立 TCP 连接。
  • 如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报文,关闭连接重传定时器,并转至 OpenSent 状态。
  • 如果 TCP 连接失败,那么 BGP 停留在 Active 状态。
  • 如果连接重传定时器超时,BGP 仍没有收到 BGP 对等体的响应,那么 BGP 转至 Connect 状态。
  1. 在 OpenSent 状态下,BGP 等待对等体的 Open 报文,并对收到的 Open 报文中的 AS 号、版本号、认证码等进行检查。
  • 如果收到的 Open 报文正确,那么 BGP 发送 Keepalive 报文,并转至 OpenConfirm 状态。
  • 如果发现收到的 Open 报文有错误,那么 BGP 发送 Notification 报文给对等体,并转至 Idle 状态。
  1. 在 OpenConfirm 状态下,BGP 等待 Keepalive 或 Notification 报文。如果收到 Keepalive 报文,则转至 Established 状态,如果收到 Notification 报文,则转至 Idle 状态。
  2. 在 Established 状态下,BGP 可以和对等体交换 Update、Keepalive、Route-refresh 报文和 Notification 报文。
  • 如果收到正确的 Update 或 Keepalive 报文,那么 BGP 就认为对端处于正常运行状态,将保持 BGP 连接。
  • 如果收到错误的 Update 或 Keepalive 报文,那么 BGP 发送 Notification 报文通知对端,并转至 Idle 状态。
  • Route-refresh 报文不会改变 BGP 状态。
  • 如果收到 Notification 报文,那么 BGP 转至 Idle 状态。
  • 如果收到 TCP 拆链通知,那么 BGP 断开连接,转至 Idle 状态。

BGP 对等体之间的交互原则

BGP 设备将最优路由加入 BGP 路由表,形成 BGP 路由。BGP 设备与对等体建立邻居关系后,采取以下交互原则:

  • 从 IBGP 对等体获得的 BGP 路由,BGP 设备只发布给它的 EBGP 对等体。
  • 从 EBGP 对等体获得的 BGP 路由,BGP 设备发布给它所有 EBGP 和 IBGP 对等体。
  • 当存在多条到达同一目的地址的有效路由时,BGP 设备只将最优路由发布给对等体。
  • 路由更新时,BGP 设备只发送更新的 BGP 路由。
  • 所有对等体发送的路由,BGP 设备都会接收。

| 参数 | 缺省值 |
| BGP | 未使能 |

Keepalive 消息发送间隔 60 秒

6.BGP 与 IGP 交互

BGP 与 IGP 在设备中使用不同的路由表,为了实现不同 AS 间相互通讯,BGP 需要与 IGP 进行交互,即 BGP 路由表和 IGP 路由表相互引入。

BGP 引入 IGP 路由

BGP 协议本身不发现路由,因此需要将其他路由引入到 BGP 路由表,实现 AS 间的路由互通。当一个 AS 需要将路由发布给其他 AS 时,AS 边缘路由器会在 BGP 路由表中引入 IGP 的路由。为了更好的规划网络,BGP 在引入 IGP 的路由时,可以使用路由策略进行路由过滤和路由属性设置,也可以设置 MED 值指导 EBGP 对等体判断流量进入 AS 时选路。

BGP 引入路由时支持 Import 和 Network 两种方式:

  • Import 方式是按协议类型,将 RIP、OSPF、ISIS 等协议的路由引入到 BGP 路由表中。为了保证引入的 IGP 路由的有效性,Import 方式还可以引入静态路由和直连路由。
  • Network 方式是逐条将 IP 路由表中已经存在的路由引入到 BGP 路由表中,比 Import 方式更精确。

IGP 引入 BGP 路由

当一个 AS 需要引入其他 AS 的路由时,AS 边缘路由器会在 IGP 路由表中引入 BGP 的路由。为了避免大量 BGP 路由对 AS 内设备造成影响,当 IGP 引入 BGP 路由时,可以使用路由策略,进行路由过滤和路由属性设置。

IGP:路由发现和计算

BGP:路由的控制和优先

7.BGP 路由的生成方式

1.network //只能 network ip 路由表里的路由,路由和掩码需要一致

clipboard.png

2.import

[R5-bgp]import-route ospf 1

[R3-bgp]import-route ospf 1

3.路由汇总

路由黑洞:能够学习到路由,但是无法访问。

8.BGP 示例 1

clipboard.png

[R1]interface g0/0/0

[R1-GigabitEthernet0/0/0]ip add 10.1.12.1 24

[R1]interface loopback 0

[R1-LoopBack0]ip add 1.1.1.1 24

[R1-LoopBack0]interface loopback 1

[R1-LoopBack1]ip add 1.1.2.1 24

[R1]router id 1.1.1.1

[R1]ospf 1

[R1-ospf-1]area 5

[R1-ospf-1-area-0.0.0.0]network 10.1.12.0 0.0.0.255

[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0

[R1-ospf-1-area-0.0.0.0]network 1.1.2.1 0.0.0.0

[R1]bgp 100 //R1 AS 号

[R1-bgp]peer 2.2.2.2 as-number 100 //Loopback 接口属于逻辑接口,与物理接口相比,不受链路影响,减少 BGP 振荡。 邻居的 AS 号为 100

[R1-bgp]peer 2.2.2.2 connect-interface loopback 0 //指定更新源 loopback0 为 R1 环回接口地址 1.1.1.1

[R2]interface g0/0/0

[R2-GigabitEthernet0/0/0]ip add 10.1.12.2 24

[R2-GigabitEthernet0/0/0]interface loopback 0

[R2-LoopBack0]ip add 2.2.2.2 24

[R2]interface g0/0/1

[R2-GigabitEthernet0/0/1]ip add 10.1.23.2 24

[R2-GigabitEthernet0/0/1]interface g0/0/2

[R2-GigabitEthernet0/0/2]ip add 10.1.25.2 24

[R2]router id 2.2.2.2

[R2]ospf 1

[R2-ospf-1]area 0

[R2-ospf-1-area-0.0.0.0]network 10.1.23.0 0.0.0.255

[R2-ospf-1-area-0.0.0.0]network 10.1.25.0 0.0.0.255

[R2-ospf-1-area-0.0.0.0]area 5

[R2-ospf-1-area-0.0.0.5]network 10.1.12.0 0.0.0.255

[R2-ospf-1-area-0.0.0.5]network 2.2.2.2 0.0.0.0

[R2-ospf-1-area-0.0.0.5]q

[R2-ospf-1]silent-interface g0/0/1 //将 g0/0/1 和 g0/0/2 配置为静默接口

[R2-ospf-1]silent-interface g0/0/2

[R2]bgp 100

[R2-bgp]peer 1.1.1.1 as-number 100

[R2-bgp]peer 1.1.1.1 connect-interface loopback 0

[R2-bgp]peer 10.1.23.3 as-number 200

[R2-bgp]peer 10.1.25.5 as-number 200

clipboard.png

//reset bgp all 重置 BGP 邻居关系 生产环境不能使用

clipboard.png

[R3]interface g0/0/0

[R3-GigabitEthernet0/0/0]ip add 10.1.23.3 24

[R3-GigabitEthernet0/0/0]interface g0/0/1

[R3-GigabitEthernet0/0/1]ip add 10.1.34.3 24

[R3-GigabitEthernet0/0/1]interface loopback 0

[R3-LoopBack0]ip add 3.3.3.3 24

[R3-LoopBack0]q

[R3]router id 3.3.3.3

[R3]ospf 1

[R3-ospf-1]area 0

[R3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0

[R3-ospf-1-area-0.0.0.0]network 10.1.23.0 0.0.0.255

[R3-ospf-1-area-0.0.0.0]network 10.1.34.0 0.0.0.255

[R3-ospf-1-area-0.0.0.0]q

[R3-ospf-1]silent-interface g0/0/0

[R3]bgp 200

[R3-bgp]peer 5.5.5.5 as-number 200

[R3-bgp]peer 5.5.5.5 connect-interface LoopBack 0

[R3-bgp]peer 4.4.4.4 as-number 200

[R3-bgp]peer 4.4.4.4 connect-interface LoopBack 0

[R3-bgp]peer 10.1.23.2 as-number 100

[R4]interface g0/0/0

[R4-GigabitEthernet0/0/0]ip add 10.1.34.4 24

[R4-GigabitEthernet0/0/0]interface g0/0/1

[R4-GigabitEthernet0/0/1]ip add 10.1.45.4 24

[R4-GigabitEthernet0/0/1]interface loopback 0

[R4-LoopBack0]ip add 4.4.4.4 24

[R4-LoopBack0]interface loopback 1

[R4-LoopBack1]ip add 4.4.5.4 24

[R4-LoopBack1]q

[R4]router id 4.4.4.4

[R4]ospf 1

[R4-ospf-1]area 0

[R4-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0

[R4-ospf-1-area-0.0.0.0]network 4.4.5.4 0.0.0.0

[R4-ospf-1-area-0.0.0.0]network 10.1.34.0 0.0.0.255

[R4-ospf-1-area-0.0.0.0]network 10.1.45.0 0.0.0.255

[R4]bgp 200

[R4-bgp]peer 3.3.3.3 as-number 200

[R4-bgp]peer 3.3.3.3 connect-interface LoopBack 0

[R4-bgp]peer 5.5.5.5 as-number 200

[R4-bgp]peer 5.5.5.5 connect-interface LoopBack 1

[R5]interface g0/0/0

[R5-GigabitEthernet0/0/0]ip add 10.1.25.5 24

[R5-GigabitEthernet0/0/0]interface g0/0/1

[R5-GigabitEthernet0/0/1]ip add 10.1.45.5 24

[R5-GigabitEthernet0/0/1]interface loopback 0

[R5-LoopBack0]ip add 5.5.5.5 24

[R5-LoopBack0]q

[R5]router id 5.5.5.5

[R5]ospf 1

[R5-ospf-1]area 0

[R5-ospf-1-area-0.0.0.0]network 5.5.5.5 0.0.0.0

[R5-ospf-1-area-0.0.0.0]network 10.1.25.0 0.0.0.255

[R5-ospf-1-area-0.0.0.0]network 10.1.45.0 0.0.0.255

[R5-ospf-1-area-0.0.0.0]q

[R5-ospf-1]silent-interface g0/0/0

[R5]bgp 200

[R5-bgp]peer 10.1.25.2 as-number 100

[R5-bgp]peer 3.3.3.3 as-number 200

[R5-bgp]peer 3.3.3.3 connect-interface LoopBack 0

[R5-bgp]peer 4.4.5.4 as-number 200

[R5-bgp]peer 4.4.5.4 connect-interface LoopBack 0

clipboard.png

相关帖子

1 回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 510 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1705 回帖
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 2 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 431 关注
  • abitmean

    有点意思就行了

    30 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    86 引用 • 122 回帖 • 625 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 4 关注
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    93 引用 • 113 回帖
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    83 引用 • 37 回帖
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 26 关注
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    70 引用 • 375 回帖 • 1 关注
  • danl
    132 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 29 关注
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 653 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 260 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 374 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • 996
    13 引用 • 200 回帖 • 6 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖 • 1 关注
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    6 引用 • 38 回帖
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    222 引用 • 473 回帖
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    133 引用 • 189 回帖
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 391 关注