Thread: JAGGRAB Protocol

Results 1 to 1 of 1
  1. #1 JAGGRAB Protocol 
    Registered Member
    Join Date
    Apr 2016
    Posts
    8
    Thanks given
    0
    Thanks received
    2
    Rep Power
    0
    I haven't posted here in a long time. However, recently I was browsing Github and Rune-Server looking into the current frameworks and servers being developed. I noticed most of these servers don't make use of the JAGGRAB protocol. I also noticed that there are very few sources of documentation for the JAGGRAB protocol online. Simply googling the term JAGGRAB will only provide one or two viable results. I believe more people would make use of this service if they could see it in a simplified format.

    Ive written a small implementation to help put this into perspective. This is written as an example and does not reflect my programming style.
    [Only registered and activated users can see links. ]

    I've also included a sample network infrastructure for all the necessary encoders & decoders to help demonstrate how all the client's protocol fits together.
    [Only registered and activated users can see links. ]

    What is JAGGRAB?
    JAGGRAB is the text based protocol that RuneScape clients use to request files from the server. This eliminates the need to have a user download a cache manually from an online source via the client. Every request is sent to the server in the form of a string and prefixed with the text JAGGRAB.
    Code:
    String request = StandardCharsets.UTF_8.decode(buffer).toString();
    Once the server receives this request it then writes the appropriate data back to the client. The requests are broken up as follows.
    Code:
    "/crc" requests the cyclical redundancy checks for the files.
    "/title" requests the tile screen components. 
    "/config" requests the configuration files.
    "/interface" requests the interface file.
    "/media" requests the media files.
    "/textures" request the textures.
    "/wordenc" requests the chat filter.
    "/sounds" requests the audio files.
    Every-time the client makes a request, it does so on a new socket connection. This means you will either need to manually close the connected socket after a file request is served or implement a time-out procedure. These connections will generally be serviced on the port 43595. Unlike the Ondemand protocol which functions on the same server as the actual game service, the JAGGRAB protocol runs on it's own server.

    CRC Checks
    The CRC checks are generated on the server's end and written as the first request in the protocol. These are written first as their purpose is to help detect any illegal modifications or inconsistencies in data. These checks are relatively simple to generate and each attached to a file. Each individual checksum is written back as an integer. A final singular hash code of the checksums is then written as well.

    File Data Structure
    The protocol for reading from specific files.
    Code:
    length : tri-byte (3 bytes)
    block : tri-byte (3 bytes)
    
    next_file : unsigned short (2 bytes)
    current_chunk : unsigned short (2 bytes)
    next_block : tri-byte (3 bytes)
    next_type : unsigned byte (1 byte)
    Reply With Quote  
     

  2. Thankful users:



Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 2
    Last Post: 03-03-2015, 11:31 PM
  2. jaggrab Protocol
    By natsu in forum Help
    Replies: 10
    Last Post: 09-20-2014, 06:24 PM
  3. 317+ JAGGRAB Protocol
    By Tom in forum Informative Threads
    Replies: 11
    Last Post: 11-12-2012, 03:47 AM
  4. The current RuneScape 2 protocol
    By veer in forum Informative Threads
    Replies: 40
    Last Post: 06-13-2009, 07:14 PM
  5. Encouragin's 474 (XSocket protocol)
    By Encouragin in forum Downloads
    Replies: 7
    Last Post: 01-22-2009, 07:13 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •