校验和

spring cloud 过滤器

匿名 (未验证) 提交于 2019-12-02 23:57:01
通过上面所述的两篇我们,我们已经能够实现请求的路由功能,所以我们的微服务应用提供的接口就可以通过统一的API网关入口被客户端访问到了。但是,每个客户端用户请求微服务应用提供的接口时,它们的访问权限往往都需要有一定的限制,系统并不会将所有的微服务接口都对它们开放。然而,目前的服务路由并没有限制权限这样的功能,所有请求都会被毫无保留地转发到具体的应用并返回结果,为了实现对客户端请求的安全校验和权限控制,最简单和粗暴的方法就是为每个微服务应用都实现一套用于校验签名和鉴别权限的过滤器或拦截器。不过,这样的做法并不可取,它会增加日后的系统维护难度,因为同一个系统中的各种校验逻辑很多情况下都是大致相同或类似的,这样的实现方式会使得相似的校验逻辑代码被分散到了各个微服务中去,冗余代码的出现是我们不希望看到的。所以,比较好的做法是将这些校验逻辑剥离出去,构建出一个独立的鉴权服务。在完成了剥离之后,有不少开发者会直接在微服务应用中通过调用鉴权服务来实现校验,但是这样的做法仅仅只是解决了鉴权逻辑的分离,并没有在本质上将这部分不属于业余的逻辑拆分出原有的微服务应用,冗余的拦截器或过滤器依然会存在。 对于这样的问题,更好的做法是通过前置的网关服务来完成这些非业务性质的校验。由于网关服务的加入,外部客户端访问我们的系统已经有了统一入口,既然这些校验与具体业务无关,那何不在请求到达的时候就完成校验和过滤

DPDK PCIe 与 包处理

匿名 (未验证) 提交于 2019-12-02 23:45:01
参考文献:  《深入浅出DPDK》   linux 阅马场 公众号 .............................................................................................................. 一. PCIe 介绍(参考 linux 阅马场文章) 首 先我们来看一下在x86系统中,PCIe是什么样的一个体系架构。下图是一个PCIe的拓扑结构示例,PCIe协议支持256个Bus, 每条Bus最多支持32个Device,每个Device最多支持8个Function,所以由BDF(Bus,device,function)构成了 每个PCIe设备节点的身份证号。 PCIe 体系架构一般由root complex,switch,endpoint等类型的PCIe设备组成,在root complex和switch中通常会有一些embeded endpoint(这种设备对外不出PCIe接口)。这么多的设备,CPU启动后要怎么去找到并认出它们呢? Host对PCIe设备扫描是采用了深度优先算法,其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。我们一般称 这个过程为PCIe设备枚举。枚举过程中host通过配置读事物包来获取下游设备的信息

TCP入门

匿名 (未验证) 提交于 2019-12-02 23:42:01
报文头部格式 源端口 2字节 最大2^16-1 目的端口 2字节 TCP交互端口的意义:指明交互双方的身份是属于IP内的哪个进程 校验和 伪首部 先加个伪首部 伪首部共有12字节,包含如下信息:源IP地址、目的IP地址、保留字节(置0)、传输层协议号(TCP是6)、TCP报文长度(报头+数据)。 伪首部是为了增加TCP校验和的检错能力:如检查TCP报文是否收错了(目的IP地址)、传输层协议是否选对了(传输层协议号)等。 首先,把伪首部、TCP报头、TCP数据分为16位的字,如果总长度为奇数个字节,则在最后增添一个位都为0的字节。把TCP报头中的校验和字段置为0(否则就陷入鸡生蛋还是蛋生鸡的问题)。 其次,用反码相加法累加所有的16位字(进位也要累加)。 最后,对计算结果取反,作为TCP的校验和。 窗口 表示缓存最大可以接受多少字节 默认不设置窗口扩大因子时是64K 选项 可以设置窗口位移 常见对TCP选项有7种,其中kind=3是窗口扩大因子选项。TCP连接初始化时,通信双方使用该选项来协商接收通过的窗口扩大因子。假设TCP头部中的通告窗口大小为N,窗口扩大因子(位移数)是M,那么TCP报文段的实际接收通告窗口大小为:N * (2 ** M)。M的取值范围为0 ~ 14。这样的话, 通告窗口最大约为1GB ,能够满足大部分应用的需求。 序号:本包在本次单向传输是属于 第几个字节开始

InnoDB数据页结构

