44. TCP(Transmission Control Protocol)是以什麼方式建立連線?
(A)傳送命令直接連線
(B)單向傳送連線訊息
(C)雙向交握方式
(D)三向交握方式。

答案:登入後查看
統計: A(5), B(5), C(16), D(49), E(0) #1172745

詳解 (共 1 筆)

#1373823
TCP 為連線導向的傳輸協定,因此雙方正式傳輸資料前,必須先經過三向交握(Three Way Handshake)這個階段,達成連線協議。 整個流程如果用圖表示的話就是這樣: 一開始 clinet 送了一個同步封包(SYN1)給 server ,請求進行連線。送出的資訊中,最重要的有以下幾個(TCP 封包都有這幾個資訊): Port : 來源主機以及目的主機的 port number。 Sequence Number:client 隨機選取的初始序號1(Sequence Number1, 我們簡稱 Seq1),用來與 server 達到同步作用。 Acknowledge Number:第一個步驟,才剛請求建立連線而已,不會有確認號碼,因此這邊暫時全部填0。 TCP 封包中 flags(6 bits) 裡面的 Synchronize 位元:這個位元會被設定成1,表示這個封包是送出 SYN 的資訊。 可接受的 Window Size :設定 client 自己可接受的 Window Size 大小,告知 server 自己可以承受的程度。 以下為 flags 全部 6 個位元(bit)的內容,請注意被上了紅色的 Synchronize 以及 Acknowledge 這兩個 bit ,Synchronize 用來告知這個封包是送出 SYN 資訊,而 Acknowledge 則是用來告知這個封包是送出 ACK 資訊: 當 server 接到從 client 而來的 SYN1 封包後,它就會回傳包括以下資訊的封包(SYN2+ACK1): Port : 來源主機以及目的主機的 port number。 Sequence Number:server 隨機選取的初始序號2(Sequence Number2, 我們簡稱 Seq2),用來與 client 達到同步作用。 Acknowledge Number:此為第一階段 client 產生的初始序號 Seq1 + 1,用來告知 client 已經收到了 SYN1 這個封包,並且希望下次 client 送來的封包序號為 Seq1+1。 TCP 封包中 flags(6 bits) 裡面的 Synchronize 位元:設成1,有 SYN 資訊。 TCP 封包中 flags(6 bits) 裡面的 Acknowledge 位元:設成1,有 ACK 資訊。 可接受的 Window Size :設定 server 自己可接受的 Window Size 大小,告知 client 自己可以承受的程度。 第三階段,client 收到了上面的封包後,就會回傳包括以下資訊的封包(ACK2): Port : 來源主機以及目的主機的 port number。 Sequence Number:Seq1 + 1。 Acknowledge Number:Seq2 + 1 ,用來告訴 server 自己已經收到了 SYN2,也希望下次 server 給的封包序號是 Seq2 + 1。 TCP 封包中 flags(6 bits) 裡面的 Acknowledge 位元:設成1,有 ACK 資訊。 可接受的 Window Size :設定 client 自己可接受的 Window Size 大小,告知 server 自己可以承受的程度。 經過上述三個步驟後,「建立連線」階段結束,雙方就會開始傳輸資料。第一以及第二步驟如果遺失的話,整個步驟就必須重新來過。 結合前一篇以及這篇文章,想必你對於 TCP 做了什麼事情有更深的了解了吧?我們只講了 TCP 裡面兩個重要的概念而已,因此或許你還是會有些疑惑,不過這不是重點,之所以介紹這兩個東西,是要讓各位感受一下 TCP 傳輸過程經過了多少步驟、背後做了多少事,使各位擁有更確實的概念。引用於http://ithelp.ithome.com.tw/m/articles/10155938
0
0