SYNパケット処理について



サーバはクライアントのSYNパケットをSYNキューに格納する.ACKパケット応答も受信キューに格納される.SYN Queue,ACKパケットをBaklog Queueと呼ぶ.
  • 最初のサーバはSYNパケットをSYNキューに格納し、SYN+ACKを送信する.
  • [root@localhost /]# sysctl
    net.ipv4.tcp_syynack_retriesnet.ipv4.tcp_synack_retries = 5
    (デフォルトでは、1+5回の再送信後に応答がない場合はタイムアウトします.値を小さくすると、同時処理可能なセッションの数が増加します)
  • SYNクッキー

  • キューがいっぱいの場合、既存のサーバは新しいセッションを受け入れることができません.
    SYN Cookie:SYNパケットをフルキューに格納するのではなく、クライアントに直接送信します.その後、クライアントとして受信したACKシーケンス番号が決定された場合、+1の場合、受信キューに送信します.
  • Accept Queue

  • アプリケーションの受信キューがデータを迅速に処理できない場合、クライアントからACKパケットを受信しても受信キューに保存できません.
    この場合、新しいSYN、ACKパケットは破棄され、クライアントはTCPプロトコルに従ってセッションを再要求します(この期間にアプリケーションが復元された場合、受信は再開されます).
    ソース:https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=noorol&logNo=221188027204