自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

分享各种网络协议知识

网络协议从入门到深入

  • 博客(65)
  • 收藏
  • 关注

原创 mLDP基本原理和应用

当用户使能了mLDP P2MP能力后,节点之间会互相发送一系列信令消息建立mLDP会话,只有会话两端的初始化消息中都带有P2MP能力的TLV,会话才能协商成功。叶子节点动态加入:当一条P2MP LSP建立之后,新增叶子节点的处理为:新增叶子节点和上游协商P2MP会话,会话建立后,新增叶子节点给上游发送标签,上游则直接添加该叶子节点分支,同时更新转发表项。LDP会话协商成功后,叶子节点和中间节点往上游发送标签,直到根节点收到,即完成了根节点到叶子节点的mLDP P2MP LSP建立。

2023-08-05 10:37:56 489

原创 LDP协议介绍

LDP协议学习

2022-12-09 14:27:03 5275 1

原创 MPLS协议介绍

mpls协议基础知识总结

2022-12-08 19:47:03 3809

原创 DHCP原理详解

DHCP协议学习

2022-10-20 11:51:35 11245

原创 ISIS协议介绍

ISIS协议介绍

2022-10-12 16:17:46 2367

原创 BGP协议介绍

一. BGP协议概述BGP用于在不同的自治系统(AS)之间交换路由信息。当两个AS需要交换路由信息时,每个AS都必须指定一个运行BGP的节点,来代表AS与其他的AS交换路由信息。通常是路由器来执行BGP。两个AS中利用BGP交换信息的路由器也被称为边界网关(Border Gateway)或边界路由器(Border Router)。(http://127.0.0.1/bgp_basic.jpg)二. BGP的基本概念AS(Autonomous System)自治系统:自治系统就是处于一个管理机构控

2022-04-21 11:48:36 13475

原创 Cloud_15xvlan实践

192.168.200.128:##ns_1_1ip netns add ns_1_1ip link add veth1_1 type veth peer name veth1_1-brip link set dev veth1_1 netns ns_1_1ip netns exec ns_1_1 ip addr add 10.0.0.11/24 dev veth1_1ip netns...

2019-07-31 17:25:28 357

转载 Cloud_14namespace实践

创建nsip netns add xx 创建一个 namespace和 network namespace 相关的操作的子命令是 ip netns[root@ namespace]# ip netns add ns1[root@ namespace]# ip netns lsns1在新namespace xx中执行yy命令ip netns exec xx yy查看ip:[roo...

2019-07-22 12:58:29 261

转载 Cloud_13namespace总结

Linux namespace实现了 6 项资源隔离,基本上涵盖了一个小型操作系统的运行要素,包括主机名、用户权限、文件系统、网络、进程号、进程间通信。namespace|系统调用参数|隔离内容|内核版本-|-UTS|CLONE_NEWUTS|主机名和域名|2.6.19IPC|CLONE_NEWIPC|信号量、消息队列和共享内存|2.6.19PID|CLONE_NEWPID|进程编号|...

2019-07-22 12:55:55 311 1

转载 Cloud_12虚拟网络设备tap tun veth-pair实践

tap/tun创建tun设备ip tuntap add dev tun0 mod tun配置ip地址ifconfig tun0 192.168.0.254 up为接口添加路由route add -host 192.168.0.1 dev tun0删除tun设备ip tuntap del dev tun0 mod tun通过用户应用程序使用tun(先删除通过ip tuntap命令添...

2019-07-22 12:53:52 724

转载 Cloud_11虚拟网络设备tap tun veth-pair总结

随着虚拟化技术的出现,网络也随之被虚拟化,相较于单一的物理网络,虚拟网络变得非常复杂,在一个主机系统里面,需要实现诸如交换、路由、隧道、隔离、聚合等多种网络功能。而实现这些功能的基本元素就是虚拟的网络设备,比如 tap、tun 和 veth-pair。tap/tuntap/tun 提供了一台主机内用户空间的数据传输机制。它虚拟了一套网络接口,这套接口和物理的接口无任何区别,可以配置 IP,可...

2019-07-22 12:51:48 974

转载 Cloud_10虚拟机网络模型

桥接Bridged虚拟机桥接网络模型就是使用虚拟交换机(Linux Bridge),将虚拟机和物理机连接起来,它们处于同一个网段,IP 地址是一样的。如下图所示:cloud_netmode_bridge.png在这种网络模型下,虚拟机和物理机都处在一个二层网络里面,所以有:虚拟机之间彼此互通虚拟机与主机彼此可以互通只要物理机可以上网,那么虚拟机也可以。桥接网络的好处是简单方便,...

2019-07-22 12:48:43 241

转载 Cloud_09OVS 总体架构、源码结构及数据流程全面解析

在前文「从 Bridge 到 OVS」中,我们已经对 OVS 进行了一番探索。本文决定从 OVS 的整体架构到各个组件都进行一个详细的介绍。OVS 架构OVS 是产品级的虚拟交换机,大量应用在生产环境中,支撑整个数据中心虚拟网络的运转。OVS 基于 SDN 的思想,将整个核心架构分为控制面和数据面,数据面负责数据的交换工作,控制面实现交换策略,指导数据面工作。cloud_OVS整体架构.jp...

2019-07-22 12:46:40 267

转载 Cloud_08从 Bridge 到 OVS,探索虚拟交换机

和物理网络一样,虚拟网络要通信,必须借助一些交换设备来转发数据。因此,对于网络虚拟化来说,交换设备的虚拟化是很关键的一环。上文「网络虚拟化」已经大致介绍了 Linux 内核为了满足网络虚拟化的要求,实现了一套虚拟交换设备——Bridge。本文重点介绍下 Bridge 的加强版——Open vSwitch(OVS),并从 Bridge 过渡到 OVS 的缘由讲起,让大家有个全面的认识。借助 Li...

2019-07-22 12:44:58 294

转载 Cloud_07一文搞懂网络虚拟化

网络虚拟化相对计算、存储虚拟化来说是比较抽象的,以我们在学校书本上学的那点网络知识来理解网络虚拟化可能是不够的。在我们的印象中,网络就是由各种网络设备(如交换机、路由器)相连组成的一个网状结构,世界上的任何两个人都可以通过网络建立起连接。带着这样一种思路去理解网络虚拟化可能会感觉云里雾里——这样一个庞大的网络如何实现虚拟化?其实,网络虚拟化更多关注的是数据中心网络、主机网络这样比较「细粒度」...

2019-07-22 12:42:56 283

转载 Cloud_06KVM初探

KVM 是业界最为流行的 Hypervisor,全称是 Kernel-based Virtual Machine。它是作为 Linux kernel 中的一个内核模块而存在,模块名为 kvm.ko,也可以看作是一个进程,被内核调度并管理,从 Linux 2.6.20 版本开始被完全正式加入到内核的主干开发和正式发布代码中。 KVM 主要用于管理 CPU 和内存的虚拟化,IO 设备的虚拟化则是由 Q...

2019-07-22 12:40:30 316

转载 Cloud_05一文读懂 Qemu 模拟器

Qemu 架构Qemu 是纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和 Qemu 模拟出来的硬件打交道,Qemu 将这些指令转译给真正的硬件。正因为 Qemu 是纯软件实现的,所有的指令都要经 Qemu 过一手,性能非常低,所以,在生产环境中,大多数的做法都是配合 KVM 来完成虚拟化工作...

2019-07-22 12:38:30 235

转载 Cloud_04虚拟化技术总览

说起虚拟化,相信大家应该都不陌生,像虚拟内存、Java 虚拟机、Android 模拟器这些都是虚拟化技术的体现,为什么这样说,这个就要回到虚拟化技术的本质上——**虚拟化就是由位于下层的软件模块,根据上层的软件模块的期待,抽象(虚拟)出一个虚拟的软件或硬件模块,使上一层软件直接运行在这个与自己期待完全一致的虚拟环境上。**从这个意义上来看,虚拟化既可以是软件层的抽象,又可以是硬件层的抽象。所以...

2019-07-22 12:36:23 178

转载 Cloud_03技能图谱

云计算领域是一个很庞大的技术领域,技术分支很多,从底层的虚拟化技术,到各种框架,再到上层各种应用服务,都涉及非常多的技能点,按照10000小时天才理论,即使能成为某一板块的技术专家,个人觉得也很难吃透所有的东西。下面是 infoQ 整理的一份技能图谱,我重新画了图,并增删了一部分。cloud_必备技能.jpg可以看到,里面涉及的知识点太多了,这个公众号我会重点关注基础设施的计算和网络部分,架...

2019-07-22 12:32:26 131

转载 Cloud_02初识云计算

云计算的发展历史我们主要从用户对云计算的认知角度来谈云计算的发展史,至于它从提出到发扬光大的那些大事件,网上搜下就知道了,而且我觉得去谈那些发展事件意义也不大,倒不如说说我们对云计算的一个认知变化过程,我觉得任何事物存在必有其可循的迹象,可能在很久以前这东西就存在了,只不过在当时的情境下不叫这个名字而已,随着技术的发展和环境的变化,自然就演变成今天的样子。就云计算这个话题,我就拿我们个人来举个...

2019-07-22 12:30:42 124

转载 Cloud_01云计算术语扫盲

资源在云计算中,资源和服务本质上是一样的,服务可能更泛一些,资源一般特指 CPU(计算)、Mem(存储)和 IO (网络)三大资源,云计算的做法就是将闲置的这些资源充分利用起来,租给用户使用。我觉得这也有点共享经济的意思,大家把自己身边闲置的资源拿出来,分享给别人使用,我为人人,人人为我。只不过云计算这种资源比较奢侈,一般人还提供不起,只有那些大企业,在满足自己业务需求之余,还空闲着很多资源,所...

2019-07-22 12:27:21 252

原创 Linux 35 网络编程多播socket选项实践

SOCKET选项用法:int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen);int setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen);实例IP多播模型(VRRP)...