匿名 (未验证) 提交于 2019-12-02 21:59:42
真实数据的存储在不同的存储引擎中存放的格式一般是不同的 ,有的存储引擎比如Memory都不用磁盘来存储数据,就跟NoSQL一样,服务器关闭后数据就不见了。InnoDB是MySQL的默认储存引擎,也是我们大家常用的存储引擎。 InnoDB 储存引擎中页的结构。 InnoDB数据页结构 InnoDB 是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的,所以需要把磁盘中的数据加载到内存中,如果是处理写入或修改请求的话,还需要把内存中的内容刷新到磁盘上。而我们知道读写磁盘的速度非常慢,和内存读写之间的差距就不再多说,所以当我们想从表中获取某些记录时, InnoDB 存储引擎需要一条一条的把记录从磁盘上读出来么?不,那样会慢死, InnoDB 采取的方式是:将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,InnoDB中页的大小一般为 16 KB。也就是在一般情况下,一次最少从磁盘中读取16KB的内容到内存中,一次最少把内存中的16KB内容刷新到磁盘中。 数据页 ,大小也为16KB,但是这16KB大小的存储空间被划分为多个部分,不同的部分当然有着不同的功能,结构如下: 名称 中文名 占用空间大小 简单描述 File Header 文件头 38字节 描述页的信息 Page Header 56字节 页的状态信息

什么是ZFS文件系统?ZFS概念及特点简介

爱⌒轻易说出口 提交于 2019-12-02 21:53:12
什么是 ZFS? ZFS(Zettabyte File System)是由SUN公司的Jeff Bonwick领导设计的一种基于Solaris的文件系统,最初发布于20014年9月14日。 SUN被Oracle收购后,现在称为Oracle Solaris ZFS。 ZFS全称是 Zettabyte File System,单个ZFS文件系统最多支持 256 quadrillion zettabytes (ZB), 1ZB等于2的70次方字节。相对于传统的EXT、XFS、JFS、ReiserFS或NTFS,ZFS的一个重要侧重点就是突出了对数据完整性的保护。 ZFS 文件系统是一种革新性的新文件系统,可从根本上改变文件系统的管理方式,并具有目前面市的其他任何文件系统所没有的功能和优点。ZFS 强健可靠、可伸缩、易于管理。 因为其先进性,ZFS被称为最后的操作系统,21世纪最好的操作系统,也曾经被苹果用于Mac OSX 10.5操作系统中,但是当Mac OSX10.6雪豹发布时,大家发现苹果完全弃用了ZFS。 原因可能是,当Oracle收购SUN时,Oracle自己已经有了开源文件系统BTRFS,外界认为它无力分身继续ZFS的开发;另一方面,Netapp称ZFS文件系统侵犯其WAFL专利技术,综合这些,苹果最终停止支持ZFS文件系统。 ZFS 池存储 ZFS

hadoop学习笔记:hadoop文件系统浅析

耗尽温柔 提交于 2019-12-01 17:19:55
hadoop学习笔记:hadoop文件系统浅析 https://www.cnblogs.com/sharpxiajun/archive/2013/06/15/3137765.html 1.什么是分布式文件系统? 管理网络中跨多台计算机存储的文件系统称为分布式文件系统。 2.为什么需要分布式文件系统了? 原因很简单,当数据集的大小超过一台独立物理计算机的存储能力时候,就有必要对它进行分区(partition)并存储到若干台单独计算机上。 3.分布式系统比传统的文件的系统更加复杂 因为分布式文件系统架构在网络之上,因此分布式系统引入了网络编程的复杂性,所以分布式文件系统比普通文件系统更加复杂。 4.Hadoop 的文件系统 很多童鞋会把hdfs等价于hadoop的文件系统,其实hadoop是一个综合文件系统抽象,而hdfs是hadoop旗舰级文件系统,hadoop除了hdfs还能集成其他文件系统。Hadoop的这个特点充分体现了hadoop的优良的可扩展性。 在hadoop里,hadoop定义了一个抽象的文件系统的概念,具体就是hadoop里面定义了一个java的抽象类:org.apache.hadoop.fs.FileSystm,这个抽象类用来定义hadoop中的一个文件系统接口,只要某个文件系统实现了这个接口,那么它就可以作为hadoop支持的文件系统

基于ICMP协议的ping命令

隐身守侯 提交于 2019-12-01 03:03:21
要模拟实现ping命令,就需要对ICMP协议有所了解: ICMP:Internet控制报文协议,它是TCP/IP协议族中的一个子协议,用于在IP主机,路由之间传递信息的协议。 传输的信息包括: 1.目的不可达消息 2.超时消息 3.重定向消息 4.时间戳请求和时间戳响应消息 5.回显请求和回显响应消息。 ping命令 的机制就是回显请求和回显应答消息,具体是向网络上另一个主机上发送ICMP报文,如果指定的主机得到了这个报文,就将报文原封不动的发送回发送者。 ICMP报文格式: 类型:回显请求报文其中类型为0,代码为0 代码:回显应答报文其中类型为8,代码为0 校验和:包括数据在内整个ICMP协议数据包校验和 标识符:用于文艺标识ICMP报文,Linux中使用进程ID 序列号:报文的序列号 数据:ping中将发送报文的时间戳放入数据字段 通过下面的代码可以打印出IP协议头部的格式: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netinet/ip_icmp.h> #include <netinet/ip.h>

