网络协议栈设计(二)---类型定义及变量声明

网络协议栈设计(二)

通过上一篇的介绍,相信大家对我们网络协议栈的设计已经有了初步的认识和了解。最初的编程环境也都建立了起来。
在本篇中,我们对于协议栈的设计在进行一些说明以及对需要用到的全局变量的作一些定义。
注:下边所有的类型定义和全局变量的定义都是在开发的过程中慢慢完善起来的,在此一次性给大家展示出来只是让大家先作一了解,知道有这些变量的定义,所以大家对于不是很懂的变量定义不要着急,后边的开发中如果用到会再次给大家说明需要定义的全局变量有哪些,大家可以在开发的过程中慢慢体会。

再注:首先在此说明,因为我们时间有限,所以只实现网络协议栈的主体功能,从而达到对网络协议栈更深层次的了解和学习的目的。协议栈的设计分小组完成,我负责发送方代码编写。而且,为了简化设计,我们默认发送方只发送数据,接受方只接受数据并且发送确认。所以,在接下的设计中,我们只需要关心发送方对于数据发送的需求和对接收方发送的确认数据包的接收和处理。(如果我将我的发送方介绍完有时间可以将小伙伴写的接收方代码更新给大家)

一、数据类型的定义

首先要介绍的是类型定义,大家知道,网络数据的处理大多数时候是以字节为单位的,而且我们并不关心数据的真正含义,所以在winpcap packet的bittypes.h文件中为我们定义了一系列的字节为单位的数据类型,如下:

u_int8_t 1字节
u_int16_t 2字节
u_int32_t 4字节
u_int64_t 8字节

头文件中采用条件编译,所以无论哪种编译环境均可直接使用此类型定义相应字节长度的变量。在此以1字节类型的定义为大家展示一下,方便大家理解:

#ifndef HAVE_U_INT8_T

#if SIZEOF_CHAR == 1
typedef unsigned char u_int8_t;
typedef signed char int8_t;
#elif SIZEOF_INT == 1
typedef unsigned int u_int8_t;
typedef signed int int8_t;
#else  /* XXX */
#error "there's no appropriate type for u_int8_t"
#endif
#define HAVE_U_INT8_T 1
#d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值