协议栈开发

 

 

#include<stdio.h>

// 以太网帧头封装 18字节头部
#define ETH_LENGTH 6  //宏定义以太网帧长6字节;目的Mac地址和源Mac地址 
 struct ethdr{
     unsigned char h_dest[ETH_LENGTH];
     unsigned char h_src[ETH_LENGTH];
     unsigned short proto;
 }; 
// ip头部20—60字节
 struct iphdr{
     unsigned char version:4;
                   hdrlen:4;
     unsigned char tos;
     unsigned short total_len;
     
     unsigned short id;
     unsigned short flag:3;  // 3位标志位 
                    offset:13;  //13位片偏移
                    
    unsigned ttl; // Linux默认64跳,window255跳 
    unsigned char protocol; // 8位协议位,表示传输层具体协议
    unsigned short check; //  16位 
     
    unsigned int sip;// 32位 源ip地址 
    unsigned int dip; // 32位 目的ip地址 
    
 }? end iphdr ?;
 
// 8字节udp头部 
struct udphdr{    
    unsigned short sport; // 2字节源端口号 
    unsigned short dport; // 2字节目的端口号 
    unsigned short len; // 2字节udp长度 
    unsigned short check; // 2字节校验 
};

struct udppkt{
    
    struct ethhdr eh;
    struct iphdr ip;
    struct udphdr udp;
    unsigned char body[0]; // 定义一个柔性数组 
            
};

int main(){
    struct ethhdr "eh;
    struct nm_desr

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值