米联客(MSXBO)新版本协议栈udp_ip_protocal_stach接口说明

社会主义新天地 提交于 2019-11-30 09:33:13
1概述 在米联客老版本的MIA701开发板(2017版本)中,米联开源了1套原创的UDP IP协议栈。在后续开发过程中,我们对协议栈进行了改进和升级,在新一代开发板中发布新版UDP IP协议栈。出于保护知识产权的目的,新版的UDP IP协议栈不再开源,仅以网表的形式免费提供大家使用。 新版UDP IP协议栈将原MAC协议实现部分移除,留出MAC接口。将用户接口数据位宽由8bit增加到64bit。另外,增加和升级了若干功能,整体的逻辑框架与原协议栈基本保持一致,如下图所示。 2特点 2特点 >支持UDP接收校验和检验功能,暂不支持UDP发送校验和生成。 >支持IP首部校验和的生成和校验,同时支持ICMP协议中的PING功能,可接收并响应同一个子网内部设备的PING请求。 >可自动发起或响应同一个子网内设备的ARP请求,ARP收发完全自适应。ARP表可保存同一个子网内部256个IP和MAC地址对。 >支持ARP超时机制,可检测所需发送数据包的目的IP地址是否可达。 >协议栈发送带宽利用率可达93%,高发送带宽下,内部仲裁机制保证PING和ARP功能不受任何影响。 >发送过程不会造成丢包。 >提供64bit位宽AXI4-Stream形式的MAC接口,可与Xilinx官方的千兆以太网IP核Tri Mode Ethernet MAC,以及万兆以太网IP核10 Gigabit Ethernet

TCP/IP协议栈

可紊 提交于 2019-11-30 06:15:52
文章目录 一、参考书籍 二、必须掌握的内容 1.TCP/IP协议体系的认知 2.数据链路层 3.网络层 4.传输层 5.应用层 三、常见面试题目 1.分层的概念 2.数据链路层 3.网络层 (1)IP协议 (2)ICMP协议 四、传输层 1.UDP协议 2.TCP协议 五、应用层 1.DNS 2.http基本格式 六、参考 一、参考书籍 (1)TCP/IP详解 卷1:协议 (2)计算机网络:自顶向下方法 二、必须掌握的内容 1.TCP/IP协议体系的认知 (1)分层。一部分处于用户态,一部分处于内核态。数据链路层,网络层,传输层封装于操作系统内核态。应用层存在于操作系统的用户空间,包括DNS,FTP,HTTPs,HTTP,工作中接触较多的是应用层的部分。但其它层的原理必须理解,面试考察。 (2)层与层之间下层对上层是透明的,传输在每一层是对等的。 2.数据链路层 (1)以太网帧的格式。 (2)MTU(最大传输单元)的概念。 (3)ARP协议和RARP协议(地址协议和逆地址协议,网卡MAC地址和IP地址互查机制)(网络层和链路层的中间层)ARP报文格式,查询原理,缓存机制 3.网络层 (1)掌握IP首部格式:如16位分片标识、DF不分片标志、MF更多分片标志、13位片偏移、8位生存时间TTL、16位的首部检验和等等。 (2)掌握如何IP分片:如总长大于MTU值,画分片情况

UDP 协议解析 - 1

不问归期 提交于 2019-11-30 05:54:54
目录 1. 概述 2. UDP 的主要特点 3. UDP 的首部格式 3. UDP 校验和 3.1 伪首部 3.2 UDP 校验和计算方法 [参考文献] 1. 概述 用户数据报协议(UDP,User Datagram Protocol)为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据报的方法。UDP是一种保留消息边界的简单的面向数据报的协议。UDP不提供差错纠正、队列管理、重复消除、流量控制和拥塞控制,但提供差错检测(包含我们在传输层中碰到的第一个真实的端到端(end-to-end)校验和)。这种协议自身提供最小功能,因此使用它的应用程序要做许多关于数据报如何发送和处理的控制工作。想要保证数据被可靠传递或正确排序,应用程序必须自己实现这些保护功能。一般来说,每个被应用程序请求的UDP输出操作只产生一个UDP数据报,从而发送一个IP数据报。而对于面向数据流的传输层协议(例如TCP),应用程序写入的全部数据与真正在单个IP数据报里传送的或接收方接收的内容可能没有联系。 2. UDP 的主要特点 1). UDP 是 无连接的 ,即发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。 2). UDP 使用 尽最大努力交付 ,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。 3). UDP 是 面向报文 的。发送方的UDP对应用程序交下来的报文