自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 Linux内核和用户空间通信之netlink

1. netlinkNetlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在Linux 内核中使用netlink 进行应用与内核通信的应用很多; 包括:路由 daemon(NETL...

2019-08-02 10:40:37 426

原创 GRE与Vxlan网络详解

1.GRE1.1 概念GRE全称是Generic Routing Encapsulation,是一种协议封装的格式,具体格式内容见:https://tools.ietf.org/html/rfc2784协议封装指的是用一种格式的协议封装另一种格式的协议。我们熟悉的TCP/IP协议可以看成是一种封装:TCP传输层协议被网络层的IP协议封装,通过IP协议来进行传输。还有比如很有用的IP ...

2019-03-03 17:49:54 5254

原创 Linux虚拟内存空间分布

1.程序和进程问题:程序和进程各是什么?程序只是一段可以执行的代码文件,通俗讲在 linux 上就是一个可执行文件。当一个程序运行时就被称为进程,即进程是运行状态的程序。程序存储了一系列文件信息,这些信息描述了如何在运行时创建一个进程,包含了下面的内容:二进制格式标识:  描述可执行文件的元信息,内核利用该信息解释文件中的其他信息机器语言指令:   对程...

2019-03-03 16:38:03 3821

转载 linux里挂载(mount)和取消挂载(umount)命令的使用

一、简单用法$ mount /dev/hda2 /home第一个叁数是与包括文件系统的磁盘或分区相关的设备文件。第二个叁数是要mount到的目录。$ umount /dev/hda2$ umount /usr参数可以是设备文件或安装点。二、mount详细介绍如果想在运行的Linux下访问其它文件系统中的资源的话,就要用mount命令来实现。1.mou...

2019-03-03 11:16:53 1037

原创 Linux C  下面读取当前文件夹中所有的文件

Linux C 下面读取文件夹要用到结构体struct dirent,在头#include <dirent.h>中,如下:#include <dirent.h>struct dirent{ long d_ino; /* inode number 索引节点号 */ off_t d_off; /* offset to this dirent 在目录文...

2019-03-03 11:14:21 1776

原创 浅谈TCP协议与DDOS

本节内容1.TCP协议浅谈1.HTTP连接2.SOCKET原理3.TCP介绍4.TCP连接的三次握手与四次挥手2.DDOS1.什么是DDOS2.攻击原理3.防护方法4.其他攻击方式了解一、TCP协议浅谈1、HTTP连接HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,是用于从W...

2019-03-03 11:11:15 976

原创 进程的同步与通信,进程与线程同步的区别,进程与线程通信的区别

进程的同步与通信,进程与线程同步的区别,进程与线程通信的区别进程同步与互斥的区别? 进程的同步方式有哪些? 进程的通信方式有哪些? 进程同步与通信的区别是什么? 线程的同步/通信与进程的同步/通信有区别吗?在好多教材上(包括国内与国外的)也没有明确这些概念,现在对每个问题还没有准确的答案,下面将自己的理解记下来,以后再补充。参考资料:《操作系统教程》 孙钟秀主编 费翔林...

2019-02-13 22:50:04 903 3

原创 http/https协议

Http与Https的区别:Http与Https的区别:HTTP 的URL 以http://开头,而HTTPS 的URL 以https://开头 HTTP 是不安全的,而 HTTPS 是安全的 HTTP 标准端口是80 ,而 HTTPS 的标准端口是443 在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层 HTTP 无法加密,而HTTPS 对...

2019-01-30 09:45:55 927

原创 四层负载和七层负载的区别联系

一、简介 ** 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;**同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址;四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器;七层通过...

2019-01-30 09:44:22 252

原创 L4/L7负载均衡

一、简介 ** 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;**同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址;四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器;七层通过...

2019-01-28 09:32:23 5821

原创 linux堆(heap)和栈(stack)有什么区别?

堆(heap)和栈(stack)有什么区别?? 简单的可以理解为:heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等...

2019-01-28 00:08:43 2421

原创 linux几种锁的分析与比较

linux各种锁机制的使用及区别 前言:相信需要了解这方面的知识的小伙伴,已经基本对进程间通信和线程间通信有了一定了解。例如,进程间通信的机制之一:共享内存(在这里不做详解):多个进程可同时访问同一块内存。如果不对访问这块内存的临界区进行互斥或者同步,那么进程的运行很可能出现一些不可预知的错误和结果。接下来我们了解三种常见的Linux下的互斥操作—>锁。 1.互斥锁(mute...

2019-01-27 23:57:45 10037

原创 多线程死锁的产生以及如何避免死锁

一、死锁的定义多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。下面我们通过一些实例来说明死锁现象。先看生活中的一个实例,2个人一起吃饭但是只有一双筷子,2人轮流吃(同时拥有2只筷子才能吃)。某一个时候,一个拿了左筷子,一人拿了右筷子,2...

2019-01-27 23:39:39 125

原创 sql-索引的作用(超详细)

 (一)深入浅出理解索引结构实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别:其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会...

2019-01-27 23:05:10 401 1

原创 TCP拥塞控制机制

产生的原因 ∑ 对资源的需求>可用资源 ∑对资源的需求>可用资源\sum_{}^{} 对资源的需求 >可用资源   注意  单纯的增加网络资源无法解决问题  例如:把结点的存储空间扩大,更换更高速率的链路,提高结点处理机的运算速度,不仅不能解决问题,而且可能使网络性能更坏。  原因:网络拥塞是许多因素引起的,单纯的解决一个可能会使上述情况得到一些缓解,但是...

2019-01-27 00:47:27 159

原创 TCP协议分析:通信建立、可靠性(确认机制、重传机制、流量控制、拥塞窗口)、滑动窗口

 这是一个很有意思的问题~    首先,我们要知道TCP是全双工的,即客户端在给服务器端发送信息的同时,服务器端也可以给客户端发送信息。而半双工的意思是A可以给B发,B也可以给A发,但是A在给B发的时候,B不能给A发,即不同时,为半双工。 单工为只能A给B发,B不能给A发; 或者是只能B给A发,不能A给B发。  我们假设A和B是通信的双方。我理解的握手实际上就是通信,发一次信息就是进行一次...

2019-01-27 00:32:13 585

转载 常见排序算法的思想、应用场景以及性能稳定性比较

八大排序,三大查找是《数据结构》当中非常基础的知识点,在这里为了复习顺带总结了一下常见的八种排序算法。常见的八大排序算法,他们之间关系如下:  排序算法.png 他们的性能比较:  排序算法性能和使用场景总结基于比较的排序算法有:冒泡排序,插入排序,希尔排序,选择排序,归并排序,堆排序,快速排序;线性时间排序算法包括:计数排序,基数排序,桶排序;...

2019-01-26 23:49:19 2545

转载 单链表判断是否有环以及链表相关计算

给定一个单链表,判断其中是否有环,已经是一个比较老同时也是比较经典的问题,在网上搜集了一些资料,然后总结一下大概可以涉及到的问题,以及相应的解法。 首先,关于单链表中的环,一般涉及到一下问题:1.给一个单链表,判断其中是否有环的存在;2.如果存在环,找出环的入口点;3.如果存在环,求出环上节点的个数;4.如果存在环,求出链表的长度;5.如果存在环,求出环上距离任意一...

2019-01-26 23:39:19 231

原创 linux网络协议栈

本系列文章总结 Linux 网络栈,包括:(1)Linux 网络协议栈总结(2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO(3)QEMU/KVM + VxLAN 环境下的 Segmentation Offloading 技术(发送端) (4)QEMU/KVM + VxLAN 环境下的 Segmentation Offloading 技术(接收...

2019-01-13 15:55:12 332

原创 linux下iptables和netfilter详解(4):洞悉实现流程及协议栈分析

(一)洞悉linux下的Netfilter&iptables:什么是Netfilter?很多人在接触iptables之后就会这么一种感觉:我通过iptables命令配下去的每一条规则,到底是如何生效的呢?内核又是怎么去执行这些规则匹配呢?如果iptables不能满足我当下的需求,那么我是否可以去对其进行扩展呢?这些问题,都是我在接下来的博文中一一和大家分享的话题。这里需要指出:因为Ne...

2019-01-13 15:47:30 1307

原创 linux下iptables和Netfilter详解(3):实现机制和扩展技术

2.4.x的内核相对于2.2.x在IP协议栈部分有比较大的改动, Netfilter-iptables更是其一大特色,由于它功能强大,并且与内核完美结合,因此迅速成为Linux平台下进行网络应用扩展的主要利器,这些扩展不仅包括防火墙的实现--这只是Netfilter-iptables的基本功能--还包括各种报文处理工作(如报文加密、报文分类统计等),甚至还可以借助Netfilter-iptable...

2019-01-13 15:34:44 480

原创 linux下iptables与Netfilter详解(2):原理详解

Linux-iptables详解一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。 目前市面上比较常见的有3、4层的防火墙,叫网络层的防火墙,还有7层的...

2019-01-13 15:02:23 897 1

原创 linux top命令查看内存及多核CPU的使用讲述

linux top命令查看内存及多核CPU的使用讲述 top shift + h 查看多核CPU命令mpstat -P ALL  和  sar -P ALL 说明:sar -P ALL > aaa.txt   重定向输出内容到文件 aaa.txt top命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的...

2019-01-13 14:49:15 283

原创 socket选项总结(setsockopt)

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

2019-01-12 16:12:05 490

转载 ulimit 命令详解

Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,设置各linux 用户的最大进程数可以用ulimit -a 来显示当前的各种用户进程限制。下面我把某linux用户的最大进程数设为10000个:     ulimit -u 10240     对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言,     最好通过使用 ...

2019-01-12 16:02:08 356

原创 socket通信编程

socket编程是网络常用的编程,我们通过在网络中创建socket关键字来实现网络间的通信,通过收集大量的资料,通过这一章节,充分的了解socket编程,文章用引用了大量大神的分析,加上自己的理解,做个总结性的文章1:socket大致介绍      socket编程是一门技术,它主要是在网络通信中经常用到      既然是一门技术,由于现在是面向对象的编程,一些计算机行业的大神通过抽象...

2019-01-12 15:55:50 285

原创 Linux 五种IO模型

那么,在正式开始讲Linux IO模型前,比如:同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。1 概念说明#在进行解释之前,首先要说明几个概念:用户空间和内核空间进程切换进程的阻塞文件描述符缓存 IO1.1 用户空间与内核空间##现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟...

2018-03-18 17:49:32 185

原创 Linux系统调用过程分析

Linux系统调用过程分析參考:《Linux内核设计与实现》0 摘要linux的系统调用过程:层次例如以下:用户程序------>C库(即API):INT 0x80 ----->system_call------->系统调用服务例程-------->内核程序先说明一下,我们常说的用户API事实上就是系统提供的C库。系统调用是通过软中断指令 INT 0x80 实现的,而这条I...

2018-03-18 17:46:47 142

原创 XML与HTML的区别

XML与HTML的区别一、HTML       HTML(HyperTextMark-upLanguage)即超文本标记语言,是WWW的描述语言。  二、XML       XML即ExtentsibleMarkup Language(可扩展标记语言),是用来定义其它语言的一种元语言,其前身是SGML(标准通用标记语言)。它没有标签集(tagset),也没有语法规则(grammatical rul...

2018-03-10 09:39:42 190

原创 python爬虫:爬虫的工作原理

爬虫的工作原理  网络爬虫,即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,

2017-11-13 09:25:48 677

原创 python爬虫:从页面下载图片以及编译错误解决。

报错:    “AttributeError: 'module' object has no attribute 'urlopen'”原因是Python3里的urllib模块已经发生改变,此处的urllib都应该改成urllib.request。发现读取下来后,运行到第12行,出现:can't use a string pattern on a

2017-11-12 14:05:02 1650

原创 localtime()函数:获取当前时间和日期并转换为本地时间

内核代码能一直获取一个当前时间的表示, 通过查看 jifies 的值. 常常地, 这个值只代表从最后一次启动以来的时间, 这个事实对驱动来说无关, 因为它的生命周期受限于系统的 uptime. 如所示, 驱动可以使用 jiffies 的当前值来计算事件之间的时间间隔(例如, 在输入驱动中从单击中区分双击或者计算超时). 简单地讲, 查看 jiffies 几乎一直是足够的, 当你需要测量时间间隔.

2017-11-10 11:54:24 10982

原创 Ubuntu 14.04下Django+MySQL安装部署全过程

一、简要步骤。(阿里云Ubuntu14.04)Python安装DjangoMysql的安装与配置  记录一下我的部署过程,也方便一些有需要的童鞋,大神勿喷~二、Python的安装由于博主使用的环境是Ubuntu14.04,所以系统自带了Python2.7.6。我们可以使用Python –V查看自己Ubuntu中的Python版本。 三、Dja

2017-11-10 11:40:38 290

转载 内核定时器的使用

1. 包含的头文件:linux/timer.h2. 数据类型:struct timer_list;包含的主要成员:a. data:传递到超时处理函数的参数,主要在多个定时器同时使用时,区别是哪个timer超时。b. expires:定时器超时的时间,以linux的jiffies来衡量。c. void (*function)(unsigned long):定时器超时处理函数。12

2017-11-10 11:21:24 231

转载 Linux内核分析 - 网络:网桥原理分析

网桥数据包的处理流程    网桥处理包遵循以下几条原则:    1.  在一个接口上接收的包不会再在那个接口上发送这个数据包;    2.  每个接收到的数据包都要学习其源地址;    3.  如果数据包是多播或广播包,则要在同一个网段中除了接收端口外的其他所有端口发送这个数据包,如果上层协议栈对多播包感兴趣,则需要把数据包提交给上层协议栈;    4.

2017-11-10 10:53:16 850

转载 Linux内核分析 - 网络:netif_receive_skb平台报文入口函数详解

网络收包流程从网卡驱动开始,一直往上,涉及NAPI、GRO、RPS等特性,但是一般最后都会调用__netif_receive_skb函数:static int __netif_receive_skb(struct sk_buff *skb){    struct packet_type *ptype, *pt_prev;    rx_handler_fu

2017-11-10 10:48:34 8241

空空如也

空空如也

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

TA关注的人

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