TCP傳輸控制協(xié)議.doc

TCP傳輸控制協(xié)議.doc

ID:59252396

大?。?7.00 KB

頁數(shù):9頁

時(shí)間:2020-09-08

TCP傳輸控制協(xié)議.doc_第1頁
TCP傳輸控制協(xié)議.doc_第2頁
TCP傳輸控制協(xié)議.doc_第3頁
TCP傳輸控制協(xié)議.doc_第4頁
TCP傳輸控制協(xié)議.doc_第5頁
資源描述:

《TCP傳輸控制協(xié)議.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、傳輸控制協(xié)議(英語:TransmissionControlProtocol,TCP)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,由IETF的RFC793定義。在簡化的計(jì)算機(jī)網(wǎng)絡(luò)OSI模型中,它完成第四層傳輸層所指定的功能,用戶數(shù)據(jù)報(bào)協(xié)議(UDP)是同一層內(nèi)另一個重要的傳輸協(xié)議。在因特網(wǎng)協(xié)議族(Internetprotocolsuite)中,TCP層是位于IP層之上,應(yīng)用層之下的中間層。不同主機(jī)的應(yīng)用層之間經(jīng)常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機(jī)制,而是提供不可靠的包交換。應(yīng)用層向TCP層發(fā)送用于網(wǎng)間傳輸?shù)摹⒂?位字節(jié)表示的

2、數(shù)據(jù)流,然后TCP把數(shù)據(jù)流分區(qū)成適當(dāng)長度的報(bào)文段(通常受該計(jì)算機(jī)連接的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層的最大傳輸單元(MTU)的限制)。之后TCP把結(jié)果包傳給IP層,由它來通過網(wǎng)絡(luò)將包傳送給接收端實(shí)體的TCP層。TCP為了保證不發(fā)生丟包,就給每個包一個序號,同時(shí)序號也保證了傳送到接收端實(shí)體的包的按序接收。然后接收端實(shí)體對已成功收到的包發(fā)回一個相應(yīng)的確認(rèn)(ACK);如果發(fā)送端實(shí)體在合理的往返時(shí)延(RTT)內(nèi)未收到確認(rèn),那么對應(yīng)的數(shù)據(jù)包就被假設(shè)為已丟失將會被進(jìn)行重傳。TCP用一個校驗(yàn)和函數(shù)來檢驗(yàn)數(shù)據(jù)是否有錯誤;在發(fā)送和接收時(shí)都要計(jì)算校驗(yàn)和。運(yùn)作方式TCP連接包括三個狀態(tài):

3、連接創(chuàng)建、數(shù)據(jù)傳送和連接終止。通路的創(chuàng)建TCP用三路握手(three-wayhandshake)過程創(chuàng)建一個連接。在連接創(chuàng)建過程中,很多參數(shù)要被初始化,例如序號被初始化以保證按序傳輸和連接的強(qiáng)壯性。TCP連接的正常創(chuàng)建一對終端同時(shí)初始化一個它們之間的連接是可能的。但通常是由一端打開一個套接字(socket)然后監(jiān)聽來自另一方的連接,這就是通常所指的被動打開(passiveopen)。服務(wù)器端被被動打開以后,用戶端就能開始創(chuàng)建主動打開(activeopen)。1.客戶端通過向服務(wù)器端發(fā)送一個SYN來創(chuàng)建一個主動打開,作為三路握手的一部分。2.服務(wù)器端應(yīng)當(dāng)

