rework on tcp layer to avoid copy and use async socket