摘要:TCP(傳輸控制協(xié)議)是一系列規(guī)則的集合,它和網(wǎng)際協(xié)議(IP)共同使用,通過互聯(lián)網(wǎng)在計(jì)算機(jī)之間以信息單元的形式發(fā)送數(shù)據(jù)。IP協(xié)議控制實(shí)際的數(shù)據(jù)傳輸,TCP協(xié)議主要負(fù)責(zé)追蹤在互聯(lián)網(wǎng)上傳送的信息所劃分的各個(gè)數(shù)據(jù)單元(包)。TCP協(xié)議是面向連接的協(xié)議,就是說在兩端傳送信息時(shí),連接是一直建立和保持的。TCP協(xié)議負(fù)責(zé)把信息劃分成IP協(xié)議所能夠處理的,也要能把接收到的包拼成一個(gè)完整的信息。在開放式系統(tǒng)互連(OSI)通信模型中,TCP協(xié)議位于第四層傳輸層中。
關(guān)鍵詞:傳輸控制協(xié)議;數(shù)據(jù)傳輸;數(shù)據(jù)包
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2009)05-1079-02
TCP Protocol Outlined and three-way Handshake Principle of Analytic
ZHU Jing
(Network Academy of Ahead Software Vocational College, Nanchang 330041,China)
Abstract:TCP (Transmission Control Protocol) is a collection of a series of rules that it and the Internet Protocol (IP) of common use, via the Internet between computers in the form of information units send data. IP protocol to control the actual data transmission, TCP protocol is mainly responsible for tracking the Internet to send information into the various data unit (packet). TCP protocol is connection-oriented protocol, meaning that in the two ends of transmission information, the connection is always established and maintained. TCP protocol is responsible for the information is divided into IP agreements to the deal, but also can receive the package up a complete information. In the open systems interconnection (OSI) communication model, TCP protocol at the transport layer of the fourth floor.
Key words: transmission control protocol; data transmission; data package
1 引言
TCP/IP是Internet/Intranet使用的協(xié)議體系,也是大多數(shù)網(wǎng)絡(luò)采用的協(xié)議。本文內(nèi)容主要闡述有關(guān)TCP協(xié)議如何應(yīng)用于傳輸數(shù)據(jù)及數(shù)據(jù)傳輸?shù)脑敿?xì)過程解析。
2 TCP/IP協(xié)議概述
TCP/IP協(xié)議(Transmission Control Protocol/Internet Protocol)叫做傳輸控制/網(wǎng)際協(xié)議,又叫網(wǎng)絡(luò)通訊協(xié)議,這個(gè)協(xié)議是Internet國(guó)際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ)。TCP/IP是網(wǎng)絡(luò)中使用的基本的通信協(xié)議。雖然從名字上看TCP/IP包括兩個(gè)協(xié)議,傳輸控制協(xié)議(TCP)和網(wǎng)際協(xié)議(IP),但TCP/IP實(shí)際上是一組協(xié)議,它包括上百個(gè)各種功能的協(xié)議,如:遠(yuǎn)程登錄、文件傳輸和電子郵件等,而TCP協(xié)議和IP協(xié)議是保證數(shù)據(jù)完整傳輸?shù)膬蓚€(gè)基本的重要協(xié)議。通常說TCP/IP是Internet協(xié)議族,而不單單是TCP和IP。TCP/IP協(xié)議使用范圍極廣,是目前異種網(wǎng)絡(luò)通信使用的唯一協(xié)議體系,適用于連接多種機(jī)型,既可用于局域網(wǎng),又可用于廣域網(wǎng),許多廠商的計(jì)算機(jī)操作系統(tǒng)和網(wǎng)絡(luò)操作系統(tǒng)產(chǎn)品都采用或含有TCP/IP協(xié)議。TCP/IP協(xié)議已成為目前事實(shí)上的國(guó)際標(biāo)準(zhǔn)和工業(yè)標(biāo)準(zhǔn)。
TCP/IP是很多的不同的協(xié)議組成。 TCP用戶數(shù)據(jù)報(bào)表協(xié)議,也稱作TCP傳輸控制協(xié)議(Transport Control Protocol,可靠的主機(jī)到主機(jī)層協(xié)議),這里要先強(qiáng)調(diào)一下,傳輸控制協(xié)議是OSI網(wǎng)絡(luò)的第四層的叫法,TCP傳輸控制協(xié)議是TCP/IP傳輸?shù)?個(gè)基本協(xié)議的一種。兩個(gè)TCP意思不相同)。TCP是一種可靠的面向連接的傳送服務(wù)。它在傳送數(shù)據(jù)時(shí)是分段進(jìn)行的,主機(jī)交換數(shù)據(jù)必須建立一個(gè)會(huì)話。它用比特流通信,即數(shù)據(jù)被作為無結(jié)構(gòu)的字節(jié)流。 通過每個(gè)TCP傳輸?shù)淖侄沃付樞蛱?hào),以獲得可靠性。是在OSI參考模型中的第四層,TCP是使用IP的網(wǎng)間互聯(lián)功能而提供可靠的數(shù)據(jù)傳輸,IP不停的把報(bào)文放到 網(wǎng)絡(luò)上,而TCP是負(fù)責(zé)確信報(bào)文到達(dá)。在協(xié)同IP的操作中TCP負(fù)責(zé):握手過程、報(bào)文管理、流量控制、錯(cuò)誤檢測(cè)和處理(控制),可以根據(jù)一定的編號(hào)順序?qū)Ψ钦m樞虻膱?bào)文給予從新排列順序。
3 三次握手原理解析
在TCP會(huì)話初期,有所謂的“三握手”,即對(duì)每次發(fā)送的數(shù)據(jù)量是怎樣跟蹤進(jìn)行協(xié)商使數(shù)據(jù)段的發(fā)送和接收同步,根據(jù)所接收到的數(shù)據(jù)量而確定的數(shù)據(jù)確認(rèn)數(shù)及數(shù)據(jù)發(fā)送、接收完畢后何時(shí)撤消聯(lián)系,并建立虛連接。為了提供可靠的傳送,TCP在發(fā)送新的數(shù)據(jù)之前,以特定的順序?qū)?shù)據(jù)包的序號(hào),并需要這些包傳送給目標(biāo)機(jī)之后的確認(rèn)消息。TCP總是用來發(fā)送大批量的數(shù)據(jù)。當(dāng)應(yīng)用程序在收到數(shù)據(jù)后要做出確認(rèn)時(shí)也要用到TCP。由于TCP需要時(shí)刻跟蹤,這需要額外開銷,使得TCP的格式有些顯得復(fù)雜。
TCP握手協(xié)議在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個(gè)連接。
第一次握手:建立連接時(shí),客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);
第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);
第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手。完成三次握手,客戶端與服務(wù)器開始傳送數(shù)據(jù),在上述過程中,還有一些重要的概念:未連接隊(duì)列:在三次握手協(xié)議中,服務(wù)器維護(hù)一個(gè)未連接隊(duì)列,該隊(duì)列為每個(gè)客戶端的SYN包(syn=j)開設(shè)一個(gè)條目,該條目表明服務(wù)器已收到SYN包,并向客戶發(fā)出確認(rèn),正在等待客戶的確認(rèn)包。這些條目所標(biāo)識(shí)的連接在服務(wù)器處于Syn_RECV狀態(tài),當(dāng)服務(wù)器收到客戶的確認(rèn)包時(shí),刪除該條目,服務(wù)器進(jìn)入ESTABLISHED狀態(tài)。Backlog參數(shù):表示未連接隊(duì)列的最大容納數(shù)目。
SYN-ACK :重傳次數(shù)。 服務(wù)器發(fā)送完SYN-ACK包,如果未收到客戶確認(rèn)包,服務(wù)器進(jìn)行首次重傳,等待一段時(shí)間仍未收到客戶確認(rèn)包,進(jìn)行第二次重傳,如果重傳次數(shù)超過系統(tǒng)規(guī)定的最大重傳次數(shù),系統(tǒng)將該連接信息從半連接隊(duì)列中刪除。注意,每次重傳等待的時(shí)間不一定相同。
半連接存活時(shí)間:是指半連接隊(duì)列的條目存活的最長(zhǎng)時(shí)間,也即服務(wù)從收到SYN包到確認(rèn)這個(gè)報(bào)文無效的最長(zhǎng)時(shí)間,該時(shí)間值是所有重傳請(qǐng)求包的最長(zhǎng)等待時(shí)間總和。有時(shí)我們也稱半連接存活時(shí)間為Timeout時(shí)間、SYN_RECV存活時(shí)間。
在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個(gè)連接。如圖1所示。第一次握手:建立連接時(shí),客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn); 第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手。 完成三次握手,客戶端與服務(wù)器開始傳送數(shù)據(jù)。
需要斷開連接的時(shí)候,TCP也需要互相確認(rèn)才可以斷開連接,采用四次揮手?jǐn)嚅_一個(gè)連接,如圖2所示。在第一次交互中,首先發(fā)送一個(gè)FIN=1的請(qǐng)求,要求斷開,目標(biāo)主機(jī)在得到請(qǐng)求后發(fā)送ACK=1進(jìn)行確認(rèn);在確認(rèn)信息發(fā)出后,就發(fā)送了一個(gè)FIN=1的包,與源主機(jī)斷開;隨后源主機(jī)返回一條ACK=1的信息,這樣一次完整的TCP會(huì)話就結(jié)束了。
4 結(jié)束語(yǔ)
TCP是面向連接的,所謂面向連接,就是當(dāng)計(jì)算機(jī)雙方通信時(shí)必需先建立連接,然后數(shù)據(jù)傳送,最后拆除連接三個(gè)過程。通過三個(gè)過程實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的發(fā)送與接收。
參考文獻(xiàn):
[1] 汪賢鋒. TCP/IP協(xié)議的漏洞分析及防范[J].電腦知識(shí)與技術(shù),2008(6).
[2] 周志忠. 論基于TCP的數(shù)據(jù)流擁塞控制技術(shù)[J].網(wǎng)絡(luò)與信息,2008(5).
[3] 楊尚森. 網(wǎng)絡(luò)管理與維護(hù)技術(shù)[M]. 電子工業(yè)出版社,2007(7):11-19.
[4] 微軟公司著.網(wǎng)絡(luò)基本架構(gòu)的實(shí)現(xiàn)與管理[M].高等教育出版社,2004(10):3.