title: Java - TCP Three Way Handshake in java.net?
body: <p><strong>Introduction:</strong></p>
  
  <p>As part of my college research I have to find out how much physical memory is being overtaken when abusing the <strong>TCP Three Way Handshake</strong>. To be more precise: when the client does not reply with an ACK, thus leaving the server hanging with memory that is reserved for them.</p>
  
  <p>I had a look through the available software out there, but I didn't manage to find anything that would allow me to simulate the TCP Three Way Handshake.</p>
  
  <p>Then I found <strong>Java Sockets</strong>. I had a look through a number of tutorials, but I find them very unclear. Also, they seem to have a high-level view, which would not allow me to manipulate the SYN, SYN-ACK, ACK sequence.</p>
  
  <p>Therefore, I stepped down into the actual <strong>java.net</strong> with a decompiler tool. I had a look at various classes, but I can't find any references to the actual SYN messages being sent. Some methods sound like they do the thing, but I can find only method calls and their interface definitions. I can't find the actual method code!</p>
  
  <p><strong>Actual questions:</strong></p>
  
  <ul>
  <li><p>Could someone please tell me which classes / methods in <strong>java.net</strong> deal with sending SYN, SYN-ACK and ACK messages for TCP Three Way Handshake?</p></li>
  <li><p>If someone knows any good tutorials on <strong>Java Sockets</strong>, please refer them here? The ones I found are confusing me(and some of them are made by Oracle!).</p></li>
  <li><p>If someone knows any programs that allow to simulate TCP Three Way Handshake, please refer them here.</p></li>
  </ul>
  
  <p>Any one of the above three is probably enough to get me where I want. Any help at all would be greatly appreciated! The longer I research, the more it feels like looking for a niddle in a hay stack. </p>