有关解析IP报文的有关问题
有关解析IP报文的问题。
现在在学WINDOWS 网络编程, 遇到这么一个问题, 先获取到网络层的数据,然后将IP头中解析,再根据IP头中的protocol 来判断数据是根据TCP还是UDP协议传送的,在书上代码是这样的:
第22行不明白。为什么进行TCP解析的时候,需要把数据再加上IP头长度呢?? 求指教!
------解决方案--------------------
嗯 这个是基础 巩固下就好..
现在在学WINDOWS 网络编程, 遇到这么一个问题, 先获取到网络层的数据,然后将IP头中解析,再根据IP头中的protocol 来判断数据是根据TCP还是UDP协议传送的,在书上代码是这样的:
void DecodeIPPacket(char *pData)
{
IPHeader *pIPHdr = (IPHeader*)pData;
in_addr source, dest;
char szSourceIp[32], szDestIp[32];
printf("\n\n-------------------------------\n");
// 从IP头中取出源IP地址和目的IP地址
source.S_un.S_addr = pIPHdr->ipSource;
dest.S_un.S_addr = pIPHdr->ipDestination;
strcpy(szSourceIp, ::inet_ntoa(source));
strcpy(szDestIp, ::inet_ntoa(dest));
printf(" %s -> %s \n", szSourceIp, szDestIp);
// IP头长度
int nHeaderLen = (pIPHdr->iphVerLen & 0xf) * sizeof(ULONG);
switch(pIPHdr->ipProtocol)
{
case IPPROTO_TCP: // TCP协议
DecodeTCPPacket(pData + nHeaderLen);
break;
第22行不明白。为什么进行TCP解析的时候,需要把数据再加上IP头长度呢?? 求指教!
网络编程 TCP/IP
------解决方案--------------------
嗯 这个是基础 巩固下就好..