




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
TCP簡介2知識目標(biāo)什么是TCP?TCP的發(fā)展過程TCP的主要特點(diǎn)、結(jié)構(gòu)TCP的工作方式01能力目標(biāo)了解何為TCP了解TCP的發(fā)展過程掌握TCP的主要特點(diǎn)、結(jié)構(gòu)了解TCP的工作方式02學(xué)習(xí)目標(biāo)3目錄01什么是TCP?02TCP的發(fā)展過程03TCP的主要特點(diǎn)、結(jié)構(gòu)04TCP的工作方式TCP(傳輸控制協(xié)議)4傳輸控制協(xié)議(TCP,TransmissionControlProtocol)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,由IETF的RFC793
定義。TCP旨在適應(yīng)支持多網(wǎng)絡(luò)應(yīng)用的分層協(xié)議層次結(jié)構(gòu)。連接到不同但互連的計(jì)算機(jī)通信網(wǎng)絡(luò)的主計(jì)算機(jī)中的成對進(jìn)程之間依靠TCP提供可靠的通信服務(wù)。TCP假設(shè)它可以從較低級別的協(xié)議獲得簡單的,可能不可靠的數(shù)據(jù)報(bào)服務(wù)。原則上,TCP應(yīng)該能夠在從硬線連接到分組交換或電路交換網(wǎng)絡(luò)的各種通信系統(tǒng)之上操作。簡介5傳輸控制協(xié)議(TCP,TransmissionControlProtocol)是為了在不可靠的互聯(lián)網(wǎng)絡(luò)上提供可靠的端到端字節(jié)流而專門設(shè)計(jì)的一個(gè)傳輸協(xié)議。
互聯(lián)網(wǎng)絡(luò)與單個(gè)網(wǎng)絡(luò)有很大的不同,因?yàn)榛ヂ?lián)網(wǎng)絡(luò)的不同部分可能有截然不同的拓?fù)浣Y(jié)構(gòu)、帶寬、延遲、數(shù)據(jù)包大小和其他參數(shù)。TCP的設(shè)計(jì)目標(biāo)是能夠動態(tài)地適應(yīng)互聯(lián)網(wǎng)絡(luò)的這些特性,而且具備面對各種故障時(shí)的健壯性。
不同主機(jī)的應(yīng)用層之間經(jīng)常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機(jī)制,而是提供不可靠的包交換。
簡介6應(yīng)用層向TCP層發(fā)送用于網(wǎng)間傳輸?shù)?、?位字節(jié)表示的數(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ā)生丟包,就給每個(gè)包一個(gè)序號,同時(shí)序號也保證了傳送到接收端實(shí)體的包的按序接收。然后接收端實(shí)體對已成功收到的包發(fā)回一個(gè)相應(yīng)的確認(rèn)(ACK);如果發(fā)送端實(shí)體在合理的往返時(shí)延(RTT)內(nèi)未收到確認(rèn),那么對應(yīng)的數(shù)據(jù)包就被假設(shè)為已丟失將會被進(jìn)行重傳。TCP用一個(gè)校驗(yàn)和函數(shù)來檢驗(yàn)數(shù)據(jù)是否有錯(cuò)誤;在發(fā)送和接收時(shí)都要計(jì)算校驗(yàn)和。
簡介7每臺支持TCP的機(jī)器都有一個(gè)TCP傳輸實(shí)體。TCP實(shí)體可以是一個(gè)庫過程、一個(gè)用戶進(jìn)程,或者內(nèi)核的一部分。在所有這些情形下,它管理TCP流,以及與IP層之間的接口。TCP傳輸實(shí)體接受本地進(jìn)程的用戶數(shù)據(jù)流,將它們分割成不超過64KB(實(shí)際上去掉IP和TCP頭,通常不超過1460數(shù)據(jù)字節(jié))的分段,每個(gè)分段以單獨(dú)的IP數(shù)據(jù)報(bào)形式發(fā)送。當(dāng)包含TCP數(shù)據(jù)的數(shù)據(jù)報(bào)到達(dá)一臺機(jī)器時(shí),它們被遞交給TCP傳輸實(shí)體,TCP傳輸實(shí)體重構(gòu)出原始的字節(jié)流。為簡化起見,我們有時(shí)候僅僅用“TCP”來代表TCP傳輸實(shí)體(一段軟件)或者TCP協(xié)議(一組規(guī)則)。根據(jù)上下文語義你應(yīng)該能很消楚地推斷出其實(shí)際含義。例如,在“用戶將數(shù)據(jù)交給TCP”這句話中,很顯然這里指的是TCP傳輸實(shí)體。
簡介8IP層并不保證數(shù)據(jù)報(bào)一定被正確地遞交到接收方,也不指示數(shù)據(jù)報(bào)的發(fā)送速度有多快。正是TCP負(fù)責(zé)既要足夠快地發(fā)送數(shù)據(jù)報(bào),以便使用網(wǎng)絡(luò)容量,但又不能引起網(wǎng)絡(luò)擁塞:而且,TCP超時(shí)后,要重傳沒有遞交的數(shù)據(jù)報(bào)。即使被正確遞交的數(shù)據(jù)報(bào),也可能存在錯(cuò)序的問題,這也是TCP的責(zé)任,它必須把接收到的數(shù)據(jù)報(bào)重新裝配成正確的順序。簡而言之,TCP必須提供可靠性的良好性能,這正是大多數(shù)用戶所期望的而IP又沒有提供的功能。
發(fā)展歷程9TCP的正式定義由1981年9月的RFC793
給出。隨著時(shí)間的推移,已經(jīng)對其做了許多改進(jìn),各種錯(cuò)誤和不一致的地方逐漸被修復(fù)。為了讓你感受到TCP的擴(kuò)展歷程,現(xiàn)在重要的RFC有:RFC793plus澄清了說明,RFC1122
修復(fù)了bug、RFC1323
做了高性能擴(kuò)展,RFC2018
定義了選擇性確認(rèn),RFC2581說明了擁塞控制、RFC2873定義了為服務(wù)質(zhì)量而重用的頭字段,RFC2988
改進(jìn)了重傳計(jì)時(shí)器,RFC3168定義了顯式擁塞通知。完整的協(xié)議集合很大,因而專門發(fā)布了一個(gè)針對許多RFC的指南,它就是作為另一個(gè)RFC文檔公布的RFC4614
。主要功能10當(dāng)應(yīng)用層向TCP層發(fā)送用于網(wǎng)間傳輸?shù)?、?位字節(jié)表示的數(shù)據(jù)流,TCP則把數(shù)據(jù)流分割成適當(dāng)長度的報(bào)文段,最大傳輸段大小(MSS)通常受該計(jì)算機(jī)連接的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層的最大傳送單元(MTU)限制。之后TCP把數(shù)據(jù)包傳給IP層,由它來通過網(wǎng)絡(luò)將包傳送給接收端實(shí)體的TCP層。
TCP為了保證報(bào)文傳輸?shù)目煽浚徒o每個(gè)包一個(gè)序號,同時(shí)序號也保證了傳送到接收端實(shí)體的包的按序接收。然后接收端實(shí)體對已成功收到的字節(jié)發(fā)回一個(gè)相應(yīng)的確認(rèn)(ACK);如果發(fā)送端實(shí)體在合理的往返時(shí)延(RTT)內(nèi)未收到確認(rèn),那么對應(yīng)的數(shù)據(jù)(假設(shè)丟失了)將會被重傳。主要功能11
·在數(shù)據(jù)正確性與合法性上,TCP用一個(gè)校驗(yàn)和函數(shù)來檢驗(yàn)數(shù)據(jù)是否有錯(cuò)誤,在發(fā)送和接收時(shí)都要計(jì)算校驗(yàn)和;同時(shí)可以使用md5認(rèn)證對數(shù)據(jù)進(jìn)行加密。
·在保證可靠性上,采用超時(shí)重傳和捎帶確認(rèn)機(jī)制。
·在流量控制上,采用滑動窗口協(xié)議,協(xié)議中規(guī)定,對于窗口內(nèi)未經(jīng)確認(rèn)的分組需要重傳。主要功能12在擁塞控制上,采用廣受好評的TCP擁塞控制算法(也稱AIMD算法)。該算法主要包括四個(gè)主要部分:(1)慢啟動每當(dāng)建立一個(gè)TCP連接時(shí)或一個(gè)TCP連接發(fā)生超時(shí)重傳后,該連接便進(jìn)入慢啟動階段。進(jìn)入慢啟動后,TCP實(shí)體將擁塞窗口的大小初始化為一個(gè)報(bào)文段,即:cwnd=1。此后,每收到一個(gè)報(bào)文段的確認(rèn)(ACK),cwnd值加1,即擁塞窗口按指數(shù)增加。當(dāng)cwnd值超過慢啟動闡值(sshterhs)或發(fā)生報(bào)文段丟失重傳時(shí),慢啟動階段結(jié)束。前者進(jìn)入擁塞避免階段,后者重新進(jìn)入慢啟動階段。主要功能13(2)擁塞避免在慢啟階段,當(dāng)cwnd值超過慢啟動闡值(ssthresh)后,慢啟動過程結(jié)束,TCP連接進(jìn)入擁塞避免階段。在擁塞避免階段,每一次發(fā)送的cwnd個(gè)報(bào)文段被完全確認(rèn)后,才將cwnd值加1。在此階段,cwnd值線性增加。(3)快速重傳快速重傳是對超時(shí)重傳的改進(jìn)。當(dāng)源端收到對同一個(gè)報(bào)文的三個(gè)重復(fù)確認(rèn)時(shí),就確定一個(gè)報(bào)文段已經(jīng)丟失,因此立刻重傳丟失的報(bào)文段,而不必等到重傳定時(shí)器(RTO)超時(shí)。以此減少不必要的等待時(shí)間。主要功能14(4)快速恢復(fù)快速恢復(fù)是對丟失恢復(fù)機(jī)制的改進(jìn)。在快速重傳之后,不經(jīng)過慢啟動過程而直接進(jìn)入擁塞避免階段。每當(dāng)快速重傳后,置sshtesrh=cwnd/2、ewnd=ssthresh+3。此后,每收到一個(gè)重復(fù)確認(rèn),將cwnd值加1,直至收到對丟失報(bào)文段和其后若干報(bào)文段的累積確認(rèn)后,置cwnd=ssthesrh,進(jìn)入擁塞避免階段。主要特點(diǎn)15TCP是一種面向廣域網(wǎng)的通信協(xié)議,目的是在跨越多個(gè)網(wǎng)絡(luò)通信時(shí),為兩個(gè)通信端點(diǎn)之間提供一條具有下列特點(diǎn)的通信方式:(1)基于流的方式;(2)面向連接;(3)可靠通信方式;(4)在網(wǎng)絡(luò)狀況不佳的時(shí)候盡量降低系統(tǒng)由于重傳帶來的帶寬開銷;(5)通信連接維護(hù)是面向通信的兩個(gè)端點(diǎn)的,而不考慮中間網(wǎng)段和節(jié)點(diǎn)。主要特點(diǎn)16為滿足TCP協(xié)議的這些特點(diǎn),TCP協(xié)議做了如下的規(guī)定:①數(shù)據(jù)分片:在發(fā)送端對用戶數(shù)據(jù)進(jìn)行分片,在接收端進(jìn)行重組,由TCP確定分片的大小并控制分片和重組;②到達(dá)確認(rèn):接收端接收到分片數(shù)據(jù)時(shí),根據(jù)分片數(shù)據(jù)序號向發(fā)送端發(fā)送一個(gè)確認(rèn);③超時(shí)重發(fā):發(fā)送方在發(fā)送分片時(shí)啟動超時(shí)定時(shí)器,如果在定時(shí)器超時(shí)之后沒有收到相應(yīng)的確認(rèn),重發(fā)分片;④滑動窗口:TCP連接每一方的接收緩沖空間大小都固定,接收端只允許另一端發(fā)送接收端緩沖區(qū)所能接納的數(shù)據(jù),TCP在滑動窗口的基礎(chǔ)上提供流量控制,防止較快主機(jī)致使較慢主機(jī)的緩沖區(qū)溢出;主要特點(diǎn)17④滑動窗口:TCP連接每一方的接收緩沖空間大小都固定,接收端只允許另一端發(fā)送接收端緩沖區(qū)所能接納的數(shù)據(jù),TCP在滑動窗口的基礎(chǔ)上提供流量控制,防止較快主機(jī)致使較慢主機(jī)的緩沖區(qū)溢出;⑤失序處理:作為IP數(shù)據(jù)報(bào)來傳輸?shù)腡CP分片到達(dá)時(shí)可能會失序,TCP將對收到的數(shù)據(jù)進(jìn)行重新排序,將收到的數(shù)據(jù)以正確的順序交給應(yīng)用層;⑥重復(fù)處理:作為IP數(shù)據(jù)報(bào)來傳輸?shù)腡CP分片會發(fā)生重復(fù),TCP的接收端必須丟棄重復(fù)的數(shù)據(jù);主要特點(diǎn)18⑦數(shù)據(jù)校驗(yàn):TCP將保持它首部和數(shù)據(jù)的檢驗(yàn)和,這是一個(gè)端到端的檢驗(yàn)和,目的是檢測數(shù)據(jù)在傳輸過程中的任何變化。如果收到分片的檢驗(yàn)和有差錯(cuò),TCP將丟棄這個(gè)分片,并不確認(rèn)收到此報(bào)文段導(dǎo)致對端超時(shí)并重發(fā)。首部格式19TCP的首部格式如圖1所示:---SourcePort是源端口,16位。圖1TCP首部---DestinationPort是目的端口,16位。---SequenceNumber是發(fā)送數(shù)據(jù)包中的第一個(gè)字節(jié)的序列號,32位。---AcknowledgmentNumber是確認(rèn)序列號,32位。---DataOffset是數(shù)據(jù)偏移,4位,該字段的值是TCP首部(包括選項(xiàng))長度除以4。---標(biāo)志位:6位,URG表示UrgentPointer字段有意義:首部格式20ACK表示AcknowledgmentNumber字段有意義PSH表示Push功能,RST表示復(fù)位TCP連接SYN表示SYN報(bào)文(在建立TCP連接的時(shí)候使用)FIN表示沒有數(shù)據(jù)需要發(fā)送了(在關(guān)閉TCP連接的時(shí)候使用)Window表示接收緩沖區(qū)的空閑空間,16位,用來告訴TCP連接對端自己能夠接收的最大數(shù)據(jù)長度。---Checksum是校驗(yàn)和,16位。---UrgentPointers是緊急指針,16位,只有URG標(biāo)志位被設(shè)置時(shí)該字段才有意義,表示緊急數(shù)據(jù)相對序列號(SequenceNumber字段的值)的偏移。工作方式21建立連接TCP是因特網(wǎng)中的傳輸層協(xié)議,使用三次握手協(xié)議建立連接。當(dāng)主動方發(fā)出SYN連接請求后,等待對方回答圖2TCP的三次握手SYN+ACK,并最終對對方的SYN執(zhí)行ACK確認(rèn)。這種建立連接的方法可以防止產(chǎn)生錯(cuò)誤的連接,TCP使用的流量控制協(xié)議是可變大小的滑動窗口協(xié)議。
工作方式22TCP三次握手的過程如下:客戶端發(fā)送SYN(SEQ=x)報(bào)文給服務(wù)器端,進(jìn)入SYN_SEND狀態(tài)。服務(wù)器端收到SYN報(bào)文,回應(yīng)一個(gè)SYN(SEQ=y)ACK(ACK=x+1)報(bào)文,進(jìn)入SYN_RECV狀態(tài)。客戶端收到服務(wù)器端的SYN報(bào)文,回應(yīng)一個(gè)ACK(ACK=y+1)報(bào)文,進(jìn)入Established狀態(tài)。三次握手完成,TCP客戶端和服務(wù)器端成功地建立連接,可以開始傳輸數(shù)據(jù)了。工作方式23連接終止建立一個(gè)連接需要三次握手,而終止一個(gè)連接要經(jīng)過四次握手,這是由TCP的半關(guān)閉(half-close)造成的。具體過程如下圖所示。
圖3TCP連接的終止。工作方式24(1)某個(gè)應(yīng)用進(jìn)程首先調(diào)用close,稱該端執(zhí)行“主動關(guān)閉”(activeclose)。該端的TCP于是發(fā)送一個(gè)FIN分節(jié),表示數(shù)據(jù)發(fā)送完畢。(2)接收到這個(gè)FIN的對端執(zhí)行“被動關(guān)閉”(passiveclose),這個(gè)FIN由TCP確認(rèn)。注意:FIN的接收也作為一個(gè)文件結(jié)束符(end-of-file)傳遞給接收端應(yīng)用進(jìn)程,放在已排隊(duì)等候該應(yīng)用進(jìn)程接收的任何其他數(shù)據(jù)之后,因?yàn)?,F(xiàn)IN的接收意味著接收端應(yīng)用進(jìn)程在相應(yīng)連接上再無額外數(shù)據(jù)可接收。工作方式25(3)一段時(shí)間后,接收到這個(gè)文件結(jié)束符的應(yīng)用進(jìn)程將調(diào)用close關(guān)閉它的套接字。這導(dǎo)致它的TCP也發(fā)送一個(gè)FIN。(4)接收這個(gè)最終FIN的原發(fā)送端TCP(即執(zhí)行主動關(guān)閉的那一端)確認(rèn)這個(gè)FIN。
既然每個(gè)方向都需要一個(gè)FIN和一個(gè)ACK,因此通常需要4個(gè)分節(jié)。工作方式26注意:(1)“通常”是指,某些情況下,步驟1的FIN隨數(shù)據(jù)一起發(fā)送,另外,步驟2和步驟3發(fā)送的分節(jié)都出自執(zhí)行被動關(guān)閉那一端,有可能被合并成一個(gè)分節(jié)。(2)在步驟2與步驟3之間,從執(zhí)行被動關(guān)閉一端到執(zhí)行主動關(guān)閉一端流動數(shù)據(jù)是可能的,這稱為“半關(guān)閉”(half-close)。(3)當(dāng)一個(gè)Unix進(jìn)程無論自愿地(調(diào)用exit或從main函數(shù)返回)還是非自愿地(收到一個(gè)終止本進(jìn)程的信號)終止時(shí),所有打開的描述符都被關(guān)閉,這也導(dǎo)致仍然打開的任何TCP連接上也發(fā)出一個(gè)FIN。無論是客戶還是服務(wù)器,任何一端都可以執(zhí)行主動關(guān)閉。通常情況是,客戶執(zhí)行主動關(guān)閉,但是某些協(xié)議,例如,HTTP/1.0卻由服務(wù)器執(zhí)行主動關(guān)閉??煽啃詫?shí)現(xiàn)27可靠性
TCP提供一種面向連接的、可靠的字節(jié)流服務(wù)。面向連接意味著兩個(gè)使用TCP的應(yīng)用(通常是一個(gè)客戶和一個(gè)服務(wù)器)在彼此交換數(shù)據(jù)包之前必須先建立一個(gè)TCP連接。這一過程與打電話很相似,先撥號振鈴,等待對方摘機(jī)說“喂”,然后才說明是誰。在一個(gè)TCP連接中,僅有兩方進(jìn)行彼此通信。廣播和多播不能用于TCP??煽啃詫?shí)現(xiàn)28TCP通過下列方式來提供可靠性:
1.應(yīng)用數(shù)據(jù)被分割成TCP認(rèn)為最適合發(fā)送的數(shù)據(jù)塊。這和UDP完全不同,應(yīng)用程序產(chǎn)生的數(shù)據(jù)長度將保持不變。由TCP傳遞給IP的信息單位稱為報(bào)文段或段(segment)。2.當(dāng)TCP發(fā)出一個(gè)段后,它啟動一個(gè)定時(shí)器,等待目的端確認(rèn)收到這個(gè)報(bào)文段。如果不能及時(shí)收到一個(gè)確認(rèn),將重發(fā)這個(gè)報(bào)文段。當(dāng)TCP收到發(fā)自TCP連接另一端的數(shù)據(jù),它將發(fā)送一個(gè)確認(rèn)。TCP有延遲確認(rèn)的功能,在此功能沒有打開,則是立即確認(rèn)。功能打開,則由定時(shí)器觸發(fā)確認(rèn)時(shí)間點(diǎn)??煽啃詫?shí)現(xiàn)293.TCP將保持它首部和數(shù)據(jù)的檢驗(yàn)和。這是一個(gè)端到端的檢驗(yàn)和,目的是檢測數(shù)據(jù)在傳輸過程中的任何變化。如果收到段的檢驗(yàn)和有差錯(cuò),TCP將丟棄這個(gè)報(bào)文段和不確認(rèn)收到此報(bào)文段(希望發(fā)端超時(shí)并重發(fā))。4.既然TCP報(bào)文段作為IP數(shù)據(jù)報(bào)來傳輸,而IP數(shù)據(jù)報(bào)的到達(dá)可能會失序,因此TCP報(bào)文段的到達(dá)也可能會失序。如果必要,TCP將對收到的數(shù)據(jù)進(jìn)行重新排序,將收到的數(shù)據(jù)以正確的順序交給應(yīng)用層??煽啃詫?shí)現(xiàn)305.既然IP數(shù)據(jù)報(bào)會發(fā)生重復(fù),TCP的接收端必須丟棄重復(fù)的數(shù)據(jù)。6.TCP還能提供流量控制。TCP連接的每一方都有固定大小的緩沖空間。TCP的接收端只允許另一端發(fā)送接收端緩沖區(qū)所能接納的數(shù)據(jù)。這將防止較快主機(jī)致使較慢主機(jī)的緩沖區(qū)溢出??煽啃詫?shí)現(xiàn)31兩個(gè)應(yīng)用程序通過TCP連接交換8bit字節(jié)構(gòu)成的字節(jié)流。TCP不在字節(jié)流中插入記錄標(biāo)識符。我們將這稱為字節(jié)流服務(wù)(bytestreamservice)。如果一方的應(yīng)用程序先傳10字節(jié),又傳20字節(jié),再傳50字節(jié),連接的另一方將無法了解發(fā)方每次發(fā)送了多少字節(jié)。只要自己的接收緩存沒有塞滿,TCP接收方將有多少就收多少。一端將字節(jié)流放到TCP連接上,同樣的字節(jié)流將出現(xiàn)在TCP連接的另一端??煽啃詫?shí)現(xiàn)32另外,TCP對字節(jié)流的內(nèi)容不作任何解釋。TCP不知道傳輸?shù)臄?shù)據(jù)字節(jié)流是二進(jìn)制數(shù)據(jù),還是ASCⅡ字符、EBCDIC字符或者其他類型數(shù)據(jù)。對字節(jié)流的解釋由TCP連接雙方的應(yīng)用層解釋。
這種對字節(jié)流的處理方式與Unix操作系統(tǒng)對文件的處理方式很相似。Unix的內(nèi)核對一個(gè)應(yīng)用讀或?qū)懙膬?nèi)容不作任何解釋,而是交給應(yīng)用程序處理。對Unix的內(nèi)核來說,它無法區(qū)分一個(gè)二進(jìn)制文件與一個(gè)文本文件??煽啃詫?shí)現(xiàn)33重傳策略TCP協(xié)議用于控制數(shù)據(jù)段是否需要重傳的依據(jù)是設(shè)立重發(fā)定時(shí)器。在發(fā)送一個(gè)數(shù)據(jù)段的同時(shí)啟動一個(gè)重傳,如果在重傳超時(shí)前收到確認(rèn)(Acknowlegement)就關(guān)閉該重傳,如果重傳超時(shí)前沒有收到確認(rèn),則重傳該數(shù)據(jù)段。在選擇重發(fā)時(shí)間的過程中,TCP必須具有自適應(yīng)性。它需要根據(jù)互聯(lián)網(wǎng)當(dāng)時(shí)的通信情況,給出合適的重發(fā)時(shí)間??煽啃詫?shí)現(xiàn)34這種重傳策略的關(guān)鍵是對定時(shí)器初值的設(shè)定。采用較多的算法是Jacobson于1988年提出的一種不斷調(diào)整超時(shí)時(shí)間間隔的動態(tài)算法。其工作原理是:對每條連接TCP都保持一個(gè)變量RTT(RoundTripTime),用于存放當(dāng)前到目的端往返所需要時(shí)間最接近的估計(jì)值。當(dāng)發(fā)送一個(gè)數(shù)據(jù)段時(shí),同時(shí)啟動連接的定時(shí)器,如果在定時(shí)器超時(shí)前確認(rèn)到達(dá),則記錄所需要的時(shí)間(M),并修正RTT的值,如果定時(shí)器超時(shí)前沒有收到確認(rèn),則將RTT的值增加1倍。通過測量一系列的RTT(往返時(shí)間)值,TCP協(xié)議可以估算數(shù)據(jù)包重發(fā)前需要等待的時(shí)間。在估計(jì)該連接所需的當(dāng)前延遲時(shí)通常利用一些統(tǒng)計(jì)學(xué)的原理和算法(如Karn算法),從而得到TCP重發(fā)之前需要等待的時(shí)間值??煽啃詫?shí)現(xiàn)35窗口確認(rèn)TCP的一項(xiàng)功能就是確保每個(gè)數(shù)據(jù)段都能到達(dá)目的地。位于目的主機(jī)的TCP服務(wù)對接受到的數(shù)據(jù)進(jìn)行確認(rèn),并向源應(yīng)用程序發(fā)送確認(rèn)信息。圖4TCP的狀態(tài)機(jī)使用數(shù)據(jù)報(bào)頭序列號以及確認(rèn)號來確認(rèn)已收到包含在數(shù)據(jù)段的相關(guān)的數(shù)據(jù)字節(jié)??煽啃詫?shí)現(xiàn)36TCP在發(fā)回源設(shè)備的數(shù)據(jù)段中使用確認(rèn)號,指示接收設(shè)備期待接收的下一字節(jié)。這個(gè)過程稱為期待確認(rèn)。源主機(jī)在收到確認(rèn)消息之前可以傳輸?shù)臄?shù)據(jù)的大小稱為窗口大小。用于管理丟失數(shù)據(jù)和流量控制。這些變化如右圖所示??煽啃詫?shí)現(xiàn)37配置TCP修改建立TCP連接的超時(shí)時(shí)間建立TCP連接需要經(jīng)過三次握手:主動端先發(fā)送SYN報(bào)文,被動端回應(yīng)SYN+ACK報(bào)文,然后主動端再回應(yīng)ACK。
l在主動端發(fā)送SYN后,如果被動端一直不回應(yīng)SYN+ACK報(bào)文,主動端會不斷的重傳SYN報(bào)文直到超過一定的重傳次數(shù)或超時(shí)時(shí)間。l在主動端發(fā)送SYN后,被動端回應(yīng)SYN+ACK報(bào)文,但主動端不再回復(fù)ACK,被動端也會一直重傳直到超過一定的重傳次數(shù)或超時(shí)時(shí)間。(SYN報(bào)文攻擊會出現(xiàn)這種情況)可靠性實(shí)現(xiàn)38可以通過以下命令配置SYN報(bào)文的超時(shí)時(shí)間(發(fā)送SYN報(bào)文到三次握手成功的最大時(shí)間),也就是建立TCP連接的超時(shí)時(shí)間。使用noiptcpsyntime-out命令恢復(fù)參數(shù)缺省值。工作方式39修改緩沖區(qū)大小TCP的接收緩沖區(qū)是用來緩存從對端接收到的數(shù)據(jù),這些數(shù)據(jù)后續(xù)會被應(yīng)用程序讀取。一般情況下,TCP報(bào)文的窗口值反映接收緩沖區(qū)的空閑空間的大小。對于帶寬比較大、有大批量數(shù)據(jù)的連接,增大接收緩沖區(qū)的大小可以顯著提供TCP傳輸性能。TCP的發(fā)送緩沖區(qū)是用來緩存應(yīng)用程序的數(shù)據(jù),發(fā)送緩沖區(qū)的每個(gè)字節(jié)都有序列號,被應(yīng)答確認(rèn)的序列號對應(yīng)的數(shù)據(jù)會從發(fā)送緩沖區(qū)刪除掉。增大發(fā)送緩沖區(qū)可以提高TCP跟應(yīng)用程序的交互能力,也因此會提高性能。但是增大接收和發(fā)送緩沖區(qū)會導(dǎo)致TCP占用比較多的內(nèi)存。使用noiptcpwindow-size命令恢復(fù)接收和發(fā)送緩沖區(qū)大小為缺省值。工作方式40禁止端口不可達(dá)時(shí)的重置報(bào)文TCP模塊在分發(fā)TCP報(bào)文時(shí),如果找不到該報(bào)文所屬的TCP連接會主動回復(fù)一個(gè)reset報(bào)文以終止對端的TCP連接。攻擊者可能利用大量的端口不可達(dá)的TCP報(bào)文對設(shè)備進(jìn)行攻擊??梢允褂靡韵旅罱?恢復(fù)在收到端口不可達(dá)的TCP報(bào)文時(shí)發(fā)送reset報(bào)文。使用noiptcpnot-send-rst命令恢復(fù)發(fā)送reset報(bào)文。工作方式41限制TCP連接的MSS的最大值MSS是最大傳輸段大小的縮寫,指一個(gè)TCP報(bào)文的數(shù)據(jù)載荷的最大長度,不包括TCP選項(xiàng)。在TCP建立連接的三次握手中,有一種很重要的工作那就是進(jìn)行MSS協(xié)商。連接的雙方都在SYN報(bào)文中增加MSS選項(xiàng),其選項(xiàng)值表示本端最大能接收的段大小,即對端最大能發(fā)送的段大小。連接的雙方取本端發(fā)送的MSS值和接收對端的MSS值的較小者作為本連接最大傳輸段大小。工作方式42發(fā)送SYN報(bào)文時(shí)的MSS選項(xiàng)值的計(jì)算方法如下。l非直連網(wǎng)絡(luò)中:mss=默認(rèn)值536。l直連網(wǎng)絡(luò)中:mss=對端ip地址對應(yīng)的出口的MTU-20字節(jié)ip頭-20字節(jié)tcp頭。
一般來說如果出口配置的某些應(yīng)用影響了接口的mtu,那么該應(yīng)用會相應(yīng)的設(shè)置mtu,如隧道口,vpn口等。工作方式43到這里得到的rmss值就是要發(fā)送的syn報(bào)文mss選項(xiàng)的值。舉例:一般情況下在直連網(wǎng)絡(luò)中建立bgp鄰居,那么該連接的發(fā)送的mss為1500–20–20–20=1440。iptcpmss命令的作用是限制即將建立的TCP連接的MSS的最大值。任何新建立的連接協(xié)商的MSS值不能超過配置的值。使用noiptcpmss命令取消此限制。工作方式44啟用PMTU發(fā)現(xiàn)功能TCP的路徑最大傳輸單元(PMTU)發(fā)現(xiàn)功能是按RFC1191實(shí)現(xiàn)的,這個(gè)功能可以提高網(wǎng)絡(luò)帶寬的利用率。當(dāng)用戶使用TCP來批量傳輸大塊數(shù)據(jù)時(shí),該功能可以使傳輸性能得到明顯提升。工作方式45按RFC1191的描述,TCP在發(fā)現(xiàn)PMTU后,隔一段時(shí)間可以使用更大的MSS來探測新的PMTU。這個(gè)時(shí)間間隔就是使用參數(shù)age-timer來指定。當(dāng)設(shè)備發(fā)現(xiàn)的PMTU比TCP連接兩端協(xié)商出來的MS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年茶藝師個(gè)人素養(yǎng)試題及答案
- 2025年度特殊崗位員工解除合同及技能轉(zhuǎn)移協(xié)議
- 走向成功:2025茶藝師考試試題及答案總結(jié)
- 二零二五年度文化產(chǎn)業(yè)工傷保險(xiǎn)及勞動合同完善協(xié)議
- 二零二五年度封陽臺施工安全與施工人員健康保障協(xié)議
- 2025年度新能源車輛掛名車主責(zé)任免除及權(quán)益保障協(xié)議
- 健康管理師考試的試題及答案解析
- 建筑工程材料習(xí)題庫(含參考答案)
- 中醫(yī)基礎(chǔ)練習(xí)題及答案
- 進(jìn)食進(jìn)水流程
- (2024)江西省公務(wù)員考試《行測》真題卷及答案解析
- 音樂曲式分析課件
- 2025年福建省中考模擬考試新題型英語試卷試題
- 2024-2025學(xué)年江蘇省鹽城市七校高二上學(xué)期10月聯(lián)考地理試題(解析版)
- 反恐防暴應(yīng)急知識培訓(xùn)
- 保安員心理健康與禮儀課件
- 證券分析(第6版)下部
- 床旁超聲監(jiān)測胃殘余量
- 期末試卷(試題)-2024-2025學(xué)年四年級上冊數(shù)學(xué)滬教版
- Unit+5+Music+Reading+for+Writing+學(xué)習(xí)任務(wù)單 高中英語人教版(2019)必修第二冊
- 2025年高考地理復(fù)習(xí)備考策略講座
評論
0/150
提交評論