TCP定義
TCP代表 傳輸控制協(xié)議。它是一種傳輸層協(xié)議,有助于將數(shù)據(jù)包從源傳輸?shù)侥繕?biāo)。它是一種面向連接的協(xié)議,這意味著它在網(wǎng)絡(luò)中的計(jì)算設(shè)備之間發(fā)生通信之前建立連接。此協(xié)議與IP協(xié)議一起使用,因此它們一起稱為 TCP/IP。
TCP的主要功能是從應(yīng)用層獲取數(shù)據(jù)。然后,它將數(shù)據(jù)分成幾個(gè)數(shù)據(jù)包,為這些數(shù)據(jù)包提供編號(hào),最后將這些數(shù)據(jù)包傳輸?shù)侥康牡?。另一方面,TCP將重新組裝數(shù)據(jù)包并將其傳輸?shù)綉?yīng)用層。眾所周知,TCP是一種面向連接的協(xié)議,因此連接將保持建立狀態(tài),直到發(fā)送方和接收方之間的通信未完成。
TCP的工作原理
為了確保每條消息完好無損地到達(dá)其目標(biāo)位置,TCP/IP 模型將數(shù)據(jù)分解成小包,然后在另一端將這些包重新組裝成原始消息。與一次性發(fā)送所有內(nèi)容相比,以小塊信息的形式發(fā)送信息可以更輕松地保持效率。
將特定消息分解為數(shù)據(jù)包后,如果一條路線堵塞但目的地保持不變,則這些數(shù)據(jù)包可能會(huì)沿多條路線傳輸。
我們可以看到消息被分解,然后在目的地以不同的順序重新組裝
例如,當(dāng)用戶在世界某個(gè)地方的互聯(lián)網(wǎng)上請求網(wǎng)頁時(shí),服務(wù)器會(huì)處理該請求并將 HTML 頁面發(fā)送回該用戶。服務(wù)器使用稱為 HTTP 協(xié)議的協(xié)議。然后 HTTP 請求 TCP 層設(shè)置所需的連接并發(fā)送 HTML 文件。
TCP協(xié)議的特點(diǎn)
以下是TCP協(xié)議的功能:
傳輸層協(xié)議
TCP是一種傳輸層協(xié)議,因?yàn)樗糜趯?shù)據(jù)從發(fā)送方傳輸?shù)浇邮辗健?/span>
可靠
TCP是一種可靠的協(xié)議,因?yàn)樗裱骱湾e(cuò)誤控制機(jī)制。它還支持確認(rèn)機(jī)制,該機(jī)制檢查數(shù)據(jù)的狀態(tài)和聲音到達(dá)。在確認(rèn)機(jī)制中,接收方向發(fā)送方發(fā)送正確認(rèn)或負(fù)確認(rèn),以便發(fā)送方可以了解數(shù)據(jù)包是否已收到或需要重新發(fā)送。
維護(hù)數(shù)據(jù)的順序
此協(xié)議確保數(shù)據(jù)以發(fā)送的相同順序到達(dá)預(yù)期的接收器。它對每個(gè)段進(jìn)行排序和編號(hào),以便目標(biāo)端的TCP層可以根據(jù)它們的順序重新組裝它們。
面向連接
它是一種面向連接的服務(wù),這意味著數(shù)據(jù)交換僅在連接建立后發(fā)生。數(shù)據(jù)傳輸完成后,連接將終止。
全雙工
它是全雙工意味著數(shù)據(jù)可以同時(shí)在兩個(gè)方向上傳輸。
面向流
TCP是一種面向流的協(xié)議,因?yàn)樗试S發(fā)送方以字節(jié)流的形式發(fā)送數(shù)據(jù),也允許接收方以字節(jié)流的形式接受數(shù)據(jù)。TCP創(chuàng)建了一個(gè)環(huán)境,其中發(fā)送方和接收方都通過稱為虛擬電路的假想管連接。這個(gè)虛擬電路在互聯(lián)網(wǎng)上傳輸字節(jié)流。
需要傳輸控制協(xié)議
在網(wǎng)絡(luò)模型的分層架構(gòu)中,整個(gè)任務(wù)被劃分為較小的任務(wù)。每個(gè)任務(wù)都分配給處理該任務(wù)的特定層。在 TCP/IP模型中,有五層是應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層。傳輸層在為直接應(yīng)用程序進(jìn)程提供端到端通信方面起著關(guān)鍵作用。它創(chuàng)建65,000個(gè)端口,以便可以同時(shí)訪問多個(gè)應(yīng)用程序。它從上層獲取數(shù)據(jù),并將數(shù)據(jù)分成較小的數(shù)據(jù)包,然后將它們傳輸?shù)骄W(wǎng)絡(luò)層。
技術(shù)合作計(jì)劃的工作
在TCP中,連接是使用三次握手建立的。客戶端發(fā)送帶有序列號(hào)的段。作為回報(bào),服務(wù)器使用自己的序列號(hào)以及確認(rèn)序列發(fā)送其段,確認(rèn)序列比客戶端序列號(hào)多一個(gè)。當(dāng)客戶端收到其段的確認(rèn)時(shí),它會(huì)將確認(rèn)發(fā)送到服務(wù)器。這樣,在客戶端和服務(wù)器之間建立了連接。
技術(shù)合作計(jì)劃的優(yōu)勢
它提供面向連接的可靠服務(wù),這意味著它保證了數(shù)據(jù)包的傳遞。如果數(shù)據(jù)包在網(wǎng)絡(luò)上丟失,則TCP將重新發(fā)送丟失的數(shù)據(jù)包。
它提供了一種使用滑動(dòng)窗口協(xié)議的流控制機(jī)制。
它通過使用校驗(yàn)和提供錯(cuò)誤檢測,并使用返回或ARP協(xié)議提供錯(cuò)誤控制。
它通過使用網(wǎng)絡(luò)擁塞避免算法來消除擁塞,該算法包括各種方案,例如加性增加/乘法減少(AIMD)、慢啟動(dòng)和擁塞窗口。
TCP的缺點(diǎn)
它增加了大量的開銷,因?yàn)槊總€(gè)分段都有自己的TCP標(biāo)頭,因此路由器的分段會(huì)增加開銷。
TCP標(biāo)頭格式
源端口:它定義發(fā)送數(shù)據(jù)的應(yīng)用程序的端口。因此,此字段包含源端口地址,即16位。
目標(biāo)端口:它定義接收端應(yīng)用程序端口。因此,此字段包含目標(biāo)端口地址,即16位。
序列號(hào):此字段包含特定會(huì)話中數(shù)據(jù)字節(jié)的序列號(hào)。
確認(rèn)編號(hào):設(shè)置ACK標(biāo)志后,它包含數(shù)據(jù)字節(jié)的下一個(gè)序列號(hào),并用作對先前接收數(shù)據(jù)的確認(rèn)。例如,如果接收方收到段號(hào)“x”,則它會(huì)響應(yīng)“x+1”作為確認(rèn)號(hào)。
赫倫:它指定標(biāo)頭中4字節(jié)字指示的標(biāo)頭的長度。標(biāo)頭的大小介于20到60字節(jié)之間。因此,此字段的值將介于5和15之間。
保留:它是一個(gè)保留供將來使用的4位字段,默認(rèn)情況下,所有字段都設(shè)置為零。
標(biāo)志 有六個(gè)控制位或標(biāo)志:
URG:它代表一個(gè)緊急指針。如果已設(shè)置,則緊急處理數(shù)據(jù)。
ACK:如果ACK設(shè)置為0,則表示數(shù)據(jù)包不包含確認(rèn)。
PSH:如果設(shè)置了此字段,則它請求接收設(shè)備將數(shù)據(jù)推送到接收應(yīng)用程序,而不對其進(jìn)行緩沖。
RST:如果已設(shè)置,則它請求重新啟動(dòng)連接。
SYN:它用于在主機(jī)之間建立連接。
FIN:它用于釋放連接,不會(huì)發(fā)生進(jìn)一步的數(shù)據(jù)交換。
WINDOW大小
這是一個(gè)16位字段。它包含接收器可以接受的數(shù)據(jù)大小。此字段用于發(fā)送方和接收方之間的流量控制,還確定接收方為段分配的緩沖區(qū)量。此字段的值由接收方確定。
校驗(yàn)和
這是一個(gè)16位字段。此字段在UDP中是可選的,但在TCP/IP的情況下,此字段是必填字段。
緊急指針?biāo)侵赶蚓o急數(shù)據(jù)字節(jié)的指針
(如果URG標(biāo)志設(shè)置為1)。它定義一個(gè)值,該值將添加到序列號(hào)中,以獲取最后一個(gè)緊急字節(jié)的序列號(hào)。
選項(xiàng)它提供了其他選項(xiàng)??蛇x字段以32位表示。如果此字段包含的數(shù)據(jù)小于32位,則需要填充才能獲取剩余位。