人妻少妇乱子伦精品_日韩人妻潮喷视频网站_日本最新最全无码不卡免费_日韩AV无码中文

當(dāng)前位置: 首頁(yè) > 科技新聞 >

淺談TCP協(xié)議,總算明白它是干什么的了

時(shí)間:2019-11-13 01:10來(lái)源:網(wǎng)絡(luò)整理 瀏覽:
一、什么是TCP,他是干什么的? TCP即傳輸控制協(xié)議(Transmission Control Protocol)是一種面向連接的、可靠

淺談TCP協(xié)議,總算明白它是干什么的了

一、什么是TCP,他是干什么的?

TCP即傳輸控制協(xié)議(Transmission Control Protocol)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通訊協(xié)議。

TCP是為了在不可靠的互聯(lián)網(wǎng)上提供可靠的端到端字節(jié)流而專(zhuān)門(mén)設(shè)計(jì)的一個(gè)傳輸協(xié)議。

互聯(lián)網(wǎng)與單個(gè)網(wǎng)絡(luò)有很大的不同,因?yàn)榛ヂ?lián)網(wǎng)的不同部分可能有截然不同的拓補(bǔ)結(jié)構(gòu)、帶寬、延遲、數(shù)據(jù)包大小和其他參數(shù)。TCP的設(shè)計(jì)目標(biāo)是能夠動(dòng)態(tài)地適應(yīng)互聯(lián)網(wǎng)的這些特性,而且具備面向各種故障的健壯性。

不同主機(jī)的應(yīng)用層之間經(jīng)常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機(jī)制,而是提供不可靠的包交換。

應(yīng)用層向TCP層發(fā)送用于網(wǎng)間傳輸?shù)摹⒂?位字節(jié)表示的數(shù)據(jù)流,然后TCP把數(shù)據(jù)流分區(qū)成適當(dāng)長(zhǎng)度的報(bào)文段(通常受計(jì)算連接的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層的最大傳輸單元(MTU)的限制)。之后TCP把結(jié)果包傳輸給IP層,有它來(lái)通過(guò)網(wǎng)絡(luò)將包傳送給接收端實(shí)體的TCP層。

TCP為了保證不發(fā)生丟包,就給每個(gè)包一個(gè)序號(hào),同時(shí)序號(hào)也保證了傳送到接收端實(shí)體的包的按序接收。然后

接收端實(shí)體對(duì)已成功接收到的包回一個(gè)相應(yīng)的確認(rèn)(ACK);如果發(fā)送端實(shí)體在合理的往返時(shí)延(RTT)內(nèi)未接收到確認(rèn),那么對(duì)應(yīng)的數(shù)據(jù)包就被假設(shè)為已丟失將會(huì)被進(jìn)行重傳。TCP用一個(gè)校驗(yàn)和函數(shù)來(lái)校驗(yàn)數(shù)據(jù)是否有誤;在發(fā)送和接收時(shí)都要計(jì)算校驗(yàn)。

每臺(tái)支持TCP的機(jī)器都有一個(gè)TCP傳輸實(shí)體。TCP 實(shí)體可以時(shí)一個(gè)庫(kù)過(guò)程、一個(gè)用戶(hù)進(jìn)程、或者內(nèi)核的一部分。在所有這些情形下,它管理TCP流,以及與IP層之間的接口。TCP傳輸實(shí)體接收本地進(jìn)程的用戶(hù)數(shù)據(jù)流,將他們分割成不超過(guò)64KB(實(shí)際上去掉IP和TCP頭,通常不超過(guò)1460數(shù)據(jù)字節(jié))的分段,每個(gè)分段以單獨(dú)的IP數(shù)據(jù)報(bào)形式發(fā)送。當(dāng)包含TCP數(shù)據(jù)的數(shù)據(jù)報(bào)到達(dá)一臺(tái)機(jī)器時(shí),它們被遞交給TCP傳輸實(shí)體,TCP傳輸實(shí)體重構(gòu)出原始的字節(jié)流。為簡(jiǎn)化起見(jiàn),我們有時(shí)候僅僅用TCP來(lái)代表TCP傳輸實(shí)體(一段軟件)或者TCP協(xié)議(一組規(guī)則)。根據(jù)上下文語(yǔ)義你應(yīng)該能很清楚的推斷出其實(shí)際含義。例如,在‘用戶(hù)將數(shù)據(jù)提交給TCP’這句話中,很顯然這里指的時(shí)TCP實(shí)體。

