網(wǎng)站建設(shè)需要哪些資料網(wǎng)站建設(shè)與網(wǎng)站設(shè)計
一、定義
TCP(Transmission Control Protocol,傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,由IETF的RFC 793定義。TCP旨在適應支持多網(wǎng)絡(luò)應用的分層協(xié)議層次結(jié)構(gòu)。在因特網(wǎng)協(xié)議族(Internet protocol suite)中,TCP層是位于IP層之上,應用層之下的中間層。不同主機的應用層之間經(jīng)常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機制,而是提供不可靠的包交換。因此,TCP協(xié)議的出現(xiàn),解決了這一問題。
二、TCP協(xié)議報文格式
TCP協(xié)議報文格式主要包括以下幾個部分:
1. 源/目的端口號:
表示數(shù)據(jù)是從哪個進程來,到哪個進程去。
2. 4位TCP報頭長度:
表示該TCP頭部有多少個32位bit(有多少個4字節(jié))。TCP頭部最大長度是15(2的5次方-1)*4=60字節(jié),即選項內(nèi)容最多40字節(jié)。
3. 6位標志位:
? URG:緊急指針是否有效。? ACK:確認號是否有效。? PSH:提示接收端應用程序立刻從TCP緩沖區(qū)把數(shù)據(jù)讀走。? RST:對方要求重新建立連接;攜帶RST標識的稱為復位報文。? SYN:請求建立連接,攜帶SYN標識的稱為同步報文段。? FIN:通知對方,本端要關(guān)閉了,攜帶FIN標識的為結(jié)束報文。
4. 16位校驗和:
發(fā)送端填充,CRC校驗。接收端校驗不通過,則認為數(shù)據(jù)有問題。此處的檢驗和不光包含TCP首部,也包含TCP數(shù)據(jù)部。
5. 16位緊急指針:
標識哪部分數(shù)據(jù)是緊急數(shù)據(jù)。當緊急指針置為1,操作系統(tǒng)會優(yōu)先讀取該報文,再讀取緊急指針找到緊急數(shù)據(jù)。
6. 16位窗口大小:
表示當前接受數(shù)據(jù)的剩余空間。
此外,TCP協(xié)議報文格式還包括32位序號和32位確認序號,用于確認應答機制。
三、TCP協(xié)議特點
TCP協(xié)議具有以下幾個主要特點:
1. 面向連接:
TCP是一種面向連接的協(xié)議,通信雙方在傳輸數(shù)據(jù)之前需要先建立連接,然后再進行數(shù)據(jù)的傳輸。這種連接方式保證了數(shù)據(jù)傳輸?shù)目煽啃院晚樞蛐浴?/p>
2. 可靠傳輸:
TCP提供可靠的數(shù)據(jù)傳輸,通過序列號、確認應答和重傳機制來確保數(shù)據(jù)的完整性和順序性。如果數(shù)據(jù)包在傳輸過程中丟失或損壞,TCP會負責重新發(fā)送。
3. 流控制:
TCP使用流控制機制來防止發(fā)送方發(fā)送速度過快,確保接收方能夠處理并消化數(shù)據(jù)。這通過滑動窗口機制來實現(xiàn)。
4. 擁塞控制:
TCP具有擁塞控制機制,用于適應網(wǎng)絡(luò)的擁塞情況,防止過多的數(shù)據(jù)注入網(wǎng)絡(luò)導致性能下降。
5. 面向字節(jié)流:
TCP將傳輸?shù)臄?shù)據(jù)視為字節(jié)流,而不是像UDP那樣按照消息邊界進行劃分。這意味著發(fā)送方傳輸?shù)臄?shù)據(jù)流和接收方接收的數(shù)據(jù)流是連續(xù)的。
6. 全雙工通信:
TCP連接是全雙工的,允許雙方在同一時間既能發(fā)送數(shù)據(jù)又能接收數(shù)據(jù)。
四、TCP協(xié)議工作機制
1. 確認應答(ACK)機制
當客戶端傳輸報文時,為了保證報文被服務(wù)端收到,需要服務(wù)端進行回應。確認應答機制就是這個原理,即收到請回復。32位序號用來標識發(fā)送報文的序號,確認序號則是在收到報文為了進行應答,將收到32號序號+1組成確認序號發(fā)生給對方進行應答。即32位確認序號=收到的32報文序號+1,用來表示確認序號之前的報文都收到了。
2. 捎帶應答
當客戶端給服務(wù)端發(fā)送報文后,服務(wù)端需要對發(fā)送的報文進行應答,如果在同時服務(wù)端也需要發(fā)送報文,那么應答和報文就會一起發(fā)送,稱為捎帶應答。例如,你和室友聊天,你問室友:“你吃了嗎?”室友回復:“吃了,你作業(yè)寫了嗎?”這段對話中,室友的回復包含了應答,同時也傳輸了信息,就是捎帶應答。
3. 連接管理機制
TCP連接管理主要包括三次握手建立連接和四次揮手斷開連接。
(1)三次握手建立連接
以客戶端主動發(fā)起連接為例,三次握手的過程如下:
? 第一次握手:客戶端調(diào)用connect,發(fā)送同步報文段(SYN),進入SYN_SENT狀態(tài)。
? 第二次握手:服務(wù)端監(jiān)聽到連接請求(同步報文段),將該連接放入內(nèi)核等待隊列中,并向客戶端發(fā)送SYN確認報文和ACK確認報文,進入SYN_RCVD狀態(tài)。
? 第三次握手:客戶端收到服務(wù)端的確認報文,進入ESTABLISHED狀態(tài),開始讀寫數(shù)據(jù)。服務(wù)端收到客戶端的確認報文,也進入ESTABLISHED狀態(tài),可以進行讀寫數(shù)據(jù)。
三次握手的原因:雙方通過兩次SYN報文的發(fā)送,可以保證全雙工通信信道的暢通,同時雙方會交換彼此的窗口大小和滑動窗口的頭指針位置。三次握手中的最后一次ACK應答的可靠性是無法保證的,如果服務(wù)端沒有收到客戶端的ACK應答,則服務(wù)端內(nèi)核將不會浪費資源構(gòu)建連接相關(guān)的結(jié)構(gòu)體,但是客戶端在發(fā)送ACK應答后(無論ACK應答是否被對方收到),便默認連接建立成功。這種設(shè)計的意義在于連接建立失敗的資源消耗成本由客戶端來承擔,從而減小服務(wù)器的負擔。
(2)四次揮手斷開連接
以客戶端主動發(fā)起斷開連接為例,四次揮手的過程如下:
? 第一次揮手:客戶端主動調(diào)用close,向服務(wù)器發(fā)送結(jié)束報文段(FIN),同時進入FIN_WAIT_1狀態(tài)。
? 第二次揮手:服務(wù)端收到客戶端的結(jié)束報文段,返回確認報文段(ACK),進入CLOSE_WAIT狀態(tài)??蛻舳耸盏椒?wù)端的確認報文段,進入FIN_WAIT_2狀態(tài),開始等待服務(wù)端的結(jié)束報文段。
? 第三次揮手:服務(wù)端準備關(guān)閉連接(需要處理完之前的數(shù)據(jù)),調(diào)用close關(guān)閉連接,向客戶端發(fā)送FIN,此時服務(wù)器進入LAST_ACK狀態(tài),等待最后一個ACK到來(這個ACK是客戶端確認收到了FIN)。
? 第四次揮手:客戶端收到服務(wù)端的FIN,發(fā)出確認報文段(ACK),進入TIME_WAIT狀態(tài)。服務(wù)端收到對FIN的ACK,徹底關(guān)閉連接??蛻舳艘却粋€2MSL(Max Segment Life,報文最大生存時間)的時間,才會進入CLOSED狀態(tài)。
TIME_WAIT狀態(tài)主要是為了等待一些在網(wǎng)絡(luò)中或者其他地方已經(jīng)發(fā)送但是還沒有到達的數(shù)據(jù)。如果不進行等待,當重新進行連接時,這些數(shù)據(jù)到達會引起混亂。
4. 滑動窗口
TCP使用滑動窗口機制來實現(xiàn)流控制,防止發(fā)送方發(fā)送速度過快,確保接收方能夠處理并消化數(shù)據(jù)?;瑒哟翱诘拇笮”硎窘邮辗疆斍敖邮軘?shù)據(jù)的剩余空間。發(fā)送方在發(fā)送數(shù)據(jù)時,會根據(jù)接收方的窗口大小來調(diào)整自己的發(fā)送速度。當接收方的窗口大小變?yōu)?時,發(fā)送方會停止發(fā)送數(shù)據(jù),直到接收方發(fā)送窗口更新報文,告知發(fā)送方自己的接收能力恢復。
5. 快重傳
快重傳是一種改進的TCP重傳機制。當接收方收到一個失序的報文段時,會立即發(fā)送一個重復確認報文(即重復上一個報文段的確認序號),而不是等待超時后再發(fā)送。發(fā)送方收到連續(xù)三個或三個以上的重復確認報文時,會認為下一個報文段丟失了,立即進行重傳,而不需要等待超時。這樣可以減少數(shù)據(jù)傳輸?shù)难舆t,提高傳輸效率。
6. 擁塞控制
TCP具有擁塞控制機制,用于適應網(wǎng)絡(luò)的擁塞情況,防止過多的數(shù)據(jù)注入網(wǎng)絡(luò)導致性能下降。擁塞控制主要包括慢啟動、擁塞避免、快重傳和快恢復四個階段。
? 慢啟動:在連接建立初期,發(fā)送方會以一個較小的初始窗口大小開始發(fā)送數(shù)據(jù),并逐漸增大窗口大小,直到達到一個預設(shè)的閾值或發(fā)生網(wǎng)絡(luò)擁塞。
? 擁塞避免:當發(fā)送方的窗口大小達到閾值后,發(fā)送方會進入擁塞避免階段,此時窗口大小的增長速度會減慢,以避免網(wǎng)絡(luò)擁塞的發(fā)生。
? 快重傳:如上所述,當接收方收到連續(xù)三個或三個以上的重復確認報文時,會認為下一個報文段丟失了,立即通知發(fā)送方進行重傳。
? 快恢復:當發(fā)送方收到快重傳的通知后,會立即進行重傳,并將窗口大小減半(但不小于慢啟動的初始窗口大小),然后重新進入擁塞避免階段。這樣可以更快地恢復數(shù)據(jù)傳輸?shù)男省?/p>
五、TCP協(xié)議應用示例
TCP協(xié)議在計算機網(wǎng)絡(luò)中具有廣泛的應用,以下是一些具體的應用示例:
1. Web瀏覽
HTTP協(xié)議使用TCP作為傳輸層協(xié)議,確??煽康臄?shù)據(jù)傳輸,適用于Web頁面的加載和數(shù)據(jù)傳輸。當用戶訪問一個網(wǎng)頁時,瀏覽器會向服務(wù)器發(fā)送HTTP請求,服務(wù)器接收到請求后,會將網(wǎng)頁內(nèi)容封裝在HTTP響應中發(fā)送給瀏覽器。這個過程中,TCP協(xié)議負責保證數(shù)據(jù)的可靠傳輸和順序性。
2. 電子郵件
SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol)等電子郵件協(xié)議使用TCP進行郵件的傳輸和接收。當用戶發(fā)送一封電子郵件時,郵件客戶端會向郵件服務(wù)器發(fā)送SMTP請求
總結(jié)
TCP(傳輸控制協(xié)議)是一種面向連接、可靠的傳輸層協(xié)議,由IETF定義,用于解決IP層不提供可靠流機制的問題。TCP報文格式包括源/目的端口號、報頭長度、標志位、校驗和、緊急指針、窗口大小等部分,通過序列號和確認序號實現(xiàn)確認應答機制。TCP具有面向連接、可靠傳輸、流控制、擁塞控制等特點,使用滑動窗口、快重傳等機制提高傳輸效率。其工作機制包括三次握手建立連接、四次揮手斷開連接等過程。TCP在Web瀏覽、電子郵件、文件傳輸?shù)葢脠鼍爸邪l(fā)揮著重要作用,保證了數(shù)據(jù)的可靠傳輸和順序性。