- 博客(11)
- 收藏
- 关注
原创 Linux连接跟踪helper
1. 该技术是为了解决什么问题而引入? 对于一些比较复杂的协议,会在数据包的应用层里携带一些信息用来建立其他新的连接(比如ftp),因此就会产生了防火墙该不该放行这些新的连接数据包问题,为了解决这个问题,就给连接跟踪引入了一个特殊的helper模块, 用来检测这些信息,让防火墙能够正常的放行这些新的连接数据包。2. helper机制是如何工作的?PREROUTING:在...
2021-01-08 16:57:19 702 1
原创 GDB使用教程
1. GDB适用的场景(1) 查看代码的运行逻辑(2) 程序运行过程中,attach上去看程序的运行状态,比如bt等(3) 需要查看内存和寄存器的信息2. GCC编译参数的说明-g //编译的程序包含符号信息和debug信息不带-g //编译的程序不含debug信息,但是含有符号信息strip //strip之后的程序,不含debug信息和符号...
2020-11-27 09:24:46 203
原创 struct socket与struct sock
struct sock - network layer representation of socketsstruct socket - general BSD socketstruct inet_protosw 由l4使用,表示地址族(协议族)中某一具体协议的操作,保存在inetsw链表数组中,通过协议类型查找对应的协议操作本质上这两个结构是同一个事物的两个侧面, socket是通用...
2019-09-30 10:11:11 254
原创 IP分片
一、IP分片1. 何时分片?ip层转发报文的时候,会根据查询的路由表出接口上的mtu和报文的长度,如果报文的长度大于出接口上的MTU,则进行数据分片。2. 何时重组?接收端负责重组,因为不同的分片报文可能经过不同的路径到达目的地,所以中间没有办法重组。3. 分片的过程发送数据为1500的UDP数据包,接口MTU为1500,只有最后一个分片包里面包含UDP头部4. ...
2019-09-30 10:10:40 130
原创 CentOS 7安装kdump与crash
1. 执行yum install kexec-tools crash2. 安装kernel-debuginfo-common 与kernel-debuginfo(1) 查看自己的内核版本uname -a[linux@localhost ~]$ uname -aLinux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu N...
2019-09-30 10:08:44 339
原创 taskset命令介绍
1. 简介因为cache的影响,linux为了性能,调度器本身倾向于让同一个进程跑在同一个CPU上面,taskset可以用来设置一个已有进程或者新创建进程的CPU亲和力,可以让进程在指定的CPU上运行。2. 用法taskset mask command [arguments] //设置一个新进程的CPU亲和力taskset -p mask pid //设置指定进程的CPU亲和...
2019-09-30 10:08:03 899
原创 一次linux系统异常重启分析过程
1. 问题描述光猫下挂一个机顶盒,机顶盒通过DHCP从光猫获取地址上网,在机顶盒上面切换节目的时候,光猫出现重启,串口打印softirq: huh, entered softirq 3 NET_RX c0348f54 with preempt_count 00000101, exited with 00000302?。2. 分析解决思路(1) 根据串口的打印确认问题的原因是进入RX软...
2019-09-30 10:07:03 733
原创 连接跟踪框架代码分析
1. 什么是连接跟踪以及连接跟踪的作用 ?连接跟踪就是根据通信两端的地址(比如IP地址和端口号或者IP地址和GRE call id)来跟踪和记录连接的状态,连接跟踪是实现NAT和SPI防火墙的基础。2. 实现分析本文基于Linux 3.18.21源码, 仅分析由本机转发的包。2.1 本机转发数据包连接跟踪处理函数2.2 ipv4_conntrack_in函数2.2....
2019-09-30 10:05:27 153
原创 收包流程
(1) 协议栈将数据包排入socket的接收队列,然后唤醒持有该socket的应用程序;(2) 内核调度器调度该应用程序,将数据包从接收队列中取出。skb表示一个数据包,skb可以属于协议栈或者socket, 属于协议栈指的是它不和任何一个socket相关联,仅仅对协议栈负责,如果skb属于一个socket, 就意味着它和socket进行了绑定,所有关于它的操作都由该socket负责。...
2019-09-30 10:02:55 423
原创 点滴
1. TCP与UDP的区别TCP是面向连接,可靠,基于字节流;UDP不是面向连接,不可靠,基于数据报; 基于字节流的意思就是数据的发送和接收没有对应的次数,而UDP次数需要对应,也就是TCP你可以发送100字节数据,然后分10次,每次读取10个字节, 造成这一不同是由于TCP是面向连接的,同一个socket接收到的数据包肯定来自同一个IP和端口,但是UDP不同,别人只要知道...
2019-09-30 10:01:21 101
原创 Linux NAT源码分析
kernel源码: Linux 3.18.211. NAT核心代码框架DNAT和SNAT最终都会调用nf_nat_ipv4_fn2. nf_nat_ipv4_fn函数只有每条连接的第一个包会经过nat表,后面的包直接根据连接跟踪进行转发3.nf_nat_setup_info函数SNAT DNAT MASQUERADE等target,匹配上的时候最终都会调用nf_...
2019-09-30 09:59:45 829
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人