運輸層在計算機網絡五層協定的位置
關鍵字說明
計算機通信:通信就是交換資料,例:主機A與主機B通信,即為主機A與主機B交換資料
主要層負責
- 網絡層:負責主機與主機之間的通信,例:主機A與主機B通信
- 應用層:負責主機程序與主機程序之間的通信,例:主機A中的QQ程式與主機B中的QQ程式通信(同一個主機上會有多個不同的應用)
-
:為應用層程序通信提供服務,應用層有許多應用,網絡層為應用層提供通用的通信服務網絡層
總結:IP層(同網際層)為主機之間提供邏輯通信,而運輸層為應用程序之間提供端到端的邏輯通信
程序之間的通信
從IP層(同網際層)來說,通信的兩端是兩台主機。IP資料報的首部明确地标志了這兩台主機的IP位址。下圖為IP資料報格式
從IP層來說,隻是負責兩台主機之間通信的兩端是。由于主機中運作多個應用(如浏覽器,QQ,Foxmail郵件等應用)。也就是說真正進行通信的實體是在主機中的程序(一個應用可了解為一個程序),即這台主機中的一個程序和另一台主機中的一個程序在交換資料。
那麼運輸層在程序之間通信承接什麼重要的功能
假設有兩台主機X,Y。其中應用A與應用C互相通信,應用B與應用D互相通信。而IP層隻負責主機X與主機Y之間的通信,那麼傳輸層将必須具有重要的功能,
複用
和
分用
上述圖檔隻說明了單方向資料傳輸,實際上是雙向傳輸,這裡為了簡單說明
- 複用,複用是站在發送端角度來看,由于主機運作的應用有多個,但是他們都需要進行應用通信,也就是需要發送資料,那麼運輸層可以為不同的應用提供發送資料服務,則可以了解為不同的應用共同使用運輸層提供的端對端通信服務(端對端可了解為程序之間的通信)
- 分用,複用是站在接收端角度來看,由于主機運作的應用有多個,那麼如何将運輸層收到的通信資料正确傳遞到正确的應用(如,是把資料傳遞給QQ應用,還是浏覽器應用),那麼運輸層可以為不同的應用提供接收資料服務
運輸層還包括其他功能如,對收到的封包進行差錯檢查,這裡就不再說明
總結:從通信和資訊處理的角度看,
運輸層向它上面的應用層提供通信服務
,它屬于面向通信部分的最高層,同時也是使用者功能中的最低層
運輸層的重要協定
TCP/IP 的運輸層有兩個不同的協定:
- 使用者資料報協定UDP(User Datagram Protocol)
- 傳輸控制協定TCP(Transmission Control Protocol)
兩種協定所在位置
按照OSI的術語,兩個對等運輸實體在通信時傳送的資料機關叫做
運輸協定資料單元TPDU(Transport Protocol Data Unit)
。但在TCP/IP體系中,則根據所使用的協定是TCP或UDP,分别稱之為
TCP封包段(segment)
或
UDP使用者資料報
。
- UDP在傳送資料之前
。遠地主機的運輸層在收到UDP封包後,不需要給出任何确認。雖然UDP不提供可靠傳遞,但在某些情況下UDP卻是一種最有效的工作方式(大多數應用遠端客戶大多時候都不線上,若使用TCP,則要先建立連接配接才能傳輸資料)。不需要先建立連接配接
- TCP則
。在傳送資料之前必須先建立連接配接,資料傳送結束後要釋放連接配接。TCP不提供廣播或多點傳播服務。由于TCP要提供可靠的、面向連接配接的運輸服務,是以不可避免地增加了許多的開銷,如确認、流量控制、計時器以及連接配接管理等。這不僅使協定資料單元的首部增大很多,還要占用許多的處理機資源。提供面向連接配接的服務
一些應用和應用層協定主要使用的運輸層協定(UDP或TCP)
應用 | 應用層協定 | 運輸層協定 |
---|---|---|
域名系統 | DNS | UDP |
檔案傳送 | TFTP | UDP |
路由選擇協定 | RIP | UDP |
動态IP位址配置 | DHCP | UDP |
網絡管理 | SNMP | UDP |
遠端檔案伺服器 | NFS | UDP |
IP電話 | 專用協定 | UDP |
流式多媒體通信 | 專用協定 | UDP |
多點傳播 | IGMP | UDP |
電子郵件 | SMTP | TCP |
遠端終端輸入 | TELNET | TCP |
網際網路 | HTTP | TCP |
檔案傳送 | FTP | TCP |
運輸層的端口
圖一
圖二
上述我們提到了複用與分用的概念,那麼計算機是如何來實作這個功能呢?
當我們啟動一個應用後,會為計算機的程序配置設定一個程序辨別符,稱為程序的PID
那我們是否可以使用程序的PID來實作複用與分用功能,答案是不可行的,可以簡述為以下幾點
- 計算機的作業系統種類很多,而不同的作業系統又使用不同格式的程序辨別符,無法統一
- 由于程序的建立和撤銷都是動态進行的,PID可以随着變化,是以通信的雙方很難知道對方主機運作着哪些程序,即無法知道對方有哪些程序PID
- 同一台主機可以啟動相同的應用,如啟動多個QQ應用,那麼PID肯定是多個,且PID數字是任意的,那麼通信的雙方幾乎很難知道對方有哪些程序PID
為了使運作不同作業系統的計算機的應用程序能夠互相通信,就
必須用統一的方法
對 TCP/IP 體系的應用程序進行标志。解決這個問題的方法就是在運輸層使用
協定端口号
(protocol port number),或通常簡稱為
端口
(port)
簡單的可以了解為,端口是将主機中的應用進行統一通信的邏輯區分,即一個端口代表着一個應用,而傳輸層通過端口即可完成通信中的複用與分用功能。這種統一可以屏蔽掉不同作業系統的處理細節。
TCP/IP的運輸層用一個16位端口号來标志一個端口。16位的端口号可允許有65535個不同的端口号(2的16次方-1),這個數目對一個計算機來說是足夠用的。但端口号隻具有本地意義,即不同的主機,相同的端口,運作的應用也是不同的。
端口的分類
根據通信我們可以将通信的雙方分為用戶端與服務端,因為傳輸層的端口号分為兩大類
-
,再細分可以分為兩類,最重要的一類叫做熟知端口号或系統端口号,數值為伺服器端使用的端口号
。這些數值可在網址http://www.iana.org/查到。另一類叫做登記端口号,數值為0~1023
。這類端口号是為沒有熟知端口号的應用程式使用的(比如我們自己開發的某一個應用,服務端可以使用8888)。1024~49151
常用應用 | 端口 | 說明 |
---|---|---|
ftp | 21 | File Transfer Protocol |
ssh | 22 | The Secure Shell (SSH) Protocol |
telnet | 23 | Telnet |
smtp | 25 | Simple Mail Transfer |
domain | 53 | Domain Name Server |
tftp | 69 | Trivial File Transfer |
http | 80 | World Wide Web HTTP |
pop3 | 110 | Post Office Protocol - Version 3 |
sftp | 115 | Simple File Transfer Protocol |
snmp | 161 | SNMP |
imap3 | 220 | Interactive Mail Access Protocol v3 |
https | 443 | HTTPS |
-
數值為用戶端使用的端口号
49151~65535
。由于這類端口号僅在客戶程序運作時才動态選擇,是以又叫做短暫端口号。這類端口号留給客戶程序臨時使用。客戶程序結束後釋放這個臨時端口号,這個端口号就可以供其他
客戶程序使用。