Linux网络
lw_yang
喜欢学习,努力工作,也享受生活,崇尚简单的快乐和幸福 ,为理想而奋斗
展开
-
利用socket raw抓包
RAW SOCKET能够对较低层次的协议直接访问,网络监听技术很大程度上依赖于它。该文介绍了利用RAW SOCKET捕获网络底层数据包的步骤和方法【原理】网卡对数据帧进行硬过滤(根据网卡的模式不同采取不同的操作,如果设置了混杂模式,则不做任何过滤直接交给下一层,否则非本机mac或者广播mac的会被直接丢弃)。在进入ip层之前,系统会检查系统中是否有通过socket(AP_PACKET,SOCK_...原创 2019-09-29 09:06:53 · 7693 阅读 · 0 评论 -
Linux-4.20.8内核桥收包源码解析(六)----------决策函数br_handle_frame_finish
作者:Sophisticated原创 2019-02-25 20:54:15 · 2283 阅读 · 0 评论 -
Linux-4.20.8内核桥收包源码解析(五)----------桥处理流程br_handle_frame
作者:Sophisticated原创 2019-02-25 19:16:33 · 2764 阅读 · 0 评论 -
Linux-4.20.8内核桥收包源码解析(三)----------网卡驱动收包
每次一个以太网帧到达时,都使用一个IRQ来通知内核。这里暗含着“快”和“慢”的概念。 对低速设备来说,在下一个分组到达之前, IRQ的处理通常已经结束。由于下一个分组也通过IRQ通知,如果前一个分组的IRQ尚未处理完成,则会导致问题,高速设备通常就是这样。现代以太网卡的运作高达10 000 Mbit/s,如果使用旧式方法来驱动此类设备,将造成所谓的“中断风暴”。如果在分组等待处理时接收到新的IRQ...原创 2019-02-19 18:49:02 · 1905 阅读 · 1 评论 -
Linux-4.20.8内核桥收包源码解析(二)----------sk_buff的操作
作者:Sophisticated原创 2019-02-18 19:26:07 · 1884 阅读 · 0 评论 -
Linux-4.20.8内核桥收包源码解析(一)----------sk_buff(详细)
网络子系统中用来存储数据的缓冲区叫做套接字缓存,简称SKB,可处理变长数据,尽量避免数据的复制。每一个SKB都在设备中标识发送报文的目的或接受报文的来源地,主要用于在网络驱动程序和应用程序直接传递复制数据包。当应用程序要发送一个数据包,数据通过系统调用提交到内核,系统分配一个SKB来存储数据,然后往下层传递,在传递到网络驱动后才将其释放。当网路设备接受到数据包,同样分配一个SKB来存储数据,...原创 2019-02-18 14:43:51 · 3039 阅读 · 3 评论 -
Linux-4.20.8内核桥收包源码解析(四)----------netif_receive_skb
作者:Sophisticated原创 2019-02-21 20:46:20 · 3736 阅读 · 1 评论 -
sk_buff封装和解封装网络数据包的过程详解
可以说sk_buff结构体是Linux网络协议栈的核心中的核心,几乎所有的操作都是围绕sk_buff这个结构体进行的,它的重要性和BSD的mbuf类似(看过《TCP/IP详解 卷2》的都知道),那么sk_buff是什么呢? sk_buff就是网络数据包本身以及针对它的操作元数据。 ...转载 2018-12-07 16:40:40 · 863 阅读 · 0 评论 -
利用netfilter抓包(二)----------抓包函数的实现
本篇文章使用netfilter实现抓包并进行简单数据包的解析eth_hdr, ip_hdr,tcp_hdr分别是用过skb取以太网头部,ip头部,tcp头部ntohs将网络字节序转换为主机字节序由于内核中没有inet_ntoa函数,所以自己写了个函数将int的ip地址转换为点分十进制格式的ip地址先转换为主机字节序ntohl(iphdr->daddr),然后将int类型的ip地址转...原创 2019-09-29 09:06:14 · 2549 阅读 · 5 评论 -
利用netfilter抓包(一)----------netfilter介绍
Netfilter是Linux 2.4.x引入的一个子系统,它作为一个通用的、抽象的框架,提供一整套的hook函数的管理机制,使得诸如数据包过滤、网络地址转换(NAT)和基于协议类型的连接跟踪成为了可能。Netfilter在内核中位置如下图所示:netfilter的架构就是在整个网络流程的若干位置放置了一些检测点(HOOK),而在每个检测点上登记了一些处理函数进行处理。IP层的五个HOOK...原创 2018-10-30 15:16:40 · 3405 阅读 · 1 评论 -
利用libpcap抓包(四)----------抓包主函数的实现
main函数的实现,调用libpca提供的库函数,抓取数据包,然后交给回调函数进行对数据包的解析/****************************************************************************** 文 件 名 : packetAnalyze.c 版 本 号 : V1.1 负 责 人 : Sophisticated...原创 2019-09-29 09:06:27 · 1620 阅读 · 2 评论 -
利用libpcap抓包(三)----------数据包解析函数的实现
下面是对抓取到的数据包进行解析,分2层以太网的解析,3层ip,icmp的解析,4层tcp,udp的解析/****************************************************************************** 文 件 名 : callback.c 版 本 号 : V1.1 负 责 人 : Sophisticated ...原创 2019-09-29 09:06:34 · 5402 阅读 · 7 评论 -
利用libpcap抓包(二)----------网络数据包头结构定义
这里在head.h的头文件中定义了以太网,IP, PPPOE, ARP, TCP, UDP 等数据包头部的结构体,以便于对数据包进行解析,其实在库中有已经定义好的各个数据包头部,像ethhdr,iphdr,tcphdr等,这里自己写一遍可以加深对网络数据包的理解。/******************************************************************...原创 2019-09-29 09:06:40 · 2001 阅读 · 2 评论 -
利用libpcap抓包(一)----------libpcap基本使用
libpcap安装先安装flex,bisonyum -y install flexyum -y install bison下载libpcap源码并解压,再输入如下命令./configuremakemake installlibpcap常用函数int pcap_findalldevs(pcap_if_t **alldevsp, char *errbuf);查找所有可用的网络...原创 2019-09-29 09:06:47 · 5335 阅读 · 3 评论 -
NetLink详解
Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由daemon(NETLINK_ROUTE),1-wire 子系统(NETLINK_W1),用户态 socket协议(NETLINK_USER...转载 2018-10-22 15:02:07 · 5150 阅读 · 0 评论 -
Linux-4.20.8内核桥收包源码解析(七)----------本地(br_pass_frame_up)or 转发(br_forward)
作者:Sophisticated原创 2019-02-26 11:00:17 · 2955 阅读 · 3 评论