title: Understanding the TCP packet size limit with UDP packet size limit & what it means at boost::asio level of programming
body: <p>I am using <code>boost::asio</code> to do <code>UDP</code> as well as <code>TCP communication</code> in my Client app &amp; Server applications. I found that I am only able to transmit data of size <code>65535 bytes</code> using <code>UDP</code> as it seems to be the max packet size in UDP.</p>
  
  <p>The max packet size limit is also there in <code>TCP</code> which is <code>65535 bytes</code> ? But I am able send chunks larger than max packet size using <code>boost::asio::write</code> in <code>TCP</code> &amp; read it all fine on the client app. I see that I don't have to bother about the max packet size in TCP but in UDP I have ensure each <code>socket.send_to</code> is done with a buffer smaller than <code>max packet size</code></p>
  
  <p><strong><em>How does this work ?</strong> Is this because <code>TCP</code> is stream based takes care of creating packets at the lower layer ? 
  Is there some way I can increase the <code>max packet size</code> in <code>UDP</code> ?</em></p>
  
  <p><em>Is it possible that some of the bytes of an <code>UDP packet</code> I sent from server side could be missing when I read on client side ? If yes, then is there way <strong>only to detect the loss</strong> on client side of UDP ?</em></p>