什麼是TCP(傳輸控制協定)

Transmission Control Protocol的縮寫。傳輸層的連線導向協定。以三向交握建立連線,再以序號、確認應答(ACK)與重傳,讓資料不缺漏、不重複,並依傳送的順序送達。也以流量控制與壅塞控制調整傳送量。網頁存取(HTTP/1.1、HTTP/2)、電子郵件、SSH等都使用TCP。

日文名稱: TCP

「TCP(傳輸控制協定)」出現在2領域的17道練習題中(電腦網路基礎, Web技術基礎等)。

這個名詞所屬的領域: 電腦網路基礎

確實送達的機制

TCP替傳送資料的每一個位元組加上連續編號(序號)。接收端回傳「下一次請從這個編號開始送」的確認應答(ACK),傳送端若在規定時間內沒有收到ACK,就重新傳送該資料(重傳逾時)。若連續收到3個相同編號的ACK(重複ACK),則不等逾時就立即重傳(快速重傳)。接收端會把順序錯亂送達的資料重新排好、丟棄重複的部分,並以檢查和找出損壞的資料。從應用程式看來,資料是沒有分隔的位元組流(串流)。

以視窗決定傳送量

傳送端在等待ACK之前,可以連續送出最多一個視窗大小的資料。配合接收端告知的緩衝區剩餘空間(接收視窗)是流量控制;傳送端依網路的擁擠程度增減自己的壅塞視窗則是壅塞控制,實際上會取兩者中較小的一方。由於每個往返時間(RTT)只能送出一個視窗的量,吞吐量大約是視窗÷RTT。例如視窗64 KB、RTT 100 ms時,上限約為5 Mbit/s,因此要善用高速的遠距線路,就要以視窗縮放選項加大視窗。

標頭與連線的管理

TCP標頭在沒有選項時為20位元組,包含來源與目的地的連接埠號碼、序號、確認應答號碼、SYN、ACK、FIN、RST等旗標、視窗大小與檢查和。一條連線由來源與目的地的IP位址及連接埠號碼這4個值區分。連線以三向交握開始,雙方向各自送出FIN後關閉。只要遺失一個區段,即使後面的資料已經送達,也無法交給應用程式而必須等待(線頭阻塞),因此HTTP/3改用UDP之上的QUIC。

練習TCP(傳輸控制協定)的題目

在TCP/IP的四層模型中,TCP與UDP屬於哪一層?

  1. A應用層
  2. B網際網路層
  3. C傳輸層
查看答案與解析

正確答案:C. 傳輸層

TCP/IP模型由下而上分為連結層(網路介面層)、網際網路層、傳輸層、應用層4層。TCP與UDP是傳輸層的協定,使用連接埠號碼區分通訊是要送給終端上的哪一個應用程式。網際網路層的IP負責把封包從一台終端送到另一台終端。HTTP與DNS則是應用層的協定。若與OSI參考模型對應,傳輸層相當於第4層,網際網路層相當於第3層。

在建立TCP連線的三向交握中,交換封包的順序下列何者正確?

  1. ASYN → ACK → FIN
  2. BACK → SYN → SYN+ACK
  3. CSYN → SYN+ACK → ACK
查看答案與解析

正確答案:C. SYN → SYN+ACK → ACK

三向交握中,首先由用戶端以SYN請求連線,並告知自己要傳送之資料的起始編號(初始序號)。伺服器以SYN+ACK確認(ACK)已收到,同時告知自己的初始序號。最後用戶端回傳ACK,雙向通訊便準備就緒。透過三次交換確認雙方向的序號,可防止延遲抵達的舊封包等造成錯誤的連線。因此,TCP在開始傳送資料之前至少需要一個往返時間(RTT)。FIN用於結束連線。

常見問題

TCP與UDP有什麼不同?

