[107]TCP 三向交握介紹分享

資料通訊與網路-課程版面-授課教授:XO

版主: b80203, ghost3401, XO, maa, siegf

分享到: Facebook

[107]TCP 三向交握介紹分享

文章404402680 » 週三 1月 09, 2019 2:05 am

TCP 為連線導向的傳輸協定,因此雙方正式傳輸資料前,必須先經過三向交握(Three Way Handshake)這個階段,達成連線協議。

一開始 clinet 送了一個同步封包(SYN1)給 server ,請求進行連線。送出的資訊中,最重要的有以下幾個(TCP 封包都有這幾個資訊):
1.Port : 來源主機以及目的主機的 port number。
2.Sequence Number:client 隨機選取的初始序號1(Sequence Number1, 我們簡稱 Seq1),用來與 server 達到同步作用。
3.Acknowledge Number:第一個步驟,才剛請求建立連線而已,不會有確認號碼,因此這邊暫時全部填0。
4.TCP 封包中 flags(6 bits) 裡面的 Synchronize 位元:這個位元會被設定成1,表示這個封包是送出 SYN 的資訊。
5.可接受的 Window Size :設定 client 自己可接受的 Window Size 大小,告知 server 自己可以承受的程度。

當 server 接到從 client 而來的 SYN1 封包後,它就會回傳包括以下資訊的封包(SYN2+ACK1):

1.Port : 來源主機以及目的主機的 port number。
2.Sequence Number:server 隨機選取的初始序號2(Sequence Number2, 我們簡稱 Seq2),用來與 client 達到同步作用。
3.Acknowledge Number:此為第一階段 client 產生的初始序號 Seq1 + 1,用來告知 client 已經收到了 SYN1 這個封包,並且希望下次 client 送來的封包序號為 Seq1+1。
4.TCP 封包中 flags(6 bits) 裡面的 Synchronize 位元:設成1,有 SYN 資訊。
5.TCP 封包中 flags(6 bits) 裡面的 Acknowledge 位元:設成1,有 ACK 資訊。
6.可接受的 Window Size :設定 server 自己可接受的 Window Size 大小,告知 client 自己可以承受的程度。

第三階段,client 收到了上面的封包後,就會回傳包括以下資訊的封包(ACK2):

1.Port : 來源主機以及目的主機的 port number。
2.Sequence Number:Seq1 + 1。
3.Acknowledge Number:Seq2 + 1 ,用來告訴 server 自己已經收到了 SYN2,也希望下次 server 給的封包序號是 Seq2 + 1。
4.TCP 封包中 flags(6 bits) 裡面的 Acknowledge 位元:設成1,有 ACK 資訊。
5.可接受的 Window Size :設定 client 自己可接受的 Window Size 大小,告知 server 自己可以承受的程度。

經過上述三個步驟後,「建立連線」階段結束,雙方就會開始傳輸資料。第一以及第二步驟如果遺失的話,整個步驟就必須重新來過。
404402680
剛學走路的小朋友
 
文章: 6
註冊時間: 週五 9月 22, 2017 10:50 am

回到 資料通訊與網路

誰在線上

正在瀏覽這個版面的使用者:Google [Bot] 和 6 位訪客