# TCP - Transport Layer Protocol [TOC] ## 課程影片 ### 第 8A 講 TCP 與網路阻塞偵測與控制技術 L08 1 {%youtube uQTHgAYg21I %} ## Transport Layer:行程到行程的傳輸抽象層 L4 希望提供 *end-to-end* 的傳輸,也就是由「一台主機上的某個行程」往「另外一台主機上的某個行程」傳輸的抽象層。雖然這邊說是「行程」,但實際上這兩個端點是以傳輸的 *port* 作為識別的。所以更明確地說,應該是「一個主機上的某個 *port*」 到「另外一個主機上的某個 *port*」這樣的抽象層。 ## 兩種能力 除此之外,還期待在能夠在這之上,提供具備更多能力的服務。這些能力包含: ### 目標一:在不可靠的 IP 上提供可靠的服務 IP 是一個不可靠的協定,因此如果希望有一個可靠的傳輸協定,就要想辦在這之上設計一個可靠的傳輸演算法。這個「可靠」包含了幾件事。首先,希望傳輸的時候能夠有方法能夠保證封包送達,並且除了送達之外,還要可以保持「順序」,也就是先送的要先到。即使重送,那也要保證同一份資料只會收到一份。最後,要可以提供任意大的資料傳送。 ### 目標二:能夠控制傳輸的步調 除了對於資料送達的保障之外,還希望可以對於傳輸的步調有一定的控制。這個包含了發送方與接收方的傳輸要有同步機制,以及接收方要有方法控制接收的「流量」。 ## 兩種服務:UDP 與 TCP 在 *transport layer* 中的兩個主要的協定是 TCP 與 UDP。其中: 1. *UDP*:在 IP 之上的一個不可靠傳輸服務。既然是不可靠,那為什麼不要只用 IP 就好,還要在 *transport layer* 多此一舉呢?這是因為 *transport layer* 提供「行程對行程之間的傳輸」這個抽象層,而 IP 是主機對主機之間的傳輸。換句話說,主機收到封包時,要有能力將封包送給對應的行程。而這件事情稱為 *demultiplexing*。 2. *TCP*:可靠的傳輸服務。