打印IP地址以及网络数据包的方式
来源:互联网 发布:java求1到200内的素数 编辑:程序博客网 时间:2024/05/18 09:10
打印网络数据包的方式
if (skb && skb->input_dev && (skb->srcPhyPort == 4))
{
char *buf = skb->data;
int len = skb->len;
int i;
printk("[%s:%d]Packet length = %#4x\n", __FUNCTION__, __LINE__, len);
for (i = 0; i < len; i++){
if (i % 16 == 0) printk("%#4.4x", i);// 打印行号
if (i % 2 == 0) printk(" "); // 给每个数字之间添加一个空格
printk("%2.2x", ((unsigned char *)buf)[i]);// 打印一个字节的数字
if (i % 16 == 15) printk("\n"); // 每行只存放15个数字,超过15个就换行
}
printk("\n\n\n\n");
}
在内核中打印IP地址(收到的网络数据包的IP地址是网络字节序的,网络字节序是以大端格式存放的):
#define NIPQUAD(addr) \
((unsigned char *)&addr)[0], \
((unsigned char *)&addr)[1], \
((unsigned char *)&addr)[2], \
((unsigned char *)&addr)[3]
#define NIPQUAD_FMT "%u.%u.%u.%u"
printk("masq_inet_event:(%s): %u.%u.%u.%u, errno=%d\n", "add_natip",
NIPQUAD(ina->ifa_local), rc);
// 想想为什么宏打印是从位置0开始打印,先从位置3开始打印会是怎么样
在内核中打印MAC地址的方式
在内核协议栈中dev_queue_xmit函数中获取传入数据包得报文信息:
struct iphdr * iph;
struct tcphdr *tcph;
unsigned char src_eth_addr[ETH_ALEN],dst_eth_addr[ETH_ALEN];
struct ethhdr *oeth;
__be32 src_addr,dst_addr;
__be16 src_port,dst_port;
u32 tcplen;
iph = ip_hdr(skb);
if (skb->mac_header != NULL)
{
oeth = (struct ethhdr *)skb->mac_header;
memcpy( src_eth_addr, oeth->h_source, ETH_ALEN );
memcpy( dst_eth_addr, oeth->h_dest, ETH_ALEN );
printk("sport=%d dport=%d\n",src_port,dst_port);
printk("srcmac=%02x02x%02x%02x%02x%02x dstmac=%02x%02x%02x%02x%02x%02x",
src_eth_addr[0],src_eth_addr[1],src_eth_addr[2],src_eth_addr[3],
src_eth_addr[4],src_eth_addr[5],dst_eth_addr[0],dst_eth_addr[1],
dst_eth_addr[2],dst_eth_addr[3],dst_eth_addr[4],dst_eth_addr[5]);
}
tcph = (struct tcphdr *)((u_int32_t *)iph + iph->ihl);
dst_addr = iph->daddr;
src_addr = iph->saddr;
printk("src_addr=%08x dst_addr=%08x",src_addr,dst_addr);
// tcp
src_port = tcph->source;
- 打印IP地址以及网络数据包的方式
- 数据包传输过程中MAC地址以及IP地址的变化情况
- 数据包传输过程中MAC地址以及IP地址的变化情况
- 数据包传输过程中MAC地址以及IP地址的变化情况
- 网络层—IP地址的三种分类方式
- TCP/IP 网络 数据包
- TCP/IP 网络数据包
- 获取网络的IP地址
- 网络IP地址的分类
- 03-打印访问者的IP地址
- tcp/ip网络各层数据包的长度
- 找出ip数据包在网络中经过的路由
- C# 获取适配器网络连接IP地址,子网掩码,DNS,数据包等信息
- 网络请求发送不过去,找错用抓包:wireshark捕获指定ip地址数据包
- 配置Linux的eth0网卡设置IP地址以及启动方式
- Linux网络服务和网络配置文件以及IP地址相关的解释
- 安装虚拟机时想到的一些关于IP地址及网络连接方式问题
- 共有IP和私有IP以及IP地址的分类
- JNI学习
- secureCRT同时向多个打开的seesion发送命令(多个服务器、统一命令)
- C#(ASP.Net)获取当前路径的方法集合
- MS Project 2013 修改项目名称
- java的深克隆与浅克隆
- 打印IP地址以及网络数据包的方式
- openstack 中API类型
- 结构体类型与枚举类型
- c++基础——const限定符
- hdu2084数塔
- C语言变量内存分布
- 字符串面试题系列之六:在字符串中删除特定的字符
- Windows 8 Tools - windows 8 小工具有大功能,帮你轻松搞定新系统
- 状态模式