在TCP/IP的傳輸層,提供了兩種數據傳輸服務,即TCP和UDP。在Internet網絡架構中,傳輸層占有非常重要的地位,需要從兩種傳輸服務的數據單元格式來分析。
首先,傳輸層中有一個非常重要的概念參考,即端口。1.端口
端口用于區分不同的應用程序進程或不同的連接號。在實際應用中,經常會同時打開多個IE瀏覽器窗口來瀏覽不同站點的網絡資源,或者還有其他的網絡應用窗口。在計算機系統中,每打開一個應用程序,就意味著至少打開了一個進程(什么是進程,請參考第11章問題4-1),打開多個IE窗口就是打開多個進程.那么,當應用層的各個進程產生的數據報被傳輸層服務時,就會遇到TCP或UDP同時為多個應用進程提供并發服務的問題,即多個應用進程可能需要通過相同的TCP 或UDP 協議。服務接入點傳輸數據,見圖4-6。
為了區分上層不同的應用進程或連接,當應用層協議與傳輸層協議交互時,傳輸層使用不同的端口號來描述上層應用在傳輸層的通信路徑。因此,端口號對于上層應用程序來說是一個非常重要的識別標志。端口號分為兩類:一類是知名端口,一類是動態端口。
1)知名端口
眾所周知的端口(Well Known Ports): 來自。到1023。這些端口與某些服務緊密綁定,并指示該服務的應用層協議。該類端口采用全局分配,屬于集中控制方式。經認可的中央機構根據用戶服務需要進行統一分配,并向社會公布結果。比如80端口明確告知所有客戶,應用層是HTTP協議通信,21端口是FTP協議通信等。如果有一個服務器提供web服務,希望全世界的用戶都能訪問它的資源,它必須打開80端口并在這個端口上等待,等待隨時為客戶提供HTTP服務。
2)動態端口
動態端口(Dynamic Ports) :從1024到65535。之所以稱為動態端口,是因為它們一般不會固定分配給特定的應用程序。這類端口采用本地分配,是一種動態控制方式。一個進程如果需要傳輸層服務,首先要向本地操作系統申請一個端口,操作系統從可用的動態端口號中隨機返回一個本地未使用的端口號。應用獲取的端口號是綁定的。當進程關閉時,占用的端口號也被釋放。
【示例】客戶端啟動Yahoo Messger應用時,客戶端至少要啟動兩個會話進程,隨機獲取的兩個動態端口分別連接到Yahoo服務器和賬戶驗證中心。例如, 的進程連接是與Yahoo 的本地端口2192。服務器5050端口的連接,另一個過程是本地2196端口與雅虎賬號驗證中心433端口的連接。
2192和2196是客戶端動態分配的端口號,433是雅虎賬號驗證中心的服務端口,5050是雅虎服務器的服務端口(這里服務器端口5050是動態端口號指定的,實際應用中可能會出現的情況有很多,比如QQ應用等)。
當客戶端和在線好友通過YahooMessger聊天窗口進行文字聊天時,會在客戶端建立一個新的會話進程,比如:的本地5101端口與對方4548端口的連接。如果想給離線的某位好友留言,消息會從本地2192端口和雅虎服務器端口5050建立的連接投遞到雅虎服務器,再由對方投遞給對方。雅虎服務器代理。
常見的端口號如表4-1所示。2. TCP/UDP協議
1)TCP協議
TCP(Transmission Control Protocol)傳輸控制協議是一種面向連接的、可靠傳輸的通信協議。
什么是面向連接,要在對等傳輸層之間傳輸數據,發送方和接收方首先要建立數據傳輸的邏輯通信鏈路(TCP的“三次握手”,見下文解釋),之后數據傳輸完畢,需要斷開這個連接。可靠傳輸的原因是TCP可以保證發送方和接收方之間數據傳輸的完整性(不丟失,不誤傳),即接收方每收到一個來自發送方相應層的TCP數據報,經過驗證無誤,必須向發件人發回確認信息,否則發件人將重新發送。這種數據傳輸方式就像我們日常生活中打電話一樣。首先,我們需要建立通話連接,然后開始通話,最后斷開連接。因此,這種服務方式的數據傳輸適用于一次傳輸大量數據且需要可靠傳輸的應用。
2) UDP協議UDP(User Datagram Protocol)用戶數據報協議,是一種面向非連接的、不可靠傳輸的簡單通信協議。
UDP的無連接通信,即發送端UDP收到上層應用傳遞下來的數據報,添加UDP協議頭信息后就直接向下交付給網絡層。其不可靠傳輸,即接收端收到UDP數據報后,對校驗沒問題的數據報直接向上層提交報文數據,不需要向發送端回送確認;而校驗有問題的數據報則直接丟掉。因丟掉的數據報不需要重傳,故無法保證傳送數據的完整性.這種數據傳輸方式就如同我們日常生活中通過郵局郵遞普通信件一樣,發信方將信件投人某郵遞信筒即可,不用關心信件是否能送到;收信方收到信件后也不裕要向發信方確認。
這種服務方式的數據傳輸適合一次傳輸小量、可靠性要求不高的應用中。
如圖4-7所示,應用層要求傳輸層提供可靠傳輸服務的有HTTP, FTP, Telnet和SMTP等,它們都需要高度的可靠性和完整性。

而TFTP以及SNMP在兩端傳輸的數據均是很簡單的數據,如網絡設備配置信息或網絡管理信息,通過UDP能達到基本的數據傳輸需求。還有像QQ等即時通信工具,在網絡通信良好的情況下,語音數據均優先使用UDP進行傳輸。因為使用UDP可減少信道的額外開銷,不需要建立連接、維持連接,更不需要在端到端之間傳遞確認消息;UDP協議頭本身比TCP小很多,也減少了信道占用帶寬,提高了信道的數據傳輸速率。
我們專注高端建站,小程序開發、軟件系統定制開發、BUG修復、物聯網開發、各類API接口對接開發等。十余年開發經驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!