`
shaojiashuai123456
  • 浏览: 262206 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

网络开发常用结构体

阅读更多

(1)

struct ethhdr {
     unsigned char   h_dest[ETH_ALEN];   /* destination eth addr */
     unsigned char   h_source[ETH_ALEN]; /* source ether addr    */
     __be16      h_proto;                /* packet type ID field */
 } __attribute__((packed));

 

(2)

struct iphdr {
  #if defined(__LITTLE_ENDIAN_BITFIELD)
    __u8    ihl:4,
        version:4;
  #elif defined (__BIG_ENDIAN_BITFIELD)
     __u8    version:4,
         ihl:4;
  #else
  #error  "Please fix <asm/byteorder.h>"
  #endif
     __u8    tos;
     __be16  tot_len;
     __be16  id;
     __be16  frag_off;
     __u8    ttl;
     __u8    protocol;
     __u16   check;
     __be32  saddr;
     __be32  daddr;
     /*The options start here. */
};

 

(3)
struct tcphdr {
     __u16   source;
     __u16   dest;
     __u32   seq;
     __u32   ack_seq;
 #if defined(__LITTLE_ENDIAN_BITFIELD)
     __u16   res1:4,
         doff:4,
         fin:1,
         syn:1,
         rst:1,
         psh:1,
         ack:1,
         urg:1,
         ece:1,
         cwr:1;
 #elif defined(__BIG_ENDIAN_BITFIELD)
     __u16   doff:4,
         res1:4,
         cwr:1,
         ece:1,
         urg:1,
         ack:1,
         psh:1,
         rst:1,
         syn:1,
         fin:1;
 #else
 #error  "Adjust your <asm/byteorder.h> defines"
 #endif
     __u16   window;
     __u16   check;
     __u16   urg_ptr;
};

 

(4)

struct udphdr {
     __u16   source;
     __u16   dest;
     __u16   len;
     __u16   check;
};

 

 (5)

struct sk_buff  如图所示: 

 

     (6)

         注册一个hook函数是围绕nf_hook_ops数据结构的一个非常简单的操作,nf_hook_ops数据结构在linux/netfilter.h中定义,该数据结构的定义如下:

          struct nf_hook_ops {
                  struct list_head list;

                  /* 此下的值由用户填充 */
                  nf_hookfn *hook;
                  int pf;
                  int hooknum;
                  /* Hook以升序的优先级排序 */
                  int priority;
          };

      (7)

   struct sockaddr {   
 
              unsigned short    sa_family; /* 地址族, AF_xxx */

              char sa_data[14]; /* 14 字节的协议地址 */
              
               };

            sa_family一般为AF_INET,代表Internet(TCP/IP)地址族;
 
              sa_data则包含该socket的IP地址和端口号。

  (8)
另外更有一种结构类型:   

            struct sockaddr_in {   
     
                             short int sin_family; /*
地址族 */

                           unsigned short int sin_port; /* 端口号 */   

                             struct in_addr sin_addr;/* IP地址 */   

                             unsigned char sin_zero[8]; /* 填充0 以保持和struct sockaddr同样大小*/   

                            };   这个结构更方便使用。sin_zero用来将sockaddr_in结构填充到和struct
  

           (9)

 

                  struct in_addr {
                         unsigned long s_addr;
                  };

           (10)

107 struct ipv6hdr {
108 #if defined(__LITTLE_ENDIAN_BITFIELD)
109         __u8                    priority:4,
110                                    version:4;
111 #elif defined(__BIG_ENDIAN_BITFIELD)
112         __u8                    version:4,
113                                    priority:4;
114 #else
115 #error  "Please fix <asm/byteorder.h>"
116 #endif
117         __u8                    flow_lbl[3];
118
119         __be16                payload_len;
120         __u8                    nexthdr;
121         __u8                    hop_limit;
122
123         struct  in6_addr        saddr;
124         struct  in6_addr        daddr;
125 };

  • 大小: 182.3 KB
分享到:
评论

相关推荐

    winsock收发结构体

    Winsock遵循Berkeley套接字接口标准,使得在Windows平台上开发网络应用变得更加便捷。 在C/S架构中,客户端与服务器之间的通信通常涉及数据的发送和接收。这些数据往往通过特定的数据结构来传递,也就是这里的...

    linux网络协议开发文档.doc

    - **常用结构体**:如`struct ethhdr`,它是以太网帧头部的定义,包含源和目标MAC地址以及协议类型。 - **处理函数**:`eth_hdr()`函数用于获取以太网头部信息,对数据包进行解封装。 - **调试打印**:在开发过程...

    网络编程常用函数

    本文将详细解析在VC环境下进行网络编程时常用的函数,包括SOCKET类型、WORD类型及其宏、WSADATA类型、WSAStartup和WSACleanup函数,以及socket和setsockopt函数。 首先,`SOCKET`类型是网络编程中的基础,它被定义...

    Linux嵌入式开发+C语言+Makefile+网络编程+驱动开发+系统移植

    驱动开发部分涵盖了驱动的内核代码、驱动程序、设备文件等多个方面,涉及了常用的设备驱动框架和API函数。 文档的框架部分内容已经填充完整,但是我总结好的并不是大家的,自己总结的才是真正属于自己的知识,所以...

    linux驱动开发文档笔记

    在网络设备驱动开发中,struct net_device 是一个非常重要的结构体。 5. 内核驱动常用处理函数 在 Linux 驱动开发中,需要使用一些基本的处理函数来操作硬件设备。这些函数包括: 5.1 dev_name() dev_name() ...

    matlab故障检测人脸识别等专题研究:5 深入学习结构体.zip

    常用的人脸识别方法包括Eigenface、Fisherface和深度学习的卷积神经网络(CNN)。MATLAB的Deep Learning Toolbox支持搭建和训练CNN模型,进行端到端的人脸识别系统开发。 3. **深入学习结构体**:在MATLAB中,...

    软件开发常用英文词汇

    ### 软件开发常用英文词汇详解 #### abstract 抽象的 - **定义**:在计算机科学中,“抽象”是指将复杂系统简化为更基本元素的过程,以便于理解和操作。 - **应用场景**:通常用于设计模式、面向对象编程等。 ####...

    linux驱动开发_嵌入式-常用知识&面试题库_大厂面试真题.docx

    "Linux 驱动开发_嵌入式-常用知识&面试题库_大厂面试真题" 本资源主要介绍了 Linux 驱动开发的常用知识点和面试题库,涵盖了驱动开发的基本概念、字符设备驱动开发、驱动模块的加载和卸载、设备号的分配和管理、...

    Linux网络体系架构和网卡驱动设计.pdf

    这是一个常用的10/100M自适应网络控制器驱动程序,通常用于嵌入式系统。dm9000驱动程序包括了初始化函数、中断处理程序以及用于数据包发送和接收的具体操作。 此外,Linux内核还提供了内存管理功能,如dev_alloc_...

    计算机网络 监控IP包流量

    ws2_32库提供了对网络编程的支持,常用于网络应用程序的开发。 11. 对象指针:对象指针是指指向对象的指针。在本例中,使用对象指针来指向IP结点,以便对IP结点进行管理和操作。 12. 析构函数:析构函数是指对象...

    网络编程常用函数接口

    【网络编程常用函数接口】是计算机科学中进行网络通信的核心组成部分,主要涉及操作系统提供的系统调用,用于创建、管理和操作套接字。这些函数接口在跨平台的软件开发,特别是涉及网络服务和通信的应用程序中至关...

    linux网络驱动程序开发实例分析分类

    ### Linux网络驱动程序开发实例分析分类 #### 一、Linux系统设备驱动程序概述 ##### 1.1 Linux设备驱动程序分类 Linux设备驱动程序在Linux内核中占据着极其重要的位置,随着Linux内核版本的不断演进和发展,驱动...

    Linux网络编程超级详细笔记

    Linux网络编程超级详细笔记中涉及的知识点包括了Linux网络编程的基础概念、网络编程相关命令以及网络编程中初等函数的使用方法。 首先,在Linux网络编程的基础...这些知识点对于掌握Linux下网络应用的开发至关重要。

    visual c++实现断网-禁用网卡,禁用网络.zip

    在IT领域,编程语言Visual C++(VC++)被广泛用于开发系统级应用程序,它可以访问操作系统的底层功能,包括对硬件设备的控制和网络接口的管理。标题和描述中的"vc实现禁用网卡,禁用网络"指的是利用VC++编写程序来...

    基于winpcap的网络数据采集器的实现

    winpcap是一个开源的网络数据包捕获和网络监控系统,广泛应用于网络安全、性能监控以及网络协议开发等领域。本项目的核心目标是设计并实现一个能够在网络中抓取数据包,并对这些数据包进行深度解析的工具。 首先,...

    嵌入式linux软件开发、嵌入式linux驱动开发、c语言、单片机开发、IOT开发等面试要点记录.zip

    开发过程中,可能需要编写字符设备驱动、块设备驱动或网络设备驱动。关键技能包括阅读并理解硬件数据手册,以及熟悉Linux内核API。 3. **C语言**: C语言是嵌入式领域的基础,因为它提供了低级内存操作和直接硬件...

    C开发的游戏

    - 基于轴对齐边界框(AABB)的简单碰撞检测是游戏开发中的常用技术,C语言中可通过比较物体边界坐标实现。 5. **网络编程**: 多人在线游戏需要网络编程技术,如TCP/IP协议栈、套接字编程,C语言提供了底层接口来...

    ARM开发详解.pdf

    C语言是ARM开发中最常用的编程语言,因为它的效率高且移植性好。理解C语言的关键特性,如指针、内存管理、中断服务程序和结构体,对于有效利用ARM硬件资源至关重要。同时,理解如何进行位操作和嵌套中断处理也是ARM...

Global site tag (gtag.js) - Google Analytics