概述
#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
}
最后
以上就是文艺香菇为你收集整理的协议栈开发的全部内容,希望文章能够帮你解决协议栈开发所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复