IP層并不保證數(shù)據(jù)報(bào)一定被正確的提交到接收方,也不只是數(shù)據(jù)報(bào)的發(fā)送速度有多塊。正是TCP負(fù)責(zé)紀(jì)要足夠快的發(fā)送數(shù)據(jù)報(bào),以便使用網(wǎng)絡(luò)容量,但又不能引起網(wǎng)絡(luò)阻塞:而且,TCP超時(shí)后,要重傳沒(méi)有遞交的數(shù)據(jù)報(bào)。即使被正確遞交的數(shù)據(jù)報(bào),也可能存在錯(cuò)誤的問(wèn)題,這也是TCP的責(zé)任,它必須把接收到的數(shù)據(jù)報(bào)重新裝配成正確的順序,簡(jiǎn)言之,TCP必須提供可靠性的良好性能,這正是大多數(shù)用戶(hù)所期望的而IP又沒(méi)有提供的功能。

二、主要特點(diǎn)

當(dāng)應(yīng)用層向TCP層發(fā)送用于網(wǎng)間傳輸?shù)?、?位字節(jié)表示的數(shù)據(jù)流,TCP則把數(shù)據(jù)流分割成適當(dāng)長(zhǎng)度的報(bào)文。之后TCP把數(shù)據(jù)包傳遞給IP層,由它來(lái)通過(guò)網(wǎng)絡(luò)將包傳送給接收端實(shí)體的TCP層。

TCP是一種面向廣域網(wǎng)的通信協(xié)議,目的是在跨越多個(gè)網(wǎng)絡(luò)通信時(shí),為兩個(gè)通信端點(diǎn)之間提供一條具有一下特點(diǎn)的通信方式:

(1)基于流的方式;

(2)面向連接;

(3)可靠通信方式;

(4)在網(wǎng)絡(luò)情況不佳的時(shí)候盡量降低系統(tǒng)由于重傳帶來(lái)的帶寬開(kāi)銷(xiāo);

(5)通信連接維護(hù)是面向的兩個(gè)端點(diǎn)的,而不考慮中間網(wǎng)段和節(jié)點(diǎn)。

為滿足TCP協(xié)議的這些特點(diǎn),TCP協(xié)議做了以下規(guī)定:

①數(shù)據(jù)分片:在發(fā)送端對(duì)用戶(hù)數(shù)據(jù)進(jìn)行分片,在接收端進(jìn)行重組,由TCP確定分片的大小并控制分片和重組;

②到達(dá)確認(rèn):接收端接收到分片數(shù)據(jù)時(shí),根據(jù)分片數(shù)據(jù)序號(hào)向發(fā)送端發(fā)送一個(gè)確認(rèn);

③超時(shí)重發(fā):發(fā)送方在發(fā)送分片時(shí)啟動(dòng)超時(shí)定時(shí)器,如果在定時(shí)器超時(shí)之后沒(méi)有接收到對(duì)應(yīng)的確認(rèn),重發(fā)分片;

④滑動(dòng)窗口:TCP連接每一方的接收緩沖空間大小都固定,接收端只允許另一端發(fā)送接收端緩沖區(qū)所能接納的數(shù)據(jù),TCP在滑動(dòng)窗口的基礎(chǔ)上提供流量控制,防止較快主機(jī)致使較慢主機(jī)的緩沖區(qū)溢出;