TCP會建立連線,以確認應答、重傳與順序控制確實送達資料。UDP沒有建立連線的程序也不重傳,只是把資料包送出,因此標頭小、延遲也少。需要完整性的網頁與檔案傳輸使用TCP;比起偶爾遺失,更重視低延遲的通話,以及很短的DNS查詢則使用UDP。

TCP什麼時候會重傳?

有兩種時機:一是送出後超過重傳逾時時間(由RTT的量測計算)仍未收到ACK;二是連續收到3個相同確認應答號碼的ACK,後者稱為快速重傳。若重傳持續失敗,逾時時間會一次次加倍。

為什麼TCP的吞吐量比線路速度低?

因為每個往返時間只能送出視窗大小的資料,對方越遠、視窗越小,吞吐量就越低。封包遺失使壅塞控制縮小視窗時,或接收端應用程式讀取較慢時,吞吐量也會下降。

解析中的「TCP(傳輸控制協定)」

出現「TCP(傳輸控制協定)」的題目(17題)

  1. 在TCP/IP的四層模型中,TCP與UDP屬於哪一層?
  2. 在建立TCP連線的三向交握中,交換封包的順序下列何者正確?
  3. 以HTTPS(在TCP之上的TLS 1.3)重新連線到RTT(往返時間)為100 ms的Web伺服器,從送出第一個請求到開始收到回應,所需時間最接近下列何者?假設DNS名稱解析已完成,並忽略伺服器的處理時間與資料的傳輸時間。
  4. 在TCP的流量控制中,接收端向傳送端通知視窗大小(接收視窗)的目的,下列何者正確?
  5. 某TCP連線的接收視窗固定為65536位元組,RTT為10 ms,線路頻寬足夠大且沒有遺失。此連線可得到的傳輸量上限最接近下列何者?
  6. 下列關於TCP壅塞控制之基本概念的敘述,何者正確?
  7. TCP的傳送端判斷區段遺失而重傳的時機,下列何者正確?
  8. 在1 Gbps的乙太網路上,讓IP封包的大小填滿MTU的1500位元組,持續傳送TCP資料。設IPv4標頭為20位元組、TCP標頭為20位元組、乙太網路標頭與FCS合計18位元組、前置碼與訊框間隙合計20位元組,則應用程式資料之傳輸量的上限最接近下列何者?
  9. 從RTT為40 ms的Web伺服器,依序一個一個取得1個HTML以及它所參照的4張影像。假設建立TCP連線需要1個往返,每次請求與回應需要1個往返,並且不考慮資料的傳輸時間、伺服器的處理時間、TLS以及連線的中斷。每個物件都建立新TCP連線的情況,與重複使用一條TCP連線(持續連線)的情況,所需時間的差為下列何者?
  10. 把1.5 MB的文字資料以gzip壓縮為3分之1的大小後傳送。頻寬為10 Mbps、RTT為100 ms,在開始傳送資料之前,TCP連線、TLS交握、HTTP請求合計需要3個往返。假設1 MB = 10^6 位元組,並忽略壓縮與解壓縮的時間、標頭,以及TCP壅塞控制造成的等待。到接收完資料為止的時間,最接近下列何者?
  11. 在OSI參考模型中,使用IP位址這類邏輯位址,在不同網路之間轉送封包並送達目的地的是哪一層?
  12. 傳送網頁資料時,在傳送端每當資料從上層交給下層時會發生什麼事?下列何者正確?
  13. 下列關於UDP特徵的敘述,何者正確?
  14. DNS(網域名稱系統)的主要功能,下列何者正確?
  15. 以100 Mbps的線路傳送100 MB的檔案,所需時間最接近下列何者?忽略標頭等額外負擔與延遲,並設 1 MB = 10^6 位元組。

出現這個名詞的比較

相關名詞

封包 HTTP(超文字傳輸協定) RTT(往返時間) IP(網際網路協定) UDP(使用者資料包協定) DNS(網域名稱系統) TLS QUIC 壅塞控制 路由器

前往名詞解釋列表