TFTP源码 学习笔记

本文详细介绍了TFTP协议的数据接收和发送流程,涉及sk_buff结构及其操作,如skb_push、skb_pull、skb_reserve和skb_put。在接收过程中,数据从以太网帧到TFTP协议的解析;发送时,通过预留协议头空间,构建TFTP响应,并通过UDP、IP及以太网层层传递。
摘要由CSDN通过智能技术生成

.sk_buff的结构和操作:

struct sk_buff {

unsigned char pad[2];
unsigned char buf[ETH_FRAME_LEN];//buffer,这里是帧存储的位置
unsigned int truesize;    /* Buffer size       */

unsigned char *data;    /* Data head pointer     */这个指针总是指向当前层协议头在buf中的位置或者当前层协议数据部分在buf中的位置。
unsigned int len;    /* Length of actual data    */指示从*data位置到帧尾的length
};

buf[ETH_FRAME_LEN] 就是一帧实体,也是一帧协议栈的栈的实体。*data 是栈的指针,len则相当栈的底部,但是它是变化的,意义是*data到*data+len部分是当前协议层的内容(接收),或者这部分是已经填好的上层协议内容(发送)。 对应的操作有skb_push,skb_pull。

skb_push 用于从上层协议向下封装数据包,相当于压栈。char *skb_pull(struct sk_buff *skb, unsigned int ln) 就是要向栈中写入len字节前,先把栈指针*data-=ln, 而栈长len+=ln,返回当前*data指针,数据或者协议头(长度一定是ln)就可以往*data处填充

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要下载Linux TFTP源码,您可以按照以下步骤进行操作: 1. 首先,您需要找到最新的TFTP源码文件。根据引用提供的信息,您可以在网上搜索并找到版本为tftp-hpa-0.49.tar.gz的源码文件。 2. 下载源码文件到您的Linux系统中的任意目录。 3. 解压缩源码文件。您可以使用以下命令来解压缩tar.gz文件: ``` tar -zxvf tftp-hpa-0.49.tar.gz ``` 这将在当前目录下创建一个新的文件夹,其中包含TFTP源码文件。 4. 进入解压缩后的源码文件夹: ``` cd tftp-hpa-0.49 ``` 5. 编译和安装TFTP源码。一般而言,您可以使用以下命令进行编译和安装: ``` ./configure make sudo make install ``` 这将根据您的系统配置和设置自动进行编译和安装。请确保您拥有足够的权限来执行`sudo make install`。 6. 安装完成后,您就可以在您的Linux系统中使用TFTP了。 请注意,这里提供的步骤仅供参考,具体的步骤可能会因为不同的Linux发行版和TFTP源码版本而有所差异。建议您在下载和安装过程中查阅相应的文档和参考资料,以确保正确完成操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [tftp-hpa-0.49源码(内含tftptftpd)](https://download.csdn.net/download/u012459550/85820667)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Linux&C语言简单实现客户端使用TFTP协议文件下载-网络编程-应用层](https://blog.csdn.net/qq_47355554/article/details/124765015)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值