自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 套接字介绍

套接字的定义为:他是TCP/IP协议栈中传输层协议的接口,也是传输层以上所有协议的实现。同时套接字接口在网络协议程序功能中是内核与应用层之间的接口。

2023-11-15 22:28:29 300

原创 linux硬件中断处理流程3----NAPI

linux硬件中断处理流程3----NAPI

2022-07-04 22:52:43 880 1

原创 linux硬件中断处理流程2----netif_rx

硬件中断处理函数netif_rx

2022-07-03 22:58:16 1711

原创 linux硬件中断处理流程1

网络设备硬件中断

2022-07-03 15:32:10 1564

原创 skb_buff协议头指针操作函数

sk_buff协议头指针操作函数

2022-06-13 22:40:43 3070

原创 数据分片和分段

2022-06-12 21:40:28 1437

原创 struct sk_buff数据空间预留和对齐

2022-06-11 13:45:09 1148

原创 linux数据包ip层转发流程

基于内核2.6.29

2022-05-29 21:17:39 647

原创 linux路由选择流程

linux路由确认

2022-05-29 19:59:59 776

原创 struct net_device的promiscuity域

struct net_device的promiscuity域表示混杂模式的计数器。默写网络管理任务要求网络设备接收所有经过网格设备的数据包,而不仅仅是目的地址与该网络设备匹配的数据包,这种工作模式称为混杂模式。 这种模式可以用于局域网段上检查网络性能或安全性,台也用于 桥接器代码中。promiscuity用于指明当前网络设备是否处于混杂模式。之所以使用计数器而不是用一个标志变量来表明混杂模式,是因为某一时刻可以有多个任务需要使用混杂模式,每个任务在进入该模式时,对promiscuity计...

2021-04-12 23:39:37 196

原创 Sockert Buffer的复制

