本文共 1450 字,大约阅读时间需要 4 分钟。
IP首部 = 4位版本+4位首部长度+8位服务类型(TOS)+16位总长度+16位标识+3位标志+13位片偏移+8位生存空间(TTL)+8位协议+16位首部检验和+32位源IP地址+32位目的IP地址。
可如下结构定义:typedef struct{ BYTE HLen : 4; //4位长度 BYTE Vers : 4; //4位版本
//TOS 服务类型 Begin *****************************//**************无 最小费用(该变量只在NNTP中有效)*** BYTE ST_NoUse : 2; //未用位 BYTE ST_Reliability : 1; //最高可靠性 BYTE ST_Throughput : 1; //最大吞吐量 BYTE ST_Delay : 1; //最小时延 BYTE ST_Precendence : 3; //优先权子字段(据说现在已经被忽略)//TOS 服务类型 End *****************************
WORD TotalLen; //16位总长度(字节数) WORD ID; //16位标识// 13位片位移和3位标志在IP分片中才用到 BYTE OffHigh : 5; //13位片偏移 高5位
//3位标志 Begin ********************* BYTE Flag_MoreFrag : 1; //更多分片位 BYTE Flag_DoNotFrag : 1; //不可分片位 BYTE Flag_NoUse : 1;//3位标志 End *********************
BYTE OffLow : 8; //13位片偏移 低8位
BYTE TimeToLive : 8; //TTL 8位生存时间 BYTE Protocol : 8; //8位协议 WORD HChecksum; //16位首部检验和 BYTE SIP[4]; //32位源IP地址 BYTE DIP[4]; //32位目的IP地址} IPHEADER;
TCP首部 = 16位源端口号+16位目的端口号+32位序号+32位确认序号+4位首部长度+保留位(6位)+URG+ACK+PSH+RST+SYN+FIN+16位窗口大小+16位检验和+16位紧急指针
可如下结构定义:typedef struct{ WORD SPort; //16位源端口号 WORD DPort; //16位目的端口号 DWORD SeqNum; //32位序号 DWORD AckNum; //32位确认序号 BYTE Reserved1 : 4; //保留4位 BYTE HLen : 4; //4位首部长度
BYTE CB_FIN : 1; //发端完成发送任务 BYTE CB_SYN : 1; //同步序号用来发起一个连接 BYTE CB_RST : 1; //重建连接 BYTE CB_PSH : 1; //接收方应该尽快将这个报文段交给应用层 BYTE CB_ACK : 1; //确认序号有效 BYTE CB_URG : 1; //紧急指针有效
BYTE Reserved2 : 2; //保留2位 WORD Window; //16位窗口大小 WORD Checksum; //16位检验和 WORD UrgPtr; //16位紧急指针} TCPHEADER;
转载地址:http://ikzli.baihongyu.com/