2019-07-11 12:33:35 203

原创 Linux 34 网络编程socket选项实践

SOCKET选项获取或者设置与某个套接字关联的选项。选项可能存在于多层协议中,他们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议号TCP。用法:int getsockopt(int so...

2019-07-10 18:02:33 431

转载 IP协议介绍

IP头 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...

2019-07-10 14:57:43 425

原创 MSDP协议介绍

项目背景MSDP是Multicast Source Discovery Protocol(组播源发现协议)的简称,是为了解决多个PIM-SM(Protocol Independent Multicast Sparse Mode,协议无关组播-稀疏模式)域之间的互连而开发的一种域间组播解决方案,用来发现其它PIM-SM域内的组播源信息。在基本的PIM-SM模式下,组播源只向本PIM-SM域内的R...

2019-07-03 12:12:33 5634 2

原创 ND Snooping协议介绍

ND Snooping项目背景在IPv6网络中,网络节点使用ND协议进行路由器发现与自动配置,重复地址探测,链路层地址解析,邻居可达性探测,链路层地址改变通告和路由重定向等操作。由于ND协议缺乏内在的安全性,因此其面临地址解析攻击和路由信息攻击问题,而通过部署外在的加密认证体系来增加安全性又很复杂。IPv6使用ND协议实现的无状态地址自动配置机制在带来更易用的网络的时,使得无法对网络用户进行...

2019-07-03 12:05:15 4408

原创 VRRP协议介绍

VRRP协议说明随着Internet的迅猛发展,基于网络的应用逐渐增多,这就对网络的可靠性提出了越来越高的要求。我们必须在可靠性和经济性两方面都兼顾的同时找到一个平衡点。通常,子网内的所有主机都设置一条相同的到网关的缺省路由。主机发出的所有目的地址不在本网段的报文将通过缺省路由发往网关,来实现主机与外部网络的通信。当网关发生故障时,本网段内所有以网关为缺省路由的主机将中断与外部网络的通信。缺...

2019-07-03 11:52:08 4829

转载 UDP协议介绍

UDP 是一个简单地面向数据报的运输层协议:进程的每个输出操作都正好产生一个 UDP 数据报,并组装成一份待发送的 IP 数据报。UDP 不提供可靠性,它把应用程序传给 IP 层的数据发送出去,但是并不保证他们能到达目的地。UDP数据报封装成一份IP数据报的格式:UDP首部:端口号表示发送进程和接收进程,TCP端口号与UDP端口号是相互独立的。(不过有时候TCP和UDP同时提供某种...

2019-06-17 15:38:48 9928 1

转载 TCP协议介绍

网络分层TCP/IP协议栈主要分为四层:应用层、传输层、网络层、数据链路层,每层都有相应的协议,如下图TCP建立连接和释放TCP三次握手第一次握手:客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里,并进入SYN_SEND状态,等待服务器确认。第二次握手:服务器发回确认包(A...

2019-06-17 15:34:20 1407

转载 VXLAN协议介绍

vxlan 简介VXLAN 全称是 Virtual eXtensible Local Area Network,虚拟可扩展的局域网。它是一种 overlay 技术,通过三层的网络来搭建虚拟的二层网络。rfc7348 (参考资料1) 上的介绍是这样的:A framework for overlaying virtualized layer 2 networks over lay 3 network...

2019-06-17 14:28:13 3129

原创 GRE协议介绍

项目背景IPv6的部署大致要经历一个渐进的过程,在初始阶段,IPv4的网络海洋中会出现若干局部零散的IPv6孤岛,为了保持通信,这些孤岛通过跨越IPv4的隧道彼此连接;随着IPv6规模的应用,原来的孤岛逐渐聚合成为了骨干的IPv6 Internet网络,形成于IPv4骨干网并存的局面,在IPv6骨干上可以引入了大量的新业务,同时可以充分发挥IPv6的诸多优势。为了实现IPv6和IPv4网络资源的...

2019-06-17 14:21:58 20325

转载 OSPF协议介绍

概述路由协议OSPF全称为Open Shortest Path First,也就开放的最短路径优先协议,因为OSPF是由IETF开发的,它的使用不受任何厂商限制,所有人都可以使用,所以称为开放的,而最短路径优先(SPF)只是OSPF的核心思想,其使用的算法是Dijkstra算法,最短路径优先并没有太多特殊的含义,并没有任何一个路由协议是最长路径优先的,所有协议,都会选最短的。OSPF的流量使...

2019-06-17 14:07:24 173996 30

转载 Linux 33 Bash

00基础知识shell字面意思是外壳,刚好与操作系统的内核相对应,它为用户提供了一个访问操作系统服务的接口。bash是GNU/Linux系统中默认的shell, 它完全兼容sh,这意味着最新sh语法所写的shell脚本可以不加修改地直接使用bash执行。此外,bash吸收借鉴了csh和ksh中的一些特性,比如作业控制、命令行历史等。shell分为两种运行模式:交互式shell和非交互式she...

2019-06-17 12:30:41 592

原创 Linux 32 内存映射mmap

TODO

2019-06-17 12:26:22 180

转载 Linux 31 select、poll和epoll的区别

(1)select==>时间复杂度O(n)它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。(2)poll==>时间复杂度O(n)poll本质上和select没有区别,它将用户传入...

2019-06-17 12:25:11 98

转载 Linux 30 Linux poll和epoll的使用

pollpoll函数与select函数差不多函数原型:#include <poll.h>int poll(struct pollfd fd[], nfds_t nfds, int timeout);struct pollfd{ int fd; // 文件描述符 short event;// 请求的事件 short revent;// 返回的事件}...

2019-06-17 12:23:38 610

转载 Linux 29 内核定时器

Linux内核定时器的使用和原理内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于 <linux/timer.h> 和 kernel/timer.c 文件中。被调度的函数肯定是异步执行的,它类似于一种“软件中断”,而且是处于非进程的上下文中,所以调度函数必须遵守以下规则:没有 current 指针、不允许访问用户空间。因为没有进...

2019-06-17 12:18:49 192

转载 Linux 28 内核printk之日志级别

printk我们在使用printk()函数中使用日志级别为的是使编程人员在编程过程中自定义地进行信息的输出,更加容易地掌握系统当前的状况。对程序的调试起到了很重要的作用。控制台级别在内核代码include/linux/kernel.h中,定义了控制台的级别:extern int console_printk[];#define console_loglevel (console_prin...

2019-06-17 12:16:44 273

转载 Linux 27 字符设备驱动二(ioctl)

file_operations在Linux字符设备驱动入门(一)中,我们实现了字符设备的简单读写字符功能,接下来我们要在这个基础上加入ioctl功能。首先,我们先来看看3.0内核下…/include/linux/fs.h中file_operations结构体的定义:struct file_operations { struct module *owner; loff_t (*l...

2019-06-17 12:15:33 623 2

转载 Linux 26 字符设备驱动一

功能实现简单的字符操作(从用户空间向内核空间写入一串字符;从内核空间读一个字符到内核空间)众所周知,字符设备是linux下最基本,也是最常用到的设备,它是学习Linux驱动入门最好的选择,计算机的东西很多都是相通的,掌握了其中一块,其他就可以触类旁通了。在写驱动前,必须先搞清楚字符设备的框架大概是怎样的,弄清楚了流程,才开始动手,不要一开始就动手写代码!这里内核是基于Linux 2.6,3....

2019-06-17 12:13:09 243

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除