TCPはなぜ3回握手するのか、握手が終わって初めてデータを送るACKnumはいくらですか?


TCPはなぜ3回握手するのですか?
TCPの3回の握手過程は、簡単に言えば以下の通りである.
1.クライアントが最初の握手を開始する(SYN=1,seq=x)
2.サーバ側が2回目の握手を開始(SYN=1,seq=y,ACKnum=x+1)
3.クライアントが3回目の握手を開始(ACKnum=y+1)
しかし、なぜ2回か4回ではなく3回握手するのですか?
根本的な原因は双方が初期のseqを協議しなければならないことだ.
TCPはどのパケット再送を確認し,パケット乱順を解決するかはseqによって実現される.だから握手の目的はお互いに確認することです.
次の4つのステップが必要です.
1.A---->B   SYN
2.B---->A   ACK
3.B---->A   SYN
4.A---->B   ACK
このうち2と3は、サーバ側から一歩に統合できます.そのため、3回の握手でお互いにseqを確認することができます.
3回目の握手がないと、双方はBの初期シリアル番号を確認できない(BはAが自分の初期seqを受け取ったかどうか分からない).紛失すると、AはBの初期seqを知らず、進めなくなります.
同時に、2つのチャネルがスムーズであることを決定することができます.
以上、2回の握手でお互いにseqを確認できなかった.3回で十分なので、4回握手する必要はありません.
3回目の握手紛失はどうなりますか?
AがまたBにデータを送信すると,BはAのACKを受け取ると自然に受け入れられ,状態はESTABLISHEDとなる.後続の通信には影響しません.
-------------------------------------------------------------------------------------------------------------------------
握手を終えて初めてデータを送信したACKnumは?
RFC 793には、以下のような表示がある.
      TCP A                                                TCP B

  1.  CLOSED                                               LISTEN

  2.  SYN-SENT    -->                --> SYN-RECEIVED

  3.  ESTABLISHED           --> ESTABLISHED

  5.  ESTABLISHED -->  --> ESTABLISHED

          Basic 3-Way Handshake for Connection Synchronization

                                Figure 7.

3回目の握手後(4回目の行為3回目の握手)、再度送信データACKnumは3回目の握手と同じであることがわかる.
Reference:
[1]TCPはなぜ3回握手4回手を振ったのか、https://www.jianshu.com/p/7d0f91345483
[2]TCPはなぜ2回や4回ではなく3回握手するのか、https://www.zhihu.com/question/24853633
[3]TCPプロトコルhttps://hit-alibaba.github.io/interview/basic/network/TCP.html
[4]RFC793,https://www.ietf.org/rfc/rfc793.txt