搜索
简帛阁>技术文章>HTTP协议之数据包头信息

HTTP协议之数据包头信息

普通的嗅探器,网络抓包工具都做了相应的处理,一般抓到的http数据包都是经过处理的,基本上看不到底层的socket传输信息,我现在想做的是用socket模拟浏览器实现网页通讯。但是,经过抓包发现,在发送GET请求前已经发送了两个数据包,一个52 一个40字节的长度的包,这个包,包含的浏览器的信息,或者其他信息,一下是我在一个网站上抓取的数据头信息,总共三次,上面三个是三次第一个包的,下面三个是三次第二个包的信息。

 

0000: 45 00 00 34 14 22 00 00 34 06 96 7B 74 FF 90 75      E..4."..4..{t..u
0016: C0 A8 16 0A 00 50 0F 5E 61 EA 2E 4B D3 18 DA C8      .....P.^a..K....
0032: 80 12 40 00 05 30 00 00 02 04 05 A0 01 03 03 00      ..@..0..........
0048: 01 01 04 02                                          ....

0000: 45 00 00 34 75 D2 00 00 34 06 34 CB 74 FF 90 75      E..4u...4.4.t..u
0016: C0 A8 16 0A 00 50 0F 62 6C 5A 2B 64 6E 1A A8 6D      .....P.blZ+dn..m
0032: 80 12 40 00 94 FC 00 00 02 04 05 A0 01 03 03 00      ..@.............
0048: 01 01 04 02                                          ....

