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