首页 > 其他分享 >IP TCP UDP数据报头的相关记录

IP TCP UDP数据报头的相关记录

时间:2023-02-26 22:11:22浏览次数:34  
标签:UDP struct IP UINT8 TCP HEADER UINT16 报头

IP TCP UDP数据报头的相关记录

IP数据报头

typedef struct _IP_HEADER_V4_
{
	union
	{
		UINT8 versionAndHeaderLength;
		struct
		{
			UINT8 headerLength : 4;
			UINT8 version : 4;
		};
	};
	union
	{
		UINT8  typeOfService;
		UINT8  differentiatedServicesCodePoint;
		struct
		{
			UINT8 explicitCongestionNotification : 2;
			UINT8 typeOfService6bit : 6;
		};
	};
	UINT16 totalLength;
	UINT16 identification;
	union
	{
		UINT16 flagsAndFragmentOffset;
		struct
		{
			UINT16 fragmentOffset : 13;
			UINT16 flags : 3;
		};
	};
	UINT8  timeToLive;
	UINT8  protocol;
	UINT16 checksum;
	BYTE   pSourceAddress[sizeof(UINT32)];
	BYTE   pDestinationAddress[sizeof(UINT32)];
}IP_HEADER_V4, *PIP_HEADER_V4;
IP报头的长度
    IP_HEADER_V4 pHeader;
    int nLength = pHeader.headerLength * 4;

TCP数据报头

typedef struct _TCP_HEADER_
{
	UINT16 sourcePort;
	UINT16 destinationPort;
	UINT32 sequenceNumber;
	UINT32 acknowledgementNumber;
	union
	{
		UINT8 dataOffsetReservedAndNS;
		struct
		{
			UINT8 nonceSum : 1;
			UINT8 reserved : 3;
			UINT8 dataOffset : 4;
		}dORNS;
	};
	union
	{
		UINT8 controlBits;
		struct
		{
			UINT8 FIN : 1;
			UINT8 SYN : 1;
			UINT8 RST : 1;
			UINT8 PSH : 1;
			UINT8 ACK : 1;
			UINT8 URG : 1;
			UINT8 ECE : 1;
			UINT8 CWR : 1;
		};
	};
	UINT16 window;
	UINT16 checksum;
	UINT16 urgentPointer;
}TCP_HEADER, *PTCP_HEADER;
TCP报头的长度
    TCP_HEADER pHeader;
    int nLength = pHeader.dORNS.dataOffset * 4;

UDP数据报头

typedef struct _UDP_HEADER_
{
	UINT16 sourcePort;
	UINT16 destinationPort;
	UINT16 length;
	UINT16 checksum;
}UDP_HEADER, *PUDP_HEADER;
UDP报头的长度 = 固定长度

网络字节序的相互转换

checksum值的计算

标签:UDP,struct,IP,UINT8,TCP,HEADER,UINT16,报头
From: https://www.cnblogs.com/startstart/p/17157947.html

相关文章

  • HTML 中 script 标签的属性和加载顺序
    script标签默认是阻塞加载的,也就是先下载src内容,然后执行src内容,然后再往后读文档head中的script按顺序加载执行,然后再加载body的元素。把script移动到文档最后......
  • JavaScript 工厂方法创建对象
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *创建一个对象 */ varobj={......
  • JavaScript 构造函数
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *创建一个构造函数,专门用来创建Person对......
  • JavaScript 立即执行函数
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> //函数对象() /* *立即执行函数 ......
  • np.nonzero和zip
    np.nonzero是确定图中的非0元素,第一个列表是行位置,第二个列表是列位置。w=np.array([1,2])w1=np.array([3,4])print(list(zip(w,w1)))[(1,3),(2,4)]在使用zip()......
  • JavaScript 枚举对象中的属性
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> varobj={ name:"孙悟空", age:1......
  • JavaScript 作用域
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *作用域 * -作用域指一个变量的......
  • 6.15-多周期MIPS CPU数据通路(1)
    单周期MIPS关键路径LW指令时间延迟问题由于系统采用单周期实现所以整个系统的时钟周期取决于最慢那一条指令的时间延迟,以LW指令为例,涉及到指令存储器以及数据存储器的......
  • JavaScript 相等运算符
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *相等运算符用来比较两个值是否相等, ......
  • JavaScript 条件运算符
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *条件运算符也叫三元运算符 * 语法: ......