1. 程式人生 > >運輸層協議TCP—UDP

運輸層協議TCP—UDP

運輸層向他上面的應用層提供通訊服務。屬於面向通訊部分的最高層,同時也是使用者功能中的最低層。通訊的真正端點是主機中的程序而非主機。
網路層提供端到端的邏輯通訊,運輸層提供應用程序之間的邏輯通訊。
運輸層還要對接收的報文進行差錯檢測。在網路層中,IP資料報中的檢驗和欄位,只檢查首部而不檢查資料部分。

運輸層-程序之間的通訊。
網路層-端到端通訊,也即主機間的通訊。


軟體埠是應用層的各種協議程序與運輸實體進行層間互動的一種地址。
埠只具有本地意義。標記的是本計算機應用層的各個程序與運輸層互動時使用的層間介面。在網際網路中不同的計算機中,相同的埠沒有關聯。(區別於IP地址的全域性意義)
埠號:16位,2B

。提供了65535個不同的埠號
1. 0~49151 伺服器使用的埠號。又分為熟知埠號和登記埠號。**熟知埠號(系統埠號)**0~1023.如:FTP-23、TELNET-23、SMTP-25、DNS-53、TFTP-69、HTTPS-443。登記埠號,1024~49151,為沒有熟知埠號的應用程式使用。
2. 49152~65535 客戶端使用埠號。僅在客戶程序執行時才動態選擇,因此又叫做短暫埠號。

運輸層的兩個主要協議 TCP和UDP
TCP(Transmission Control Protocol)傳輸控制協議
UDP(User Datagram Protocol)使用者資料報協議
使用場景:


TCP:下載應用程式。
UDP:要求主機以恆定的速率傳送資料。允許網路阻塞時丟失部分資料,但不允許資料有較大的實時延。實時應用(如IP電話,實時視訊會議等)

UDP:無連線、盡最大努力交付,面向報文,無擁塞控制
UDP資料與IP資料
1.無連線。傳送資料時不需建立連線。減少了開銷和傳送資料的時延
2.盡最大努力交付。不保證可靠交付,因此主機不需要維持複雜的連線狀態表。
3. 面向報文。傳送方的UDP對應用層交下來的報文,新增UDP首部之後就交付給網路層。應用層給UDP多長的報文,UDP照樣傳送,即一次傳送一個報文。因此應用程式必須選擇合適大小的報文。報文太長,到網路層會拆分報文降低IP層效率。報文太短,IP資料報的首部長度太大,降低IP層效率。
4. UDP無擁塞控制。網路出現阻塞時不會使源主機的傳送效率降低、允許丟失一些資料,但不允許有較大時延。
5. 支援一對一、一對多、多對一和多對多的互動通訊。
6. UDP首部開銷小。只有8B。UDP的檢驗和把首部和資料一起檢驗。(IP校驗和檢驗首部,不檢驗資料)
UDP首部

TCP:面向連線、點對點、可靠服務、全雙工通訊。面向位元組流。
1. 面向連線。應用層在使用TCP協議之前,會建立TCP連線(三次握手)
2. 點對點。每一條TCP連線只能連兩個端點(這個端點不是主機IP地址,不是應用程序,不是埠,連線的是套接字(又稱插口)),因此點對點服務。
套接字socket=(IP地址:埠號)
每一條TCP連線唯一的唄通訊兩端的兩個端點(即兩個套接字)所確定,即:
TCP連線 ::={socket1,socket2}={(IP1:port1),(IP2:port2)}
3. 可靠服務。通過TCP連線傳送的資料,無差錯、不丟失,不重複、按序到達。
4. 全雙工通訊。TCP允許通訊雙方的應用程序在任何時候都能傳送資料。TCP連線的兩端都設有傳送快取和接受快取,用來臨時存放雙方通訊的資料。
5. 面向位元組流。“流”-流入到程序或從程序流出的位元組序列。雖然應用程式和TCP互動是一次一個資料塊(大小不等)。但TCP把應用程式交下來的資料看成一串無結構的位元組流 。收到10個數據塊,但可能只交付3.5個數據塊 。