4、為一個合法的SYN回送一個SYN/ACK。3.最后,客戶端再發(fā)送一個ACK。這樣就完成了三路握手,并進(jìn)入了連接創(chuàng)建狀態(tài)。數(shù)據(jù)傳輸在TCP的數(shù)據(jù)傳送狀態(tài),很多重要的機(jī)制保證了TCP的可靠性和強(qiáng)壯性。它們包括:使用序號,對收到的TCP報(bào)文段進(jìn)行排序以及檢測重復(fù)的數(shù)據(jù);使用校驗(yàn)和來檢測報(bào)文段的錯誤;使用確認(rèn)和計(jì)時(shí)器來檢測和糾正丟包或延時(shí)。串行號和確認(rèn)在TCP的連接創(chuàng)建狀態(tài),兩個主機(jī)的TCP層間要交換初始序號(ISN:initialsequencenumber)。這些序號用于標(biāo)識字節(jié)流中的數(shù)據(jù),并且還是對應(yīng)用層的數(shù)據(jù)字節(jié)進(jìn)行記數(shù)的整數(shù)。通常在每個TCP報(bào)文段中

5、都有一對序號和確認(rèn)號。TCP報(bào)文發(fā)送者認(rèn)為自己的字節(jié)編號為序號,而認(rèn)為接收者的字節(jié)編號為確認(rèn)號。TCP報(bào)文的接收者為了確??煽啃裕诮邮盏揭欢〝?shù)量的連續(xù)字節(jié)流后才發(fā)送確認(rèn)。這是對TCP的一種擴(kuò)展,通常稱為選擇確認(rèn)(SelectiveAcknowledgement)。選擇確認(rèn)使得TCP接收者可以對亂序到達(dá)的數(shù)據(jù)塊進(jìn)行確認(rèn)。每一個字節(jié)傳輸過后,ISN號都會遞增1。通過使用序號和確認(rèn)號,TCP層可以把收到的報(bào)文段中的字節(jié)按正確的順序交付給應(yīng)用層。序號是32位的無符號數(shù),在它增大到232-1時(shí),便會回繞到0。對于ISN的選擇是TCP中關(guān)鍵的一個操作,它可以確保

6、強(qiáng)壯性和安全性。數(shù)據(jù)傳輸舉例TCP數(shù)據(jù)傳輸1.發(fā)送方首先發(fā)送第一個包含串行號為1(可變化)和1460字節(jié)數(shù)據(jù)的TCP報(bào)文段給接收方。接收方以一個沒有數(shù)據(jù)的TCP報(bào)文段來回復(fù)(只含報(bào)頭),用確認(rèn)號1461來表示已完全收到并請求下一個報(bào)文段。2.發(fā)送方然后發(fā)送第二個包含串行號為1461和1460字節(jié)數(shù)據(jù)的TCP報(bào)文段給接收方。正常情況下,接收方以一個沒有數(shù)據(jù)的TCP報(bào)文段來回復(fù),用確認(rèn)號2921(1461+1460)來表示已完全收到并請求下一個報(bào)文段。發(fā)送接收這樣繼續(xù)下去。3.然而當(dāng)這些數(shù)據(jù)包都是相連的情況下,接收方?jīng)]有必要每一次都回應(yīng)。比如,他收到第1到

7、5條TCP報(bào)文段,只需回應(yīng)第五條就行了。在例子中第3條TCP報(bào)文段被丟失了,所以盡管他收到了第4和5條,然而他只能回應(yīng)第2條。4.發(fā)送方在發(fā)送了第三條以后,沒能收到回應(yīng),因此當(dāng)時(shí)鐘(timer)過時(shí)(expire)時(shí),他重發(fā)第三條。(每次發(fā)送者發(fā)送一條TCP報(bào)文段后,都會再次啟動一次時(shí)鐘:RTT)。1.這次第三條被成功接收,接收方可以直接確認(rèn)第5條,因?yàn)?,5兩條已收到。校驗(yàn)和TCP的16位的校驗(yàn)和(checksum)的計(jì)算和檢驗(yàn)過程如下:發(fā)送者將TCP報(bào)文段的頭部和數(shù)據(jù)部分的和計(jì)算出來,再對其求反碼(一的補(bǔ)數(shù)),就得到了校驗(yàn)和,然后將結(jié)果裝入報(bào)文中傳

8、輸。(這里用反碼和的原因是這種方法的循環(huán)進(jìn)位使校驗(yàn)和可以在16位、32位、64位等情況下的計(jì)算

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。