网络数据包的封包与拆包
过程如下:
将数据从一台计算机通过一定的路径发送到另一台计算机。应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示:
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据包(packet),在链路层叫做帧(frame)。数据封装成帧后发到传输介质...
分类:
系统相关 时间:
2014-08-17 11:47:12
阅读次数:
560
http://bbs.chinaunix.net/thread-1257205-1-1.html#include #include #include int main(void){ unsigned short v = 0x0102; unsigned char *p = (unsigned c.....
分类:
编程语言 时间:
2014-08-14 14:00:08
阅读次数:
236
/**
* 功能:联合体使用
* 时间:2014年8月1日17:04:23
* 作者:cutter_point
*/
#include
#include
using namespace std;
union Packed
{
char i;
short j;
int k;
long l;
float f;
double d; //这个联合体...
分类:
编程语言 时间:
2014-08-13 10:39:05
阅读次数:
262
在写网络程序的时候,我们经常需要将结构体或者整数等数据类型序列化成二进制的buffer串。或者从一个buffer中解析出来一个结构体出来,最典型的就是在协议的header部分表征headlength或者bodylength在拼包和拆包的过程中,需要按照规定的整数类型进行解析,且涉及到大小端序的..
分类:
其他好文 时间:
2014-08-13 03:49:35
阅读次数:
10299
一、首先需要明白一点,术语“大端”和“小端”表示多个字节的哪一端(大端或小端)存储在该值的起始地址;小端:将低序字节存储在起始地址;大端:将高序字节存储在起始地址;对于一个16位的整数,内存中的存储方式如下图所示:但遗憾的是,二者并没有标准可循,两种格式都有系统在使用,下面程序可以判断主机字节序: ...
分类:
其他好文 时间:
2014-08-11 17:17:22
阅读次数:
228
四轴飞行器1.3 MPU6050(大端)和M4的FPU开启方法原创文章,欢迎转载,转载请注明出处 最近时间花在最多的地方就是STM32的I2C上了。之前就知道STM32的I2C并不好用,因为之前用过模拟的I2C,也写过AVR的I2C也就是TWI的硬件驱动,所以想试试写STM32的硬件I2C。。。.....
分类:
其他好文 时间:
2014-08-09 23:04:59
阅读次数:
569
一、FAT1起始扇区 = DBR的扇区号 + 保留扇区号
1.获取DBR的扇区号
磁盘的0号扇区的 0X1C6~0X1C9是第一个分区的起始扇区,这个扇区就是DBR
下图是本人的磁盘的0号扇区,可以看到DBR的扇区号是0X00 00 00 3F(小端格式)
2.得到保留扇区
打开DBR扇区,偏移0X0E~0X0F表示保留扇区
由图可知保留扇区数为0X00 26.
F...
分类:
其他好文 时间:
2014-08-08 18:20:37
阅读次数:
405
1 #!/bin/bash - 2 #=============================================================================== 3 # 4 # FILE: hex_change.sh 5 # 6 # ...
分类:
系统相关 时间:
2014-08-07 02:58:48
阅读次数:
384
数字16的16进制表示为0x0010,数字4096的16进制表示为0x1000。由于Intel机器是小尾端,存储数字16时实际顺序为1000,存储4096时实际顺序为0010,注意是按字节来判定大小端的,即8个BIT为单位,而不是4BIT因此在发送网络包时为了报文中数据为0010,需要经过htons...
分类:
其他好文 时间:
2014-08-06 18:24:21
阅读次数:
209
我们经常看到求 sizeof(A) 的值的问题,其中A是一个结构体,类,或者联合体。为了优化CPU访问和优化内存,减少内存碎片,编译器对内存对齐制定了一些规则。但是,不同的编译器可能有不同的实现,本文只针对VC++编译器,这里使用的IDE是VS2012。#pragma pack()是一个预处理,表示...
分类:
编程语言 时间:
2014-08-06 14:17:01
阅读次数:
234