网络安全之BGP详解
BGP;边界网关协议
使用范围;BGP范围,在AS之间使用的协议。
协议的特点(算法):路径矢量型,没有算法。
协议是否传递网络掩码:传递网络掩码,支持VLSM,CIDR
协议消息数据包封装:基于TCP封装(可靠的),端口号:179
AS:自治系统,自治系统范围:1-65535,分为公有AS(1-64512)和私有AS(64513-65535)
一、BGP协议特点:
1、BGP是一种路径矢量型路由协议。
2、BGP协议版本,当前版本V4(或叫V4+) V1,V2,V3(有类别的路由协议,不传递网络掩码) V4(无类别,支持传递网络掩码,仅仅支持IPV4单播路由传递) V4+(支持IPV4单播路由、IPV6单播IPV4组播,IPV6组播【一般的路由协议没办法运行组播,运行组播的协议叫做PIM(叫做协议无关组播)是一个完全独立的协议,和OSPF等常见的协议是完全不一样的,因为单播和组播干的就不是同一个事,单播我们更关注数据要去哪(关注目标地址),而组播与单播相反,它更多关注的是源地址】,VPNV4,VPNV6等,除了IPV4单播路由之外的其他的都称为MP-BGP——多协议BGP:注意的是,默认仅仅支持传递IPV4单播路由,传递其他方式路由时需要开启(激活) [BGP版本是从版本3和版本4开始直接使用的,跳过了V1,V2,它可以配置的版本只有V3和V4,因为BGP的很多东西都是直接继承的EGP,而EGP当初有EGP1和EGP2,在BGP设计出来的时候直接从版本3开始的。现在很多厂商的设备允许BGP之后,默认允许的版本是V4,但是它具备V4+的功能,V4+就是V4的增强版,除了支持默认的V4的IPV4单播路由外,其他的相关路由都支持,只是默认没有开启,要做的话需要一条命令给激活]
3、更新地址:单播更新(因为BGP是基于TCP的,TCP第一步就是三次握手,三次握手不能与组播,广播三次握手,所以只能是单播更新,不能是组播更新和广播更新等)
4、更新方式:触发更新,增量更新。触发更新(网络稳定时,BGP是不向外发送任何路由信息且是永久不发,只要不变就不发与OSPF不同,它没有三十分钟的链路状态刷新,网络改变时才向外发送的路由信息)。增量更新(网络路由信息改变时,只发送路由信息改变了的路由信息,其他没有改变的不发送,因为BGP中的属性太多了,若是都重新完完全全的发一遍则费时费资源等)。
5、BGP协议中存在大量的属性(是一种基于规则的路由协议)
6、BGP协议支持路由认证(几乎所有的路由协议都支持路由认证,只是BGP的路由认证比较个性,一般的路由认证是在协议本身上实施,BGP的路由认证是做在TCP的可选项里,在TCP的可选项里设置了账号密码,所以BGP的路由认证是基于TCP的)
7、支持BGP路由聚合(汇总)
8、BGP是一种非常消耗资源的路由协议(因为BGP的路由量很大,而且每一条BGP中的属性也很多。如何证明:比如一个路由器上只能运行一个BGP,而一个路由器运行OSPF可以运行多个OSPF,一个路由器上最多起31个OPSF。)
二、适合使用BGP的网络环境
1、传输AS(就是运营商级别的网络,也就是用户通过运行商的这个AS去访问连接这个AS的服务器)
2、多宿主(多出口的意思,比如说一个学校里很多学生老师的用户,在上网时要接入到运行商,也就是进入到另一个不同的AS比如接入的电信的AS,但是不可能只接入电信这一家AS,还要接入其他的AS,比如移动,联通等不同的AS,这种就叫做多宿主。一个网络连接着多个出口,虽然一个学校连接着多出口,多个AS宿主,但是学校是可以不做AS,BGP的,这种对网络的利用率很低,很多情况下,学校对于网络的区域出口划分不合理,对于重要的教学楼什么的地方连接的是稳定性高带宽高的出口,等这个出口挂掉之后再走另一个出口,而对于宿舍一些地方连接的是带宽低的出口,等这个出口挂掉之后再走另一个出口。简而言之就是学校将自己的网络划成了好几部分,某些网络比较重要的时候,就走稳定的出口,稳定的出口挂了,再走别的,对于学校宿舍等对学校无所谓的地方就走一个带宽低的出口,这个出口挂了再去走其他出口,这种就很不合理。合理的是我访问的是谁就走谁的出口,比如访问的服务器是放在电信的机房,而走的是移动或联通的出口去访问,这样的速度势必会很慢。正确的是我访问的服务器机房在电信,就走电信出去,在联通就走联通出去等……为什么不做BGP,是因为BGP对设备性能的要求高之外,对工程师还有足够的一个水平能够支持和维护这样大的一个路由条目数量)
3、需要对进入和离开的流量进行强大的策略控制时(使用BGP的最主要原因,不用IGP是因为IGP的属性很少,来来回回就修改一个metric值。自动化程度越高的协议,它的路由控制越难)
BGP除了速度慢一点,没有什么其他的缺点。
不适合使用BGP的条件:当自己对BGP知之甚少的时候不要使用BGP(说白点就是不懂BGP就不要使用BGP)除了这个之外能使用BGP就使用BGP最好。
三、BGP邻居关系
IBGP:内部BGP邻居
EBGP:外部BGP邻居
如何区分BGP关系,建立邻居的双方都属于同一个AS的就是IBGP,学到的路由叫做IBGP路由。如果建立邻居的双方不属于同一个AS建立的邻居关系就是EBGP,学到的路由叫做EBGP路由。
比如下图的拓扑图中,R1与R2建立的邻居关系就是EBGP,R2与R3建立的邻居关系就是IBGP。R1与R3建立的邻居关系也是EBGP。在IBGP协议里邻居关系建立或路由传递时,只能在直连之间传递(大多数用的组播更新,组播更新地址用的是224.0.0.X,而224.0.0.X的地址用的TTL值默认为1,所以不能跨网段传递路由,而BGP为什么行可以跨网段传递,是因为它是基于TCP的,TCP是要进行三次握手的,即只要两个IP之间能相互通信,就能进行三次握手,能够三次握手BGP就能传路由,跟中间传递的路由器没有关系,对于中间的路由器而言,它们只知道传递的是点对点的TCP数据包,而实质上这里面承载着BGP的路由信息)。

IBGP的防环机制:IBGP水平分割机制(IBGP只传一条规则,通过一个IBGP邻居学习的路由不能传递给其他的IBGP邻居);next-hop、起源者属性,簇ID列表。

未完待续……由于BGP的内容很多,每天尽量更新够多的BGP详细内容解释。
相关文章:
网络安全之BGP详解
BGP;边界网关协议 使用范围;BGP范围,在AS之间使用的协议。 协议的特点(算法):路径矢量型,没有算法。 协议是否传递网络掩码:传递网络掩码,支持VLSM,CIDR …...
【MySQL精通之路】SQL优化(1)-查询优化(8)-嵌套联接优化
主博客: 【MySQL精通之路】SQL优化(1)-查询优化-CSDN博客 上一篇: 【MySQL精通之路】SQL优化(1)-查询优化(7)-嵌套循环联接-CSDN博客 下一篇: 【MySQL精通之路】SQL优化(1)-查询优化(9)-外部联接优化-CSDN博客 与SQL标准相比,…...
30V降8V、12V、24V3.5A车充降压芯片IC H4112 5V-30V
H4112确实是一款功能强大的异步降压型DC-DC转换器,它具备多种出色的特性和优势,使得它在电源管理领域有着广泛的应用。以下是对H4112主要特性和功能的详细解释: 内置30V耐压MOS: H4112内部集成了30V耐压的MOS管,这有…...
保护共享资源的方法(互斥锁)
我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》࿱…...
树的非递归遍历(层序)
层序是采用队列的方式来遍历的 就比如说上面这颗树 他层序的就是:1 24 356 void LevelOrder(BTNode* root) {Que q;QueueInit(&q);if (root){QueuePush(&q, root);}while (!QueueEmpty(&q)){BTNode* front QueueFront(&q);QueuePop(&q);print…...
解决SpringBoot使用@Transactional进行RestTemplate远程调用导致查询数据记录为null的bug
开启事务过程中,如果远程调用查询当前已经开启但没有提交的事务,就会查不到数据。 示例代码 import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; import o…...
pl/sql基础语法操作
oracle pl/sql语言(procedural language/sql)是结合了结构化查询与oracle自身过程控制为一体的强大语言。 语法执行块 语法结构: [ declare 可选 声明变量部分--declaration statements (1);]begin --执行部分--executable statements (2)…...
Vue 父组件向子组件传递数据
1、在子组件中,你需要声明你期望从父组件接收哪些props。这可以通过props选项完成,可以是一个数组或对象形式: export default {props: [message],props:{message:String }props: {message: String, // 类型检查count: {type: Nu…...
二十五、openlayers官网示例CustomOverviewMap解析——实现鹰眼地图、预览窗口、小窗窗口地图、旋转控件
官网demo地址: Custom Overview Map 这个示例展示了如何在地图上增加一个小窗窗口的地图并跟随着地图的旋转而旋转视角。 首先加载了一个地图。其中 DragRotateAndZoom是一个交互事件,它可以实现按住shift键鼠标拖拽旋转地图。 const map new Map({int…...
K8S Secret管理之SealedSecrets
1 关于K8S Secret 我们通常将应用程序使用的密码、API密钥保存在K8S Secret中,然后应用去引用。对于这些敏感信息,安全性是至关重要的,而传统的存储方式可能会导致密钥在存储、传输或使用过程中受到威胁,例如在git中明文存储密码…...
Gone框架介绍25 - Redis模块参考文档
文章目录 Redis 参考文档配置项import 和 bury使用分布是缓存 redis.Cache接口定义使用示例 使用分布式锁 redis.Locker接口定义使用示例 操作Key,使用 redis.Key接口定义 使用 Provider 注入 redis 接口使用示例 直接使用redis连接池接口定义使用示例 Redis 参考文…...
SpringBoot前置知识02-spring注解发展史
springboot前置知识01-spring注解发展史 spring1.x spring配置只能通过xml配置文件的方式注入bean,需要根据业务分配配置文件,通过import标签关联。 spring1.2版本出现Transactional注解 <?xml version"1.0" encoding"UTF-8"?> <be…...
C++ TCP发送Socket数据
DEVC需要加入ws2_32库 #include <iostream> #include <winsock2.h>#pragma comment(lib, "ws2_32.lib")void sendData(const char* ip, int port, const char* data) {WSADATA wsaData;SOCKET sockfd;struct sockaddr_in server_addr;// 初始化Winsock…...
鸿蒙HarmonyOS开发中的易混点归纳-持续补充中
相关文章目录 鸿蒙HarmonyOS开发术语全解:小白也能看懂! 文章目录 相关文章目录前言一、build()函数和Builder装饰器?二、自定义组件和系统组件(内置组件)三、组件和页面四、自定义弹窗和其他弹窗总结 前言 一、build…...
ue引擎游戏开发笔记(45)——添加游戏音效
1.需求分析: 截至目前,我们仍然在一个无声的世界游玩游戏,所以有必要为游戏增添一些声音,例如开火声,子弹撞击声等等。 2.操作实现: 1.这是一个较为简单的功能,类似特效的实现方法,…...
202472读书笔记|《首先你要快乐,其次都是其次》——快乐至上,允许一切发生
202472读书笔记|《首先你要快乐,其次都是其次》——快乐至上,允许一切发生 《首先你要快乐,其次都是其次》作者林小仙,挺轻松的小漫画,清新的文字。 生而为人,我很抱歉,大可不必。 生活已经很难…...
8.STL中Vector容器的常见操作(附习题)
目录 1.vector的介绍 2 vector的使用 2.1 vector的定义 2.2 vector iterator 的使用 2.3 vector 空间增长问题 2.3 vector 增删查改 2.4 vector 迭代器失效问题 2.5 vector 在OJ中的使用 1.vector的介绍 vector是表示可变大小数组的序列容器。 就像数组一样࿰…...
5.23小结
1.java项目创新 目前想添加一个自动回复的功能和设置验证方式有(允许任何人添加,禁止添加,设置回答问题添加,普通验证添加) 目前只完成画好前端界面,前端发送请求,还有表的修改 因为涉及表字…...
文心一言 VS 讯飞星火 VS chatgpt (265)-- 算法导论20.1 4题
四、假设不使用一棵叠加的度为 u \sqrt{u} u 的树,而是使用一棵叠加的度为 u 1 k u^{\frac{1}{k}} uk1的树,这里 k 是大于 1 的常数,则这样的一棵树的高度是多少?又每个操作将需要多长时间?如果要写代码…...
Flutter 中的 EditableText 小部件:全面指南
Flutter 中的 EditableText 小部件:全面指南 在Flutter中,EditableText是一个低级别的文本编辑组件,它提供了构建自定义文本编辑界面的能力。与TextField和TextFormField不同,EditableText提供了更多的灵活性,允许开发…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