0000: 45 00 00 34 14 7B 00 00 35 06 95 22 74 FF 90 75      E..4.{..5.."t..u
0016: C0 A8 16 0A 00 50 0F 78 76 54 DC 9D 2E E7 BC 19      .....P.xvT......
0032: 80 12 40 00 05 3A 00 00 02 04 05 A0 01 03 03 00      ..@..:..........
0048: 01 01 04 02              

 

 


0000: 45 00 00 28 14 D9 40 00 34 06 55 D0 74 FF 90 75      E..(..@.4.U.t..u
0016: C0 A8 16 0A 00 50 0F 5E 61 EA 2E 4C D3 18 DD A8      .....P.^a..L....
0032: 50 10 FD 1F 85 E7 00 00                              P.......

0000: 45 00 00 28 76 E0 40 00 34 06 F3 C8 74 FF 90 75      E..(v.@.4...t..u
0016: C0 A8 16 0A 00 50 0F 62 6C 5A 2B 65 6E 1A AB 4D      .....P.blZ+en..M
0032: 50 10 FD 1F 15 B4 00 00                              P.......

0000: 45 00 00 34 14 86 00 00 34 06 96 17 74 FF 90 75      E..4....4...t..u
0016: C0 A8 16 0A 00 50 0F 79 2C EA AC F4 F9 B0 A4 33      .....P.y,......3
0032: 80 12 40 00 CB 68 00 00 02 04 05 A0 01 03 03 00      ..@..h..........
0048: 01 01 04 02                                          ....

网页浏览的源码如下

#include "StdAfx.h"
#include "MyHttpSocket.h"
#pragma comment(lib,"Ws2_32.lib")

CMyHttp::CMyHttp()
{
 m_isInit=false;
}
CMyHttp::~CMyHttp()
{
 Stop();
 WSACleanup();

}
char fname[256];
void LogFile(char *p)
{
 FILE *fp=fopen(fname,"a+");
 fprintf(fp,"%s ",p);
 fclose(fp);
}

 

BOOL CMyHttp::Initlization()
{
// HttpClient();
 WORD wVersionRequested;
 WSADATA wsaData;
 int err;
 
 wVersionRequested = MAKEWORD( 1, 1 );
 
 err = WSAStartup( wVersionRequested, &wsaData );
 if ( err != 0 ) {
  return FALSE;
 }
 
 
 if ( LOBYTE( wsaData.wVersion ) != 1 ||
  HIBYTE( wsaData.wVersion ) != 1 ) {
  WSACleanup( );
  return FALSE;
 }
 sockClient=socket(AF_INET,SOCK_STREAM,0);
 if(sockClient!=NULL)
 {
  m_isInit=true;
  return TRUE;

 }
 return FALSE;
 
}
CString CMyHttp::Start(CString strHost)
{
 if(m_isInit==false){return "";}
 SOCKADDR_IN addrSrv;
 char ta=0x0d;
 HOSTENT* pHost;
 pHost=gethostbyname("www.baidu.com");
 
 addrSrv.sin_addr.S_un.S_addr=*((DWORD*)pHost->h_addr_list[0]);
 addrSrv.sin_family=AF_INET;
 addrSrv.sin_port=htons(80);

 connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

 char acHeader[]={0x45,0x00,0x00,0x34,0x20,0x7C,0x00,0x00,0x34,0x06,0x8A,0x21,0x74,0xFF,0x90,0x75
  ,0xC0,0xA8,0x16,0x0A,0x00,0x50,0x0C,0xC3,0x8E,0x8D,0x4B,0x2E,0x5C,0xD8,0x20,0x1B
  ,0x80,0x12,0x40,0x00,0xEF,0x32,0x00,0x00,0x02,0x04,0x05,0xA0,0x01,0x03,0x03,0x00
  ,0x01 ,0x01 ,0x04 ,0x02};
 int iDataLen=strlen(acHeader);
 int iSendLen=send(sockClient,acHeader,52,0);
 char acHeader2[]={0x45,0x00,0x00,0x28,0x21,0x54,0x40,0x00,0x34,0x06,0x49,0x55,0x74,0xFF,0x90,0x75
     ,0xC0,0xA8,0x16,0x0A,0x00,0x50,0x0C,0xC3,0x8E,0x8D,0x4B,0x2F,0x5C,0xD8,0x22,0xFB
     ,0x50,0x10,0xFD,0x1F,0x6F,0xEA,0x00,0x00};

  iDataLen=strlen(acHeader2);
  iSendLen=send(sockClient,acHeader2,40,0);

char acData0[]="GET / HTTP/1.1\r\n\
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*\r\n\
Accept-Language: zh-cn\r\n\
Accept-Encoding: gzip, deflate\r\n\
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)\r\n\
Host: www.baidu.com\r\n\
Connection: Keep-Alive\r\n\
Cookie: Grix_2132_sid=zSxjJR; Grix_2132_saltkey=DQuF3h3Q; Grix_2132_lastvisit=1322836336; Grix_2132_lastact=1322914181%09home.php%09misc; Grix_2132_auth=37dfhTSg4hkgJYXGAcDiktq6tBLYEIJWw9UEXTgxeOrv9v2EuBsLhpq3xscDmrtt%2BYVsxXZ8vL7MB1S%2BynoHeEIjSA; Grix_2132_connect_is_bind=0; Grix_2132_mrd=%09; Grix_2132_ulastactivity=f0901LxkjbjeXyww5PH2aS%2F6CvXrYJU9FVGKBeh8WxINY6U5IZt6; Grix_2132_fid23=1322913237; Grix_2132_visitedfid=23";
  iDataLen=strlen(acData0);
  iSendLen=send(sockClient,acData0,iDataLen,0);
 
 if(iSendLen==iDataLen)
 {
  TRACE("send=%d",iSendLen);
 }
 char recvBuf[4096];
    CString strRevciveData;
 int iRecvLen=0;
 do
 { memset(recvBuf,0,4096);
  iRecvLen= recv(sockClient,recvBuf,4096,0);
  strRevciveData+=recvBuf;
  if(iRecvLen==-1)
  {
   break;
  }
 }while(iRecvLen!=0);
 return strRevciveData;

}

普通的嗅探器,网络抓包工具都做了相应的处理,一般抓到的http数据包都是经过处理的,基本上看不到底层的socket传输信息,我现在想做的是用socket模拟浏览器实现网页通讯。但是,经过抓包发现,在发
通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响
1、数据类型表示实体数据的内容是什么,使用的是MIMEtype,相关的头字段是Accept和ContentType;文本格式数据:text/html超文本text/plain纯文本text/css样式
1什么是URLURL的全称是UniformResoureLocator,统一资源定位器。URL是浏览器寻找信息时所需的资源位置。当一个人将浏览器指向一个URL,浏览器就会在幕后发送适当的协议报文来获取
1为什么要使用http协议假设我现在有两个客户端浏览器,一个是google,一个是IE浏览器;我现在有两个服务器,一个是tomcat,一个是JBoss;在最初的情况下是:如果google要往tomca
什么是HTTP状态码HTTP状态码的作用是:Web服务器用来告诉客户端,发生了什么事。状态码位于HTTPResponse的第一行中,会返回一个”三位数字的状态码“和一个“状态消息”。”三位数字的状态
HTTP协议详解一HTTP简介1HTTP协议,即超文本传输协议(Hypertexttransferprotocol)。是一种详细规定了浏览器和万维网(WWWWorldWideWeb)服务器之间互相通
目录简介HTTP/11HTTP/2传输模式对比流优先级缓冲区溢出处理预测资源请求压缩总结简介HTTP的全称是HypertextTransferProtocol,是在1989年WorldWideWeb发
Http即超文本传输协议(英文:HyperTextTransferProtocol,缩写:HTTP),用来在网页间传输超文本的一种协议。在这里需要了解三个内容:1、html;2、URL;3、http
http的原理1认识URLURL就是我们俗称的“网址”例如:http://wwwbaiducom/http指的就是协议类型其中wwwbaiducom指的是域名(和IP等价),最后面的/指的是服务器