我现在想实现的是利用原始套接字实现http的请求,
其中具体的头构造和发送我都实现了,
但我使用sniff抓http的三次握手的包时发现都带有24个字节的数据,
不知道那24个自己数据有什么含义并且是靠什么算法产生的
(因为我发的包没有那24个字节所以没有产生响应)
请提供参考或其他.

解决方案 »

  1.   

    Sniff抓的包是包含了数据链路层以上数据,而原始套接字实现的Http请求已经是应用层的数据。24个字节可能是应用层以下加的其他封装数据吧。
      

  2.   

    三次握手是建立tcp连接。1、发送初始序列号。
    2、对方发收到syn包的ack确认
    3、对收到确认进行确认。。
      

  3.   

    syn 和ack我都设置正确了,但那24个数据是怎么得到得,就不清楚了,希望各位大虾能指点一下
      

  4.   

    是哪24个?是网卡的MAC地址端口号和ip包头吧
      

  5.   

    这是我抓的http(第一次握手)的包
    HEADER:
    45 00 00 40 4F 86 40 00 40 06 69 AA C0 A8 00 36  E..@O.@[email protected]
    C0 A8 00 01 07 2A 7F 8A FA 83 E9 F5 00 00 00 00  .....*..........
    B0 02 20 00 29 4B 00 00                          .. .)K..        DATA:
    02 04 05 B4 01 03 03 00 01 01 08 0A 00 00 00 00  ................
    00 00 00 00 01 01 04 02       
    就是那data区的24个数据是怎么来的??
      

  6.   

    to:glaci
     你是没抓到包还是抓到的包没有那24个数据啊??
      

  7.   

    head 45 00 ...是IP包的头,data部分我不清楚,抱歉!
      

  8.   

    45 00 是IP包的头,40是IP的长度,36是tcp协议, 
    T C P是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间
    建立一条连接 三次握手是建立tcp连接。11) 请求端(通常称为客户)发送一个S Y N段指明客户打算连接的服务器的端口,以及初
    始序号(I S N)。这个S Y N段为报文段1。
    2) 服务器发回包含服务器的初始序号的S Y N报文段(报文段2)作为应答。同时,将确认
    序号设置为客户的I S N加1以对客户的S Y N报文段进行确认。一个S Y N将占用一个序号。
    3) 客户必须将确认序号设置为服务器的I S N加1以对服务器的S Y N报文段进行确认(报文
    段3)。
    这三个报文段完成连接的建立。这个过程也称为三次握手( three-way handshake)
      

  9.   

    第一次
    HEADER:
    45 00 00 40 93 79 40 00 40 06 25 B7 C0 A8 00 36  [email protected]@.@.%....6
    C0 A8 00 01 05 39 6F 69 D4 BD 43 C4 00 00 00 00  .....9oi..C.....
    B0 02 20 00 07 55 00 00                          .. ..U..        DATA:
    02 04 05 B4 01 03 03 00 01 01 08 0A 00 00 00 00  ................
    00 00 00 00 01 01 04 02  
      
    第二次(服务器返回)
    HEADER:
    45 00 00 40 07 5D 40 00 80 06 71 D3 C0 A8 00 01  E..@.]@...q.....
    C0 A8 00 36 6F 69 05 39 BC 45 FA D1 D4 BD 43 C5  ...6oi.9.E....C.
    B0 12 FF FF 70 2C 00 00                          ....p,..        DATA:
    02 04 05 B4 01 03 03 00 01 01 08 0A 00 00 00 00  ................
    00 00 00 00 01 01 04 02  
       
    第三次
    HEADER:
    45 00 00 34 93 7A 40 00 40 06 25 C2 C0 A8 00 36  E..4.z@.@.%....6
    C0 A8 00 01 05 39 6F 69 D4 BD 43 C5 BC 45 FA D2  .....9oi..C..E..
    80 10 20 00 84 F0 00 00                          .. .....        DATA:
    01 01 08 0A 00 03 0C 04 00 00 00 00
      

  10.   

    同意有二位讲的,TCP是建于IP上的,它当然有IP头,您看一看4500后跟的0040讲的就是有24字节长的IP包。
      

  11.   

    如要用IP头要用RAWSOCKET才行,在W2K下,98下没法,除非用第三方软件
      

  12.   

    1、帧头
    2、ip头
    3、tcp或udp头
      

  13.   

    我回家仔细研究了一下tcp/ip发现那个是tcp包的填充内容,但这个填充内容是怎么算出来的了,又是什么含义了,哪为大虾能不能说一说,另外是不是http中的tcp包必须要又填充内容了(因为我看其他协议不一定有 )