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