鄭可勤
摘 要:作為計(jì)算機(jī)網(wǎng)絡(luò)中較為重要的一種運(yùn)輸層協(xié)議,TCP連接著應(yīng)用層和網(wǎng)絡(luò)層,發(fā)揮著非常關(guān)鍵的作用。在TCP/IP協(xié)議中,我們重點(diǎn)關(guān)注TCP。本文主要立足于TCP協(xié)議的特點(diǎn),詳細(xì)介紹了TCP協(xié)議的主要特性。
關(guān)鍵詞:TCP;連接;仿真;網(wǎng)絡(luò)
一、TCP協(xié)議的概述
(一) TCP協(xié)議的特點(diǎn)
首先,TCP提供的連接服務(wù)穩(wěn)定性有保證。相關(guān)的連接有著和打電弧相似的建立過(guò)程。先撥電話號(hào)碼,當(dāng)對(duì)方接通回復(fù)“喂”的時(shí)候,再告知對(duì)方自己是誰(shuí),完成任務(wù)后釋放;其次,TCP提供連接必須是只針對(duì)兩個(gè)客戶端,也就是實(shí)現(xiàn)一對(duì)一的傳輸;最后,TCP提供全雙工通信。這個(gè)特點(diǎn)就是保證通信的兩端在使用TCP的時(shí)候可以隨時(shí)通信,這樣就可以及時(shí)傳輸數(shù)據(jù)。
(二) TCP端口號(hào)和套接字地址
TCP端口號(hào):端口號(hào)只能對(duì)計(jì)算機(jī)中的進(jìn)程進(jìn)行標(biāo)記,一般使用兩個(gè)字節(jié)來(lái)完成標(biāo)記工作,這也就是端口號(hào)的本地意義。當(dāng)端口號(hào)并不是我們熟悉的狀況時(shí),要使用數(shù)值為1024~49151的等記端口號(hào),使用的過(guò)程中要在UANA上登記,避免中間重復(fù)使用。無(wú)連接的UDP和TCP也有著自己的端口號(hào),但是兩個(gè)端口號(hào)彼此之間是相互獨(dú)立的,各自有著不同的用途。套接字地址:CP中的套接字,一般在表達(dá)的過(guò)程中會(huì)用同一個(gè)名詞表達(dá)不一樣的含義。也就是說(shuō),當(dāng)套接字被一個(gè)程序使用,那么socket函數(shù)中使用的函數(shù)以及調(diào)用它的端口都會(huì)叫做scocket。當(dāng)緊急URG給系統(tǒng)發(fā)出有關(guān)緊急數(shù)據(jù)傳輸?shù)耐ㄖ獣r(shí),相關(guān)的緊急數(shù)據(jù)應(yīng)該作為優(yōu)先級(jí)任務(wù),盡快被傳送。
二、 TCP的連接與釋放
(一)建立連接
全雙工是TCP傳輸數(shù)據(jù)的主要方式,在整個(gè)過(guò)程中有三次握手的方式來(lái)完成對(duì)該項(xiàng)目的建立,并且TCP的連接和釋放都是使用客戶—服務(wù)器方式,連接的建立也是從服務(wù)器開(kāi)始。首先將SYN設(shè)置為1,然后將數(shù)據(jù)包頭部的那個(gè)確認(rèn)字段設(shè)置為x+1,接下來(lái)將最開(kāi)始的序列號(hào)放在數(shù)據(jù)包頭部的數(shù)列中。當(dāng)這個(gè)鏈接的數(shù)據(jù)段被接受之后,那么相應(yīng)的數(shù)據(jù)段就會(huì)被送到緩沖區(qū),同時(shí),服務(wù)器也能夠及時(shí)收到客戶端從另外一邊發(fā)來(lái)的數(shù)據(jù)段,最后完成相關(guān)輸出的確認(rèn)。
(二) TCP的連接釋放
TCP傳輸數(shù)據(jù)的主要方式是全雙工,因此,數(shù)據(jù)傳輸結(jié)束后,所有的連接都會(huì)被釋放,并且每個(gè)連接的釋放都是單個(gè)放行的。首先,當(dāng)被A發(fā)送的數(shù)據(jù)能夠到達(dá)B,為了杜絕失效的報(bào)文段在文本中存在,最后一個(gè)一個(gè)ACK被發(fā)送完后,相關(guān)的環(huán)節(jié)就會(huì)處理。這種辦法就能夠及時(shí)高效地處理掉連接過(guò)程中請(qǐng)求報(bào)文段的問(wèn)題。
(三) TCP的連接復(fù)位
一般情況下,有三種情況需要復(fù)位。首先,當(dāng)TCP連接的端口并不存在時(shí),另一端TCP就能發(fā)送一個(gè)報(bào)文段,這時(shí)需要關(guān)閉相關(guān)的連接;其次,如果一端的TCP出現(xiàn)一些異常情況,那么就可以通過(guò)發(fā)送復(fù)位來(lái)終止連接;最后一種情況是,當(dāng)一端的TCP長(zhǎng)時(shí)間沒(méi)有使用,那么就可以發(fā)送復(fù)位信息報(bào),將其關(guān)閉。
(四) TCP擁塞控制
TCP的擁塞控制是TCP工作中存在的一種現(xiàn)實(shí)問(wèn)題,會(huì)對(duì)整個(gè)工作造成一定程度的影響,因此,必須針對(duì)這種情況進(jìn)行改進(jìn)。首先,慢啟動(dòng)和擁塞避免。TCP用來(lái)發(fā)送數(shù)據(jù)是慢啟動(dòng)和擁塞避免算法展開(kāi)的依據(jù),這種算法的實(shí)現(xiàn)必須通過(guò)在TCP中增加兩個(gè)變量;其次,快恢復(fù)和快重傳。這種主要是針對(duì)發(fā)送端展開(kāi)的,多種網(wǎng)絡(luò)會(huì)導(dǎo)致端口查收到重復(fù)ACK,因此,應(yīng)該找到事故原因,及時(shí)處理。
三、TCP的仿真實(shí)驗(yàn)
(一)仿真實(shí)驗(yàn)的設(shè)置
我們都知道TCP是有鏈接的可靠的傳輸層協(xié)議,所以在傳輸運(yùn)用過(guò)程中也會(huì)出現(xiàn)錯(cuò)誤。下面我們通過(guò)以下仿真實(shí)驗(yàn),來(lái)了解TCP在傳輸FTP文件時(shí)一數(shù)據(jù)報(bào)丟失的情況,來(lái)詳細(xì)分析下這一解決過(guò)程。
我們用OPNET來(lái)做TCP的仿真實(shí)驗(yàn),這只是在一個(gè)比較簡(jiǎn)單的環(huán)境下在做關(guān)于TCP的仿真實(shí)驗(yàn),測(cè)試出數(shù)據(jù)圖通過(guò)分析和比較來(lái)觀察TCP處理數(shù)據(jù)丟失包的具體工作原理和過(guò)程。選擇“結(jié)果- - > >安排Pannels顯示所有“查看保存結(jié)果。
頂部多媒體的快速decovery conquestion窗口由于“TCP雷諾”,在重新傳輸。這個(gè)conquestion窗口只是減少了一半,而不是1MSS,從而快速恢復(fù)。graphe的底部顯示了發(fā)送之間的關(guān)系序列號(hào)碼和收到seqment ack服務(wù)器上的數(shù)量。服務(wù)器故意把一個(gè)數(shù)據(jù)包給丟失,這時(shí)客戶服務(wù)器就會(huì)發(fā)出三個(gè)ACK,會(huì)被重新發(fā)送。
這時(shí)把FTP的Command Mix的值設(shè)置為100%,把Inter-Requests設(shè)置為constant 3600,把File Size 設(shè)置為FTP,把Server,type of serveice值設(shè)置為best effort,把RSVP parameters值設(shè)置為 None;用NotUsed來(lái)設(shè)置Back-End Custom Application值。
(二)仿真實(shí)驗(yàn)的過(guò)程
針對(duì)TCP數(shù)據(jù)傳輸開(kāi)始時(shí),擁塞窗口設(shè)置為最大的MSS值,慢啟動(dòng)算法開(kāi)始,cwnd被設(shè)置為200,那么400,800,1600.......以103S,擁塞窗口達(dá)到6500的最大閾值,為了不讓擁塞窗口將不會(huì)太增加網(wǎng)絡(luò)阻塞引起的,然后執(zhí)行擁塞避免算法,每一個(gè)RTT,擁塞窗口將增加一個(gè)單位,然后在107s當(dāng)FTP數(shù)據(jù)包丟失,然后進(jìn)行處理,擁塞窗口的值下降,TCP協(xié)議在慢啟動(dòng)和擁塞避免算法的實(shí)現(xiàn),窗口的大小增長(zhǎng)將呈現(xiàn)線性增長(zhǎng)。設(shè)置最大窗口閾值,根據(jù)3響應(yīng)消息重復(fù)判斷丟包,重傳丟失的數(shù)據(jù)包和直接的閾值,為當(dāng)前擁塞窗口6500的一半,這是快速重傳(Tahoe),然后轉(zhuǎn)移到慢啟動(dòng)。然后再轉(zhuǎn)入慢開(kāi)始。
在窗口大小到達(dá)大約80000后,應(yīng)該是收到3個(gè)連續(xù)ACK,若根據(jù)3個(gè)重復(fù)的應(yīng)答報(bào)文就會(huì)知道有沒(méi)有丟包,而且丟失的分組會(huì)被重傳,此時(shí)的ssthresh的值就為擁塞窗口的一半,這樣就進(jìn)入了進(jìn)入擁塞避免階段。
(三)仿真實(shí)驗(yàn)小結(jié)
用OPNET做TCP的仿真實(shí)驗(yàn),數(shù)據(jù)包丟失,TCP數(shù)據(jù)的變化都被形象的描繪出來(lái)了,很好的詮釋了這一失誤和改正過(guò)程。為T(mén)CP以后出錯(cuò)改正做了很好的例子。
四、結(jié)語(yǔ)
綜上所述,網(wǎng)絡(luò)普及的這個(gè)時(shí)代,讓我們不斷地認(rèn)識(shí)到了計(jì)算機(jī)網(wǎng)絡(luò)的重要性,學(xué)生們也開(kāi)始越來(lái)越重視對(duì)TCP的研究。在簡(jiǎn)單的OSI體系中,TCP發(fā)揮著較為重要的作用,因此,我們必須深入研究其工作原理,便于在運(yùn)輸層中順利地運(yùn)用TCP協(xié)議。
參考文獻(xiàn):
[1]余永勝.探究基于TCP 協(xié)議的網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)與開(kāi)發(fā)[J].電子制作,2013,11.
[2]曹雪峰.基于虛擬實(shí)驗(yàn)的TCP 原理實(shí)驗(yàn)設(shè)計(jì)[J].實(shí)驗(yàn)技術(shù)與管理,2013,07.
[3楊延雙,張建標(biāo),王全民.TCP/IP協(xié)議分析及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2007,2.