通信網絡的小論文
TCP傳輸的可靠性
【摘要】:傳輸控制協(xié)議(TCP)是為了在不可靠的互聯(lián)網上提供一個可靠的端到端的、面向字節(jié)流連接而設計的,它為IP服務增加了面向連接和可靠性的特點。TCP提供了傳輸層幾乎所有的功能,保證數據傳送可靠、按序、無丟失和無重復。
【關鍵詞】:面向連接 端到端 字節(jié)流 可靠性
【Abstract】:Transmission control protocol (TCP) is designed for providing a reliable end-to-end,connected with the byte stream oriented for the unreliable Internet.It adds the characteristics of connection-oriented and reliability for IP service.TCP provides nearly all of the transport layer functions, to ensure reliable data transmission, sequential, no loss and no repeat.
【Key Words】:Connection-oriented end-to-end byte stream reliability
一、引言
UDP是一個簡單的協(xié)議,是實現(xiàn)最低傳輸要求的傳輸層協(xié)議。但是對于大多數Internet應用,更需要可靠、按序遞交的傳輸層協(xié)議。TCP協(xié)議具有面向連接和可靠性的特點,它使用端口號來完成進程到進程的通信。TCP為應用層提供全雙工服務,所有連接都是點到點的。目前許多流行應用程序都采用了TCP,如Telnet、FTP、SMTP等,而這些應用通常是用戶進程。
二、TCP的連接管理與釋放
TCP是面向連接的傳輸層協(xié)議。在每一次數據傳輸之前首先要在通信雙方建立一條連接,即在源進程和目的進程之間建立一條虛路徑。通過兩個過程完成:建立連接和釋放連接。
1、建立連接
TCP以全雙工方式傳送數據。在任何數據傳送之前,要使每一方能確知對方的存在。
TCP協(xié)議中建立連接采用三次握手(three-way handshake)的方式實現(xiàn)。
2、連接釋放
由于TCP連接是全雙工的,因此每個方向都必須單獨進行關閉。這原則是當一方完成它的數據發(fā)送任務后就能發(fā)送一個FIN來終止這個方向的連接。收到一個 FIN只意味著這一方向上沒有數據流動,一個TCP連接在收到一個FIN后仍能發(fā)送數據。首先進行關閉的一方將執(zhí)行主動關閉,而另一方執(zhí)行被動關閉。
TCP連接釋放需要4次握手。
三、流量控制
TCP采用可變大小的滑動窗口協(xié)議進行流量控制。TCP連接的每一方都有固定大小的緩沖空間用來暫存從應用程序傳遞來并準備發(fā)送的數據。滑動協(xié)議窗口協(xié)議定義了在緩存上的一個窗口。TCP發(fā)送數據的大小由窗口定義。雙方為每個連接各使用一個窗口。
在TCP報文段首部的窗口大小字段的值就是當前給對方設置的窗口值。 發(fā)送窗口在連接時由雙方商定,在通信過程中,接收方可根據自己資源情況,隨時動態(tài)調整。如果網絡發(fā)生擁塞,實際窗口可能變小。
當窗口的大小為0時,發(fā)送端不能再發(fā)送數據,但是有兩種例外情況:(1)緊急數據可以發(fā)送;(2)發(fā)送方想讓接收方重新宣布下一個期望的字節(jié)和窗口大小,則可以發(fā)送一個字節(jié)的數據段。
四、差錯控制
TCP差錯控制包括檢測受到損傷的報文段、丟失的報文段、失序的報文段和重復的報文段,以及檢測出差錯后糾正差錯,它除了使用檢驗和,還使用確認技術和超時機制。
1、丟失或受到損傷的報文段
TCP的每一個報文段都包括校驗和字段,如果檢查出某個報文段受到損傷,則接收端TCP就丟棄這個報文段。TCP沒有否認機制,若某報文段在超時之前沒有被確認,則被認為受到損傷或已丟失,發(fā)送端重傳這個報文段。
2、重復的報文段
當超時截止期到但還沒有收到確認報文時,發(fā)送端就會重發(fā)這個報文段。在接收端,當它收到的'這個報文段序號與已接收到的另一個報文段序號相同時,那么接收端簡單丟棄這個報文段。
3、失序的報文段
TCP報文段封裝在IP數據報中。每一個IP數據報進行獨立的路由選擇。TCP報文段可能失序到達。接收端TCP處理失序報文段的方法是不予確認,只有當被確認的字節(jié)之前的所有數據都已經接收到,才發(fā)送確認報文段。如果確認延遲了,在發(fā)送端TCP的失序報文段的計時器截止期到,則重新發(fā)送這個報文段。重復的報文將被接收端TCP丟棄。
4、丟失確認
在TCP的確認機制中,使用累計確認系統(tǒng)。每一個確認報文段證實了一直到由確認號指明的字節(jié)為止的所有字節(jié)都已經收到。TCP發(fā)送方使用超時機制來恢復報文段丟失問題。TCP使用累計確認系統(tǒng)。
五、定時器管理
1、重傳定時器
為了實現(xiàn)TCP協(xié)議,對每個連接TCP管理4個不同的定時器。重傳定時器是用于處理重傳時間的。重傳時間是指等待某個報文段確認的時間。重傳時間的確定與TCP連接的往返時間RTT有關。重傳時間可基于往返時間實現(xiàn)動態(tài)化調整。TCP不能對所有連接使用相同的重傳時間。如重傳時間太短,會導致對正在傳輸途中報文段的重傳,增加網絡負荷。如設置太長,一旦分組丟失,會使網絡傳輸效率降低。TCP采用動態(tài)重傳時間策略。
TCP每發(fā)送一個報文段后就啟動重傳定時器。如果在定時器超時前收到確認報文,定時器被停止。如果超時還沒有收到確認報文,則報文重傳,定時器復位。用于下一個報文段重傳時間計算的RTT值修正:
RTT=α×(前一個RTT)+(1- α) ×(當前的RTT)α:修正因子(0 ≤ α < 1)
Karn修正算法:重傳時間=βRTT
Karn提出的解決方法是:當一個超時和重傳發(fā)生時,在重傳數據段的確認報文最后到達前,不更新RTT,且每重傳一次,超時時間加倍。決定了以前估計的RTT所占的權重。每次進行新測量時,RTT將得到更新。每個新RTT的90%來自前一個RTT,10%取自當前。
2、持續(xù)定時器
為了防止死鎖情況發(fā)生,TCP對每一個連接使用一個持續(xù)定時器,當發(fā)送端TCP收到窗口大小為0的確認報文段時就啟動它。如果持續(xù)定時器超時,發(fā)送端就給接收端發(fā)送一個只有一個字節(jié)數據的探測報文段。接收端對探測報文段的響應必須重傳確認報文段,以將窗口大小告訴發(fā)送方。如果窗口大小非0,就可以發(fā)送數據了;如果還為0,則持續(xù)定時器再次設置,直至收到窗口大小非0的確認報文。
3、保活定時器
保活定時器用來防止一個連接較長時期的空閑。;罟δ芫褪窃噲D讓服務器端能檢測到這種半開放的連接。在大多數的實現(xiàn)中,都是為服務器設置;钣嫊r器。 每當服務器收到客戶端的信息,將定時器復位。超時常設為2h。如在連接空閑2h后,服務器發(fā)送探測報文段,查看客戶端是否仍存在。保活功能主要為服務器應用進程提供,服務器可以獲知客戶是否崩潰、關機或重啟了。
4、時間等待定時器
每個連接使用的最后一個定時器是時間等待定時器。在關閉連接時該連接處于Timed_Wait狀態(tài)中。時間等待定時器的值通常設置為一個報文段預計的最大生存時間的兩倍。
六、結語
綜上所述,TCP通過下列方式來提供可靠性:
1、應用數據被分割成TCP認為最適合發(fā)送的數據塊。這和UDP完全不同,應用程序產生的數據報長度將保持不變。
2、當TCP發(fā)出一個段后,它啟動一個定時器,等待目的端確認收到這個報文段。如果不能及時收到一個確認,將重發(fā)這個報文段。
3、當TCP收到發(fā)自TCP連接另一端的數據,它將發(fā)送一個確認。這個確認不是立即發(fā)送,通常將推遲幾分之一秒 。
4、 TCP將保持它首部和數據的檢驗和。這是一個端到端的檢驗和,目的是檢測數據在傳輸過程中的任何變化。如果收到段的檢驗和有差錯,TCP將丟棄這個報文段和不確認收到此報文段。
5、既然TCP報文段作為IP數據報來傳輸,而IP數據報的到達可能會失序,因此TCP報文段的到達也可能會失序。如果必要,TCP將對收到的數據進行重新排序,將收到的數據以正確的順序交給應用層。
6、既然IP數據報會發(fā)生重復,TCP的接收端必須丟棄重復的數據。
7、TCP還能提供流量控制。TCP使用的流量控制協(xié)議是可變大小的滑動窗口協(xié)議。
【通信網絡的小論文】相關文章:
網絡通信原理論文03-10
網絡安全的小論文03-17
網絡分析小論文03-31
智能建筑通信網絡研究的論文06-01
通信網絡安全維護措施的論文06-26
網絡即時通信的原理和實現(xiàn)論文07-02
網絡技術在電力信息通信中的應用論文04-13
電力通信網絡管理系統(tǒng)結構論文07-02