和克隆不同,当多个进程对同一个Socket Buffer的操作既要修改sk_buff数据结构中的内容,也要修改数据包内容时,必须对Socket Buffer进行复制,这是可以有两个选择:1、如果既要修改主数据包中的内容,又要操作分片数据段中的值,函数struct sk_buff *skb_copy(struct sk_buff *skb)可以完成该功能。2、如果只修改主数据包中的内容,而不需要读/写分片数据段中的值,可以使用函数struct sk_buff *pskb_copy(struct sk_

2021-03-25 23:32:54 194

原创 Socker Buffer的克隆

在什么时候需要对Socket Buffer进行克隆,某些时候,同一个Socket Buffer会由不同的进程进行独立处理,但这些进程所需要操作的只是sk_buff数据结构描述符,不需要对数据包本身做改动。这是为了提高处理性能,内核不需要对整个Socket Buffer(sk_buff数据结构和数据包缓冲区)做完全懂得复制,只对sk_buff数据结构做完全的复制,并对数据包的引用计数加1,以此防止在还有进程使用该Socket Buffer的数据包情况下,缓冲区被释放。这就是sk_buff克隆函数的功能。这是原

2021-03-24 23:36:07 261

转载 2021-03-17

https://blog.csdn.net/godleading/article/details/52971179

2021-03-17 23:45:55 91

原创  linu内核组件

linu内核组件 linux内核可以划分为5个组件部分,每个部分的功能定义非常明确,个组件又为内核的其他组件提供相应的服务,这种划分可以从linux源码树形结构中看出来,如下组件图。1、进程管理 负责创建、结束进程,管理内核的活动,如软件中断、tasklet等,管理进程间通信,如消息、管道等,实现进程调度,进程调度是进程管理的重要任务,它处理所有活动的、等...

2021-03-15 23:08:00 313

原创 suricata应用层协议解析

suricata应用层协议解析1. 协议注册应用层协议保存在全局变量static AppLayerParserCtx alp_ctx;typedef struct AppLayerParserCtx_ {AppLayerParserProtoCtx ctxs[FLOW_PROTO_M...

2020-02-14 15:09:56 3612 1

原创 suricata初始化流程

suricata初始化流程1、简介suricata是一款高性能的IDS、IPS和网络安全监测引擎。采用多线程模式,利用多核...

2020-02-14 12:13:05 628

原创 IPsec协议过程

版权声明:如有需要,可供转载,但请注明出处:https://blog.csdn.net/City_of_skey/article/details/866187841、ipsec协议简介IPSec是在网络层构建的安全虚拟专有网络,通过在数据包中插入一些预定义的头部,实现对网络层以上的协议数据安全。不同于ssl应用层的加密。IPSec内核加密支持的库是xfrm。ipsec安全体系...

2019-01-23 23:04:34 16391

原创 IPsec初始化

版权声明:如有需要,可供转载,但请注明出处:https://blog.csdn.net/City_of_skey/article/details/86586382目录1、简介2、状态初始化3、策略初始化4、输入初始化1、简介IPsec的初始化主要包括三部分:状态初始化、策略初始化、输入初始化。初始化函数是xfrm_initvoid __init xfrm_init...

2019-01-21 23:24:57 580

原创 IPsec协议相关结构2

版权声明:如有需要,可供转载,但请注明出处:https://blog.csdn.net/City_of_skey/article/details/86563402目录1、xfrm_type2、xfrm_mode3、xfrm_policy_afinfo4、xfrm_state_afinfo5、xfrm_mgr1、xfrm_typeah、esp、ipcomp协议的通过s...

2019-01-20 16:50:30 633

原创 IPsec相关数据结构1

版权声明:如有需要,可供转载,但请注明出处:https://blog.csdn.net/City_of_skey/article/details/86562770目录1、简介2、xfrm_state3、xfrm_policy4、xfrm_tmpl 1、简介ipsec对数据加密是在内核IP层实现的,通过PF_INET类型套接字和应用层通信文件在/net/key目录下,安全...

2019-01-20 15:50:56 556

原创 golang之channel

版权声明:如有需要,可供转载,但请注明出处:https://blog.csdn.net/City_of_skey/article/details/86263168目录1、channel简介2、channel阻塞3、channel非阻塞4、select1、channel简介go语言中并发程序非常简单直接用关键字go就可以起一个协程,go语言的协程是语言级别的所以它的开销比...

2019-01-10 23:23:59 344

转载 linux下进程的状态

Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。Linux进程状态:R (TASK_RUNNING),可执行状态。     只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的...

2019-01-01 17:00:20 347 1

原创 死锁

版权声明:如有需要,可供转载,但请注明出处:https://blog.csdn.net/City_of_skey/article/details/85542643目录1、产生死锁条件2、死锁例子3、避免死锁1、产生死锁条件死锁产生有四个充分条件:(1)互斥条件:申请的资源同一时间只能被一个线程占用。(2)请求和保持条件:一个线程保持了一个资源锁,又去申请另一个资源锁...

2019-01-01 15:54:00 394

原创 linux同步机制之互斥锁

 版权声明:如有需要,可供转载,但请注明出处:https://blog.csdn.net/City_of_skey/article/details/85494572 目录1、简介2、API2.1 pthread_mutex_init2.2 pthread_mutex_lock2.3 pthread_mutex_trylock2.4 pthread_mutex_tim...

2018-12-31 23:55:33 748

原创 linux同步机制条件变量

版权声明:如有需要,可供转载,但请注明出处,https://blog.csdn.net/City_of_skey/article/details/85471584 谢谢。 ...

2018-12-31 16:59:56 224

原创 linux网桥--接受数据包

 版权声明:如有需要,可供转载,但请注明出处:https://blog.csdn.net/City_of_skey/article/details/85254786目录1、netif_receive_skb2、handle_bridge3、br_handle_frame4、br_handle_frame_finish5、br_forward6、br_flood_forw...

2018-12-25 22:02:04 1920

原创 linux网桥--简介

版权声明:如有需要,可供转载,但请注明出处:https://blog.csdn.net/City_of_skey/article/details/85240141目录 1、网桥简介 2、网桥初始化2.1 struct net_bridge2.2 struct net_bridge_port2.3 struct net_bridge_fdb_entry2.4 br...

2018-12-24 22:56:44 5316 1

原创 linux I/O复用select

目录1、select简介2、select使用3、select缺点1、select简介在linux网络编程I/O复用使用的函数之一就是select,select函数是一个古老的接口int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struc...

2018-12-23 16:38:04 211

转载 dpdk安装

https://blog.csdn.net/cloudvtech/article/details/80221236https://www.jianshu.com/p/a9a3885efe5ahttps://blog.csdn.net/cloudvtech/article/details/80221236

2018-12-16 23:06:56 448

原创 dpdk框架介绍

1、传统网络架构 传统的网络设备(交换机、路由器等)为了快速处理数据包而嵌入了NP处理器(Network Process),内置硬件电路实现高速转发数据包。随着云计算的发展以CPU为核心、操作系统是linux,网络设备都是虚拟化,没有NP处理器。云计算需要高速的处理数据包的要求。传统的网络架构处理流程如下:传统网络框架处理流程传统网络框架处理流程中没有控制层面和数据层面之分,大部...

2018-12-16 17:33:09 3239 2

原创 dpdk编译问题

今天下载dpdk源码编译报一个错误如下,找到很久发现是没有安装这个库libpcap0.8-dev,我的虚拟机是ubuntu所以运行这个apt-get install libpcap0.8-dev安装libpcap0.0-devPcap.h no such file and directory  ...

2018-12-16 15:57:30 1012

原创 TCP协议time_wait

因为TCP连接是双向的所以只有两个放行的连接都关闭了这个连接才算终止,首先A主机发送控制信息FIN包给B主机关闭A主机到B主机放行的连接,然后B主机回复ACK包这时A主机到B主机放行的连接关闭,A主机不能向B主机发送数据,但B主机可以向A发送数据,因为B主机到A主机方向的连接没有关闭。接下来B主机向A主机发送FIN包请求关闭B主机到A主机方向的连接,当A主机回复ACK后完成TCP四次挥手,这时还有...

2018-12-16 15:51:37 236

原创 TCP拥塞控制

前一节分析了TCP流量控制,流量控制是接收端根据自身的自由限制(缓冲区大小、CPU处理性能)控制发送端端的数据包速率和大小,是点到点的通信质量控制。而拥塞控制是防止过多的数据包注入网络造成网络通信的阻塞,涉及网络中的交换机、路由器等资源的限制,所以拥塞控制是一个全局的过程,涉及整个网络的状况。拥塞控制主要冲三个方面介绍:慢启动、快速重传、快速恢复。1、慢启动/拥塞避免算法TCP的拥塞控制的...

2018-12-16 13:59:37 820

原创 TCP流量控制

TCP协议是可靠的协议,流量控制是考虑到接受端的限制,比如接受方缓冲区只有6000字节,那么发送端不能发送超过6000字节的报文,流量控制是接受端根据自身的情况而约束发送端的发送报文的速度和大小,流量控制使用的一个滑动窗口(rwnd),当TCP协议建立后接受端回复ACK报文中附加有滑动窗口,那么发送端不能发送超过滑动窗口的报文,当窗口大小为0时就表示接受端拒绝接受数据,发送端应该停止发送数据包。...

2018-12-15 23:58:21 1091

原创 netfilter之链接跟踪做nat

上一节我们将了NAT是基于链接跟踪实现的,当一条链接跟踪建立要改变它的tuple的reply方向才能做nat,这个链接跟踪的nat是函数nf_nat_setup_info实现1、nf_nat_setup_infonf_nat_setup_info对链接跟踪的做NAT,只会改变链接跟踪reply方向的ip、端口,不会改变数据包的ip、端口,数据包的DAT在上一节已经介绍了是在PRE_ROUT...

2018-12-14 00:01:02 1190

原创 netfilter之nat代码分析

nat主要在PRE_ROUTING、OUTING、LOCAL_IN、POST_ROUTING四个链上注册了hook函数,PRE_ROUTING、OUTING这个两个链上做DNAT,LOCAL_IN和POST_ROUTING链上做SNAT。nat表没有LOCAL_IN链,但在LOCAL_IN上注册了钩子函数nf_nat_fn,主要作用是修改数据包的源端口。static struct nf_ho...

2018-12-12 23:53:52 1294

原创 netfilter之nat初始化

nat功能是我们使用非常广泛,包括SNAT、DNAT,很多功能是基于NAT实现。(1)SNATSNAT简称源地址转换,比如一个公司只有一个共有IP,公司下面有许多私有设备,私有设备都分配了私有地址,私有地址不能在互联网中传递,那么就要做源地址转换,私有设备要访问互联网就会把源地址转换为公司的共有IP,通过这个共有IP访问互联网。(2)DNATDNAT简称目的地址转换,也就是把目的地...

2018-12-11 22:32:14 647

原创 netfilter链接跟踪实现之ipv4_confirm函数

ipv4_confirm函数注册在LOCAL_IN链、POST_ROUTING链,这个是netfiler的两个出口,从函数名字看得出函数的功能是链接跟踪确认,下面来分析这个函数。static struct nf_hook_ops ipv4_conntrack_ops[] __read_mostly = {... { /*数据包最后出去在POSTROUTING链上连接跟踪确认*/ ...

2018-12-11 20:51:11 1321

原创 netfilter链接跟踪实现之nf_conntrack_in函数

1、数据包方向要分析连接链接跟踪的实现我们就要先分析数据包在协议栈中的方向,总的来说主要分为三个方向:本机转发的数据包、本机接受的数据包、本机产生的数据包,我们之前分析了连接跟踪只在四个链上注册了钩子函数,分别是PRE_ROUTING链、OUT链、LOCAL_IN链、POST_ROUTING链。PRE_ROUTING链上注册的是ipv4_conntrack_in,OUT链上注册的是ipv4_c...

2018-12-10 00:02:52 3185

原创 netfilter连接跟踪初始化

连接跟踪的初始化主要有三个地方(1)连接跟踪本身初始化。(3)在对应的Hook上注册连接跟踪的处理函数。(4)初始化连接跟踪和三层协议、四层协议相关的函数。1、连接跟踪本身初始化连接跟踪本身初始化函数是nf_conntrack_net_init主要做两件事情:为连接跟踪分配slab缓冲、初始化后proc文件系统1.1、nf_conntrack_net_initnf_co...

2018-12-09 17:18:21 523

空空如也

空空如也

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

TA关注的人

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