⑤失序處理:作為IP數(shù)據(jù)報(bào)來(lái)傳輸?shù)腡CP分片到達(dá)時(shí)可能會(huì)失序,TCP將對(duì)接收的數(shù)據(jù)進(jìn)行重新排序,將接收到的數(shù)據(jù)以正確的順序交給應(yīng)用層;

⑥重復(fù)處理:作為IP數(shù)據(jù)報(bào)來(lái)傳輸?shù)腡CP分片會(huì)發(fā)生重復(fù),TCP的接收端必須丟棄重復(fù)的數(shù)據(jù);

⑦數(shù)據(jù)校驗(yàn):TCP將保持它首部和數(shù)據(jù)的校驗(yàn)和,這是一個(gè)端到端的校驗(yàn)和,目的是檢測(cè)數(shù)據(jù)在傳輸過(guò)程中的任何變化。如果收到分片的校驗(yàn)和由差錯(cuò),TCP將丟棄這個(gè)分片,并確認(rèn)接收到此報(bào)文段導(dǎo)致對(duì)端超時(shí)并重發(fā)。

三、工作方式

建立連接

TCP是因特網(wǎng)中的傳輸層協(xié)議,使用三次握手協(xié)議建立連接。當(dāng)主動(dòng)方發(fā)出SYN連接請(qǐng)求后,等待對(duì)方回答SYN+ACK,并最終對(duì)對(duì)方的SYN執(zhí)行ACK確認(rèn)。這種建立連接的方法可以防止產(chǎn)生錯(cuò)誤的連接,TCP使用的流量控制協(xié)議是可便大小的華東窗口協(xié)議。

TCP三次握手的過(guò)程如下:

(1)客戶(hù)端發(fā)送SYN(SEQ=x)報(bào)文給服務(wù)端,進(jìn)入SYN_SEND狀態(tài)。

(2)服務(wù)端接收SYN報(bào)文,回應(yīng)一個(gè)SYN(SEQ=y)ACK(ACK=x+1)報(bào)文,進(jìn)入SYN_RECV狀態(tài)。

(3)客戶(hù)端收到服務(wù)器端的SYN報(bào)文,回應(yīng)一個(gè)ACK(ACK=y+1)報(bào)文,進(jìn)入Established狀態(tài)。

三次握手完成,TCP客戶(hù)端和服務(wù)器端成功的建立連接,可以開(kāi)始傳輸數(shù)據(jù)了。如圖:

淺談TCP協(xié)議,總算明白它是干什么的了

連接終止

建立一個(gè)連接需要三次握手,而重一一個(gè)連接要經(jīng)過(guò)四次握手,這是由TCP的半關(guān)閉(half-close)造成的。具體過(guò)程如下圖所示。

淺談TCP協(xié)議,總算明白它是干什么的了

(1)某個(gè)應(yīng)用進(jìn)程首先調(diào)用close,稱(chēng)該端執(zhí)行”主動(dòng)關(guān)閉“(active close)。該端的TCP于是發(fā)送一個(gè)FIN分節(jié),表示數(shù)據(jù)分發(fā)完畢。

(2)接收到這個(gè)FIN的對(duì)端執(zhí)行”被動(dòng)關(guān)閉“(passive close),這個(gè)FIN由TCP確認(rèn)。

注意:FIN的接收也作為一個(gè)文件結(jié)束符(end-of-file)傳遞給接收端應(yīng)用進(jìn)程,放在已排隊(duì)等候應(yīng)用進(jìn)程接收的任何其他數(shù)據(jù)報(bào)之后,因?yàn)?,F(xiàn)IN的接收意味著金額手段應(yīng)用進(jìn)程相應(yīng)連接再無(wú)額外數(shù)據(jù)可接收。

(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í)行主動(dòng)關(guān)閉的那端)確認(rèn)這個(gè)FIN。既然每個(gè)方向都需要一個(gè)FIN和一個(gè)ACK,因此通常需要4個(gè)分節(jié)。

淺談TCP協(xié)議,總算明白它是干什么的了
【責(zé)任編輯:武曉燕 TEL:(010)68476606】
推薦內(nèi)容