
网络协议
文章平均质量分 91
网络安全研发随想
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
网卡收发报文流程--linux内核协议栈 vs DPDK
现代网卡(如Intel X710)通常包含以下核心组件:● DMA引擎:负责将数据包直接搬运至内存,绕过CPU。● 接收/发送描述符环(RX/TX Ring):环形队列存储描述符,每个描述符指向内存中的数据包缓冲区。原创 2021-01-13 13:12:02 · 4974 阅读 · 0 评论 -
dpdk的无锁环形队列Ring
1. DPDK Ring简介dpdk实现了一个无锁环形队列Ring,可用户不通dpdk不通应用程序之间进行通信。Ring支持的效果:先进先出最大大小是固定的,指针存储在表中无锁实现多消费者或单消费者出队多生产者或单生产者入队struct rte_ring {原创 2020-08-24 17:22:53 · 1723 阅读 · 1 评论 -
dpdk开发快速入门
1. dpdk概述DPDK的主要目标是为数据平面应用程序中的快速数据包处理提供一个简单,完整的框架。用户可以在其基础上进行原型设计或添加他们自己的协议栈。该框架通过创建环境抽象层(EAL)为特定环境创建了一组库创建EAL库后,用户可以与该库链接以创建自己的应用程序还提供了EAL之外的其他库,包括哈希,最长前缀匹配(LPM)和ring库提供了示例应用程序,以帮助向用户展示如何使用DPDK的各种功能2. 环境抽象层(EAL库)环境抽象层(EAL)提供了一个通用接口,该接口对应用程序和库隐藏了特定于环境原创 2020-08-24 16:45:37 · 5986 阅读 · 1 评论 -
Linux策略路由--原理、配置和应用
1. 策略路由简介对比传统的基于数据包目的地址的路由算法,基于策略的路由算法更加灵活。策略路由算法引入了多路由表以及规则的概念,支持按数据报属性(源地址、目的地址、协议、端口、数据包大小、内容等规则)选择不同路由表。Linux是在内核2.1开始采用策略性路由机制的。2. 策略路由原理2.1 多路由表(multiple Routing Tables)传统的路由算法是仅使用一张路由表的。但...原创 2019-12-31 18:45:40 · 7427 阅读 · 0 评论 -
snmp基本介绍--理解OID/MIB/snmp报文类型/snmp版本
简单网络管理协议(SNMP-Simple Network Management Protocol) 是一个与网络设备交互的简单方法。一个网络设备以守护进程的方式运行SNMP代理,该守护进程能够响应来自网络的各种请求信息。OIDOID(对象标识符),是SNMP代理提供的具有唯一标识的键值。OID看起来和一个IPv6的地址很象,并且不同的厂商有不同的前缀等信息。比如交换机常用SNMP OID:...原创 2019-05-31 18:17:29 · 3592 阅读 · 0 评论 -
交换机的级联、堆叠和集群
在多交换机的局域网环境中,交换机的级联、堆叠和集群是3种重要的技术。级联技术可以实现多台交换机之间的互连;堆叠技术可以将多台交换机组成一个单元,从而提高更大的端口密度和更高的性能;集群技术可以将相互连接的多台交换机作为一个逻辑设备进行管理,从而大大降低了网络管理成本,简化管理操作。1. 级联级联可以定义为两台或两台以上的交换机通过一定的方式相互连接。城域网是交换机级联的极好例子。目前各...转载 2019-05-31 17:34:13 · 15987 阅读 · 2 评论 -
TCP协议参数优化
TCP 协议是由操作系统实现的,调整 TCP 必须通过操作系统提供的接口和工具。这就需要理解 Linux 是怎样把三次握手中的状态暴露给我们,以及通过哪些工具可以找到优化依据,并通过哪些接口修改参数。1. TCP 三次握手和优化参数1.1 tcp_syn_retries(syn重传)三次握手建立连接的首要目的是同步序列号。只有同步了序列号才有可靠的传输,TCP 协议的许多特性都是依赖序列号实现的,比如流量控制、消息丢失后的重发等等,这也是三次握手中的报文被称为 SYN 的原因。三次握手虽然由操作系原创 2020-07-12 19:15:23 · 3904 阅读 · 0 评论 -
Linux内核套接字(Socket)的设计与实现
套接字是UNIX兼容系统的一大特色,是UNIX一切皆是文件操作概念的具体实现。Linux在此基础上实现了内核套接字与应用程序套接字接口,在用户地址空间与内核地址空间之间提供了一套标准接口,实现应用套接字库函数与内核功能之间的一一对应。1. 套接字和管理套接字的数据结构在Linux中定义了一系列的数据结构来描述套接字本身、套接字传送的数据格式、套接字的属性和管理套接字连接状态的数据结构。管...原创 2020-04-26 18:31:46 · 2008 阅读 · 0 评论 -
linux内核对TCP的连接状态管理
TCP协议实例连接状态存放在struct sock数据结构的state数据域中。当TCP协议实例连接处于不同状态时,对数据包的处理不一样,所以每个输入的数据包都要来查询TCP状态机,整个状态机制划分成3个阶段:第一阶段:连接建立阶段。第二阶段:数据传送阶段。第三阶段:断开连接阶段。1. TCP建立连接(tcp_v4_connect)tcp_v4_connect 函数将初始化一个对外...原创 2020-04-26 13:07:19 · 2624 阅读 · 0 评论 -
Linux内核中TCP协议实现的关键数据结构
1. TCP协议头tcphdrTCP协议头描述了TCP数据段发送的源地址、目标地址、数据段传送管理和连接管理的信息,是TCP协议实现的重要数据结构之一。struct tcphdr { __be16 source; __be16 dest; __be32 seq; __be32 ack_seq;#if defined(__LITTLE_ENDIAN_BITFIELD) __u16 r...原创 2020-04-26 10:58:54 · 1183 阅读 · 0 评论 -
linux内核中TCP接收的实现
linux内核中TCP接收的实现入口函数是tcp_v4_rcv1. 数据包检查处理一开始做一些数据包详细检查处理,一旦出错,可能导致内核挂掉int tcp_v4_rcv(struct sk_buff *skb){ const struct iphdr *iph; struct tcphdr *th; struct sock *sk; int ret; struct net *ne...原创 2020-04-24 18:29:28 · 1339 阅读 · 0 评论 -
linux内核中TCP发送的实现
1. 初始化static int __init inet_init(void){ /*...*/ /* Register the socket-side information for inet_create. */ for (r = &inetsw[0]; r < &inetsw[SOCK_MAX]; ++r) INIT_LIST_HEAD(r); for ...原创 2020-04-24 17:27:41 · 2381 阅读 · 0 评论 -
suricata架构——数据结构和代码流程图解
Suricata是一款高性能网络入侵检测防御引擎。该引擎基于多线程,充分利用多核优势。数据结构流程参考:https://suricata.readthedocs.iohttp://www.hyuuhit.com/categories/suricata/https://blog.csdn.net/weixin_34253126/article/details/86442134htt...原创 2019-11-12 16:20:20 · 7485 阅读 · 0 评论 -
wireshark协议插件开发--官方文档中文翻译
1. 工作机制每个解剖器(dissector )解码其协议的一部分,然后将解码交给后续解剖器以获得封装协议。每个解剖都从Frame解剖器开始,它解剖捕获文件本身的数据包细节(例如时间戳)。从那里它将数据传递给最低级别的数据解剖器,例如以太网头部的以太网解剖器。然后将有效载荷传递给下一个解剖器(例如IP),依此类推。在每个阶段,将解码和显示分组的细节。解剖可以以两种可能的方式实施。一种是将解剖...原创 2018-11-06 15:57:03 · 3734 阅读 · 1 评论 -
tcp状态转换--三次握手/四次挥手
TIME_WAIT简介TIME_WAIT通常也称为2MSL等待状态。这是因为切换到TIME_WAIT状态的socket会保持2倍的最大段生命周期(MSL)的延迟时间。MSL是TCP协议数据报中,任意一段数据在网络上被丢弃之前保持可用的最大时间。这个时间使用用于传输TCP段的IP数据报中的TTL字段进行设置,不同的实现为MSL设置了不同的值,通常为 30s,一分钟 或者 两分钟 。TIME_W...原创 2018-11-13 11:23:57 · 276 阅读 · 0 评论 -
tcp段重组--suricata实现
tcp协议上的应用层协议检测时,需要做数据重组,这里简单介绍reassembly逻辑。tcp处理的相关配置初始化位于main -&amp;amp;gt; PostConfLoadedSetup -&amp;amp;gt; PreRunInit -&amp;amp;gt; StreamTcpInitConfig。tcp reassembly的主体逻辑在FlowWorker -&amp;amp;gt; StreamTcp中。TCP 状态机&a原创 2018-11-08 15:54:37 · 7562 阅读 · 1 评论 -
记住,TCP是一种流协议
TCP是一种流协议(stream protocol)。这就意味着数据是以字节流的形式传递给接收者的,没有固有的”报文”或”报文边界”的概念。从这方面来说,读取TCP数据就像从串行端口读取数据一样–无法预先得知在一次指定的读调用中会返回多少字节。为了说明这一点,我们假设在主机A和主机B的应用程序之间有一条TCP连接,主机A上的应用程序向主机B发送一条报文。进一步假设主机A有两条报文要发送,并两次...原创 2018-11-08 18:09:38 · 2559 阅读 · 3 评论 -
基于tcp的应用层协议还原
基于tcp的应用层协议还原技术是网络安全每个领域都需要的一种基础技术。首先,我们需要认识到tcp协议的两个特征:tcp是一种流协议。发送者以字节流的形式传递给接收者。tcp协议本身没有固有的”报文”或”报文边界”的概念。(参考:https://blog.csdn.net/gengzhikui1992/article/details/83865596)tcp协议的特征1意味着,在还原...原创 2019-01-13 17:39:50 · 2393 阅读 · 0 评论 -
像目标主机一样的tcp流重组
介绍在他们具有里程碑意义的1998年论文“插入,逃避和拒绝服务:躲避网络入侵检测”中,1 Thomas Ptacek和Timothy Newsham暴露了入侵检测系统(IDS)的一些弱点。作者表示,入侵检测系统不能有效和准确,因为它们不一定处理,甚至可能甚至不像接收消息的目标主机那样观察网络流量。该缺陷存在于包括IP,TCP和应用层的分组的多个评估和处理层中。作为问题的示例,请考虑具有重叠发送...原创 2019-01-28 11:11:42 · 844 阅读 · 0 评论 -
linux内核网络子系统收发过程剖析
整体流程接收流程中断vs软中断驱动和网卡接收缓冲区发送流程驱动和网卡发送缓冲区参考:http://blog.jobbole.com/86656/https://github.com/run/kernel-tcp/blob/master/pdf资料/网络子系统在链路层的收发过程剖析.pdf...原创 2019-02-27 11:24:33 · 564 阅读 · 0 评论 -
windows常见端口和协议--SMB(445)-NETBIOS(137-138-139)
Windows常见端口Windows一般开放udp_137, udp_138, tcp_139, tcp_445端口。服务端口描述NetBIOS名称服务(NBNS)UDP 137NBNS也称为Windows Internet名称服务(WINS)。NBNS的工作是将IP地址与NetBIOS名称匹配,并允许查询匹配。名称服务通常是第一个受到攻击的服务。访问者将需要它...原创 2019-04-10 14:57:27 · 46226 阅读 · 0 评论 -
TCP流量控制、拥塞控制
流量控制什么是流量控制?流量控制的目的?如果发送者发送数据过快,接收者来不及接收,那么就会有分组丢失。为了避免分组丢失,控制发送者的发送速度,使得接收者来得及接收,这就是流量控制。流量控制根本目的是防止分组丢失,它是构成TCP可靠性的一方面。如何实现流量控制?由滑动窗口协议(连续ARQ协议)实现。滑动窗口协议既保证了分组无差错、有序接收,也实现了流量控制。主要的方式就是接收方返回的 ACK...原创 2019-04-09 11:49:18 · 15319 阅读 · 3 评论 -
移动和云环境下的报文传输流程--理解DNS解析、CDN资源下发、公网传输流程、数据中心网络
DNS解析手机打开app时,首先需要解析网站的域名。在手机运行商所在的互联网区域中,有一个本地DNS,手机向本地DNS请求解析DNS。如果本地DNS有缓存,则直接返回;如果本地DNS没有缓存,则递归从根DNS服务器查找,最终查到权威DNS服务器。如果云平台配置了 智能DNS和全局负载均衡 ,在权威DNS服务中,通过配置CNAME,比如vip.youcompany.com。然后告诉本地DN...原创 2019-04-19 15:29:00 · 788 阅读 · 0 评论 -
云计算底层技术--linux上的虚拟网络设备
Linux 用户想要使用网络功能,不能通过直接操作硬件完成,而需要直接或间接的操作一个 Linux 为我们抽象出来的虚拟网络设备来完成。一个常见的情况是,系统里装有一个硬件网卡,Linux 会在系统里为其生成一个网络设备实例,如 eth0,用户需要对 eth0 发出命令以配置或使用它了。随着网络技术,虚拟化技术的发展,更多的虚拟网络设备被加入了到了 Linux 中。这些虚拟网络设备作为云计算的...原创 2019-07-18 15:31:04 · 756 阅读 · 0 评论 -
路由协议
1. 路由协议穿梭在互联网中的一个个IP包,如同高速公路上的一辆辆小汽车,如何到达目的地呢?对于汽车大家都很熟悉,即使不知道目的地,也有电子导航可以带领我们到达目的地,那IP包是不是也需要类似的导航信息呢?是的,在IP包进入互联网的那一刻,导航信息已经在路上,静静地等待着IP包的到来,在每一个通向目的地的路由器上,只要查询IP包中的目的地地址,就可以查询导航信息(路由表)来决定最近的路线,就这样...转载 2018-11-06 13:40:39 · 1138 阅读 · 0 评论