协议设计:可变长帧的实现  

/*  
 *Author  : DavidLin         
 *Date    : 2014-12-25pm         
 *Email   : [email protected] or [email protected]         
 *world   : the city of SZ, in China         
 *Ver     : 000.000.001         
 *For     : threads for rxtx!      
 *history :     editor      time            do         
 *          1)LinPeng       2014-12-25      created this file!         
 *          2)         
 */  
        
    信令帧,数据帧的长度不同,不同数据帧之间的长度更是千差万别,所以通讯协议中,帧的可变长实现是有重要的现实意义的。
如何实现:
        1.通过帧尾部的移位;
        2.逐层增加长度项。

比如有2层协议
typedef struct net_packet_t {
    ip_packet_t    ip;
    size_t    size;    //用于获取ip包长度
};

typedef struct ip_packet_t {
    char head;
    char pay[MAX];    //需要移位变长
    size_t chksum;
    char tail;
};

phy_tx(&net,  net.size);    //发送格式,根据帧实际长度发送

协议设计:可变长帧的实现

时间: 2024-10-22 03:11:48

协议设计:可变长帧的实现  的相关文章

可变长子网掩码 VLSM

2014-05-05 17:26:08 标签:IP地址 路由器 技术部 路由表 长子 VLSM的介绍: VLSM(VLSM(Variable Length Subnetwork Mask,可变长子网掩码) 是为了有效的使用CIDR(无类别域间路由)和路由汇总来控制路由表的大小,并可以对子网进行层次化编址,以便最有效的利用现有的地址空间.在使用VLSM时,所采用的路由协议必须能够支持它,这些路由协议包括RIPv2,OSPF,EIGRP,IS-IS和BGPv4:如果在一个运行RIPv1或IGRP的网

网络协议设计

一篇文章: 要解决的重点在于1 防止发送的消息丢失(1)接收方收到则应答(2)发送发发送后,过一段时间未收到应答,则重发:重发多次仍无应答,则退出2 防止应答丢失(1)应答丢失,则发送方会重发.接收方需判断收到的消息是否重复(帧中加入序列号)3 身份确认(1)用地址确认身份4 传递效率(1)限制每条消息的大小 上面的很基础.转自:http://blog.csdn.net/ybdesire/article/details/6859582 一篇文章: 实时游戏的网络协议设计 类似于SLG这类游戏,对

VLSM(可变长子网掩码)

http://blog.sina.com.cn/s/blog_635e1a9e0100yk51.html(转载) VLSM的介绍: VLSM(VLSM(Variable Length Subnetwork Mask,可变长子网掩码) 是为了有效的使用CIDR(无类别域间路由)和路由汇总来控制路由表的大小,并可以对子网进行层次化编址,以便最有效的利用现有的地址空间.在使用VLSM时,所采用的路由协议必须能够支持它,这些路由协议包括RIPv2,OSPF,EIGRP,IS-IS和BGPv4:如果在一个

关于可变长数组的思考

关于可变长数组的思考  前述: 第一条记: 最近在海纳百川的地铁上,脑海中常想起魏源说过一句话"师夷长技以制夷". 联想最近中国和日本的态度,再联想起自己的人生经历,可以说我是看日本动漫,打日本游戏长大的,到现在看的工具书中绝大部分是老美和日本的.还有一个那就是看金庸和古龙所代表的武侠江湖梦.总结就是,在日本文化我学到了坚强,永不服输.老美的文化给了我探求科学的阶梯.中国的文化给我烙印上了骨气,我一直认为最后着是最重要的.再总结就是"用别人的长处征服别人,用自己的长处统治别人

深度探索C语言函数可变长参数

通常我们使用的C函数的参数个数都是固定的,但也有不固定的.比如printf()与scanf().如何自己动手实现一个可变参数函数,这个还是有点技巧的. 我们最常用的就是定义一个宏,使用printf或者printk,如下 #define wwlogk(fmt, args...) printk(fmt, ## args) 现在我们自己动手实现一个可变参数的函数,后面分析原理.首先看一个例子: #include <stdio.h> #include <stdarg.h> int Sum(

[分享] IM 协议设计选型

Hi ,各位小伙伴们,又见面啦,有木有很想念呀.不知道上次分享的关于 IM 底层协议的知识对大家有木有帮助,今天俺要就 IM 的协议的设计选型做一个简单的分享.废话不多说,现在开始讲解吧.一. im 协议的分层设计所谓“协议”是双方共同遵守的规则,例如:离婚协议,停战协议.协议有语法.语义.时序三要素.( 1 )语法:即数据与控制信息的结构或格式( 2 )语义:即需要发出何种控制信息,完成何种动作以及做出何种响应( 3 )时序:即事件实现顺序的详细说明今天的重点是在“协议选型”上,重点讲选哪种协

链接脚本在编程中的高级运用之一:可变长数组

作为嵌入式软件工程师,应该要清楚程序的每一条指令在哪里,什么时候会被加载到内存,什么时候会被执行.链接脚本会明确告诉你程序的代码和数据在内存中的分布.精确控制代码和数据在内存中的分布是高效利用内存资源的前提.自定义链接脚本是资深嵌入式软件工程师的必备技能,更是嵌入式架构师的最基本要求.此外,灵活定制链接脚本在编程方面有更高级的应用. 一.编译链接原理 简单讲述编译链接的基本原理有助于后面内容的理解. a. 简单点说,一个可执行程序包括文件头.代码段(.text).数据段(.bss).符号段等信息

主程序员的练成:TCP、消息分包和协议设计

在<主程序员的练成:IP.DNS和CDN>中,一次网络请求经过DNS解析知道了目的IP,现在就要发出网络包,这里我们说一说TCP的相关话题. TCP是一种流式协议 讲网络编程的教科书一般都会对TCP的可靠传输,api用法做详细说明,但对于TCP是一种流式协议讲解的不多,但这背后隐藏着很重要的一个知识点.先做个名词定义方便交流,这里的"消息"是指应用层的一个完整的协议包. 流式协议的特点是什么?就像流水连续不断那样,消息之间没有边界.例如send了3条消息,分别是100字节.

2017-2018-1 20155223 实验五 通讯协议设计

2017-2018-1 20155223 实验五 通讯协议设计 什么是OpenSSL? OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用. SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输.Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准.其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持