tcp與udp同屬傳輸層的協議。
網路層與運輸層之間的區別:
有無差錯檢測
傳輸層向高層使用者遮蔽了下面網路核心的細節。當運輸層採用面向連線的tcp協議時,儘管下面的網路是不可靠的,但這種邏輯通訊通道就相當於一條全雙工的可靠通道。但運輸層使用無連線的udp時,這種邏輯通訊通道仍然是一條不可靠通道。
tcp則提供面向連線的服務,在傳輸資料之前要先建立連線,資料傳送結束後要釋放連線。tcp不提供廣播或多播服務。由於tcp要提供可靠地、面向連線的運輸服務,因此要增加許多開銷。使用tcp的應用:
運輸層具有復用和分用功能,應用層的所有應用程序都通過運輸層再傳遞到ip,這就是復用。運輸層從ip收到資料後需要交付給指明的應用程序,這是分用。
為了完成分用功能,需要乙個識別各個應用程序的位址方便運輸層進行分發,最終使用的就是埠。這裡的埠指的是應用層的各種協議程序與與運輸實體進行層間互動的一種位址。
tcp與udp的首部中都有源埠和目的埠這兩個重要字段。當運輸層收到ip交上來的報文時就可以根據埠來將資料交付給應用層的目的應用程序。
運輸層採用乙個16位埠號來標識乙個埠。埠號只具有本地意義,只用於標誌本計算機應用層中的各個程序在互動時的層間介面,在網際網路中,相同的埠號是沒有關聯的。
由此可見,兩個計算機中的程序要互相通訊,不僅要知道對方的ip位址(找到對方的計算機),而且還要知道對方的埠號(找到對方計算機中的應用程序)。
下面是一些應用程式的埠號:
udp沒有擁塞控制。因此網路出現的擁塞不會使源主機的傳送速率降低。這對某些實時應用來說很重要,因為他們要求源主機以恆定的速率傳送資料,允許在網路擁塞時丟失一些資料,但卻不允許資料有太大的時延。
udp支援一對
一、一對多、多對一和多對多的互動通訊。
udp的首部開銷小,只有8個位元組。比tcp的20個位元組要短。
tcp傳送的資料是交給ip層傳輸的,但是ip層只能提供盡最大努力交付,也就是說tcp下面的網路提供的是不可靠的傳輸,因此tcp必須採取一些措施使傳輸層之間的通訊變得可靠。
我們可以使用一些可靠傳輸協議,當出現差錯時讓傳送方重新傳輸出現差錯的資料;同時在接收方來不及處理收到的資料時及時告訴傳送方適當降低傳送資料的速度。
停止等待協議
停止等待指的就是每傳送完乙個分組就停止傳送,等待對方的確認。在收到確認後再傳送下乙個分組。
無差錯情況下面圖a的情形。a傳送之後等待,b收到之後就傳送確認,a收到確認後再傳送下乙個分組。
出現差錯上圖中b情況就是出現差錯的情況。b接受m1時出現差錯就丟棄它,其他什麼也不做。也可能是m1在傳輸過程中丟失了。在這兩種情況下b都不會傳送任何訊息。
可靠傳輸協議規定:a只要超過一段時間仍沒有收到確認,就認為剛才傳送的分組丟失了,從而重傳前面傳送的分組,這就是超時重傳。
要實現超時重傳,需要在每發完乙個分組時就設定乙個超時計時器,如果再超時計時器到期之前收到了對方的確認就撤銷已設定的超時計時器。
這裡有幾個注意點:
1. a在傳送完乙個分組後必須暫時保留已傳送的分組的副本(為發生超時重傳時使用)。只有在收到相應的確認後才能清除暫時保留的分組副本。
2. 分組和確認分組都必須進行編號,這樣才能明確是哪乙個發出去的分組收到了確認,而哪乙個分組還沒有收到確認。
3. 超時計時器設定的重傳時間應該比資料在分組中傳輸的平均往返時間更長一些。(從圖b中也能看出來)
顯然如果重傳時間設定的很長那麼通訊的效率就會很低,但是設定的太短的話可能會產生不必要的重傳。
確認丟失和確認遲到圖a中b傳送的確認丟失了,a在超時重傳時間內沒有收到確認,但無法知道是自己傳送的分組丟失、出錯還是b傳送的確認丟失了,因此a在超時計時器到期後就要重傳m1。而此時b又收到了重傳的m1,會採取兩個行動:
1.丟棄這個重複的分組m1,不向上層交付
2.向a傳送確認。不能認為已經傳送過確認就不再傳送,因為a重傳了m1就表示沒有收到確認。
圖b也是一種可能的情況。即傳輸過程中沒有出現差錯,但是b對m1的確認遲到了。a會收到重複的確認,此時就會簡單地丟棄。b同樣會收到重複的m1,同樣是丟棄重複的m1並重新傳送確認。
使用上面的確認和重傳機制,就可以在不可靠的傳輸網路上實現可靠傳輸。
上面的這種可靠傳輸協議常稱為自動重傳請求arq。
停止等待協議的優點是簡單,缺點是通道利用率太低。
a傳送分組的時間為td。b傳送確認分組的時間為ta,rtt為往返時間。
此時的通道利用率為:
u = td/(td+rtt+ta)
當往返時間rtt遠大於傳送時間td時,通道利用率就會非常低。
為了提高傳輸效率,傳送方可以使用流水線傳輸,即傳送方可連續傳送多個分組,不必每發完乙個分組就停止等待確認。這樣可以使通道上一直有資料傳輸,可以獲得很高的通道利用率。
這樣的傳輸方式就是連續arq協議和滑動視窗協議
連續arq協議
傳送方維持乙個傳送視窗,位於傳送視窗內的幾個分組都可以連續傳送出去,而不需要等待對方的確認。
連續arq協議規定:傳送方每收到乙個確認,就把傳送視窗向前滑動乙個分組的位置。
接收方一般都採用累計確認的方式,也就是說接收方不必對收到的分組逐個傳送確認,而是在收到幾個分組後對按序到達的最後乙個分組傳送確認。這就表示到這個分組為止的所有分組都已正確收到了。
累計確認的缺點是不能向傳送方反映出接收方已經收到了所有分組的資訊。
例如當傳送方傳送了前5個分組,但是中間的3個分組丟失了,這時接收方只能對前兩個分組發出確認。傳送方只能把後面的三個分組都重傳一次,這就是go-back-n,表示需要退回來重傳已傳送過的n個分組。因此當通訊質量不好的時候連續arq協議會帶來負面的影響。
計算機網路 TCP與UDP
1.tcp的三次握手過程?為什麼會採用三次握手,若採用二次握手可以嗎?建立連線的過程是利用客戶伺服器模式,假設主機a為客戶端,主機b為伺服器端。1 tcp的三次握手過程 主機a向b傳送連線請求 主機b對收到的主機a的報文段進行確認 主機a再次對主機b的確認進行確認。2 採用三次握手是為了防止失效的連...
計算機網路 TCP與UDP
tcp ip中有兩個具有代表性的傳輸層協議,它們分別是tcp與udp。tcp提供可靠地通訊傳輸。udp則常被用於讓廣播和細節控制交給應用的通訊傳輸。tcp ip的眾多應用協議大多以客戶端 服務端形式執行。客戶端是請求的發起端。服務端是表示提供服務的意思。服務端的程式必須提前啟動,準備接收客戶端的請求...
計算機網路 TCP與UDP
tcp釋放 四次揮手 tcp擁塞控制 1.從連線方面 tcp面向連線 call之前建立連線 udp無連線 2.可靠方面 tcp可靠交付 無差錯 不丟失不重複 按序到達 udp盡最大努力交付,不保證可靠 3.面向什麼 tcp面向位元組流,udp面向報文 4.連線方式 tcp點對點,udp支援一對 一 ...