背景
TCP協(xié)議增強器,是指將TCP/IP協(xié)議棧中傳輸層的TCP協(xié)議進(jìn)行增強,使之符合一些復(fù)雜網(wǎng)絡(luò)環(huán)境的參數(shù)要求(如時延、誤碼率、速率等)的一種應(yīng)用層軟件技術(shù),將TCP協(xié)議增強器編譯在PC上,可以作為一般網(wǎng)絡(luò)和復(fù)雜網(wǎng)絡(luò)通信的橋梁,或者說轉(zhuǎn)換網(wǎng)絡(luò)環(huán)境的網(wǎng)關(guān),其應(yīng)用示意圖如下:
上圖中,客戶端如果要訪問服務(wù)器網(wǎng)頁,由客戶端發(fā)送的連接請求經(jīng)過左邊的TCP協(xié)議增強器GW1增強,成功傳輸?shù)接疫叺腡CP協(xié)議增強器GW2,然后轉(zhuǎn)換成原來的TCP包再發(fā)送給服務(wù)器,這樣就能在復(fù)雜網(wǎng)絡(luò)環(huán)境下也能建立連接并進(jìn)一步傳輸數(shù)據(jù)。
TCP協(xié)議增強網(wǎng)絡(luò)系統(tǒng)的關(guān)鍵部分是TCP協(xié)議增強軟件,這是在github上可下載的開源軟件,實現(xiàn)在Linux平臺上,編譯后軟件運行在應(yīng)用層,將傳輸層的TCP協(xié)議進(jìn)行增強,轉(zhuǎn)換成復(fù)雜網(wǎng)絡(luò)環(huán)境需要的協(xié)議,適應(yīng)某些網(wǎng)絡(luò)環(huán)境的復(fù)雜性。本片博客中說明了該軟件的編譯和配置,并搭建模擬通信環(huán)境,對于TCP協(xié)議增強器的技術(shù)實現(xiàn)方案進(jìn)行測試和抓包驗證。
要求和術(shù)語
****TCP增強網(wǎng)絡(luò)系統(tǒng)的一般技術(shù)要求:(1)兩個增強器直連:網(wǎng)絡(luò)層Ping通,傳輸層正常進(jìn)行Socket通信,應(yīng)用層正常進(jìn)行HTTP傳輸;(2)兩個增強器通過網(wǎng)線連接同一個路由器,:網(wǎng)絡(luò)層Ping通,傳輸層正常進(jìn)行Socket通信,應(yīng)用層正常進(jìn)行HTTP傳輸;其中TCP協(xié)議增強器應(yīng)用軟件按照編譯方式的不同分為TUN模式和TAP模式,前者是點對點方式,后者是模擬以太網(wǎng)設(shè)備的方式,本博客主要介紹TUN方式。術(shù)語TCP:TCP(Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,廣泛應(yīng)用與互聯(lián)網(wǎng)TCP/IP協(xié)議棧的傳輸層中。TAP:TCP協(xié)議增強器的TAP模式,也可說是以太網(wǎng)連接模式。此外TAP還是一種虛擬網(wǎng)卡模擬方式.TUN:TCP協(xié)議增強器的TUN模式,也可以說是一種點對點設(shè)備。此外TUN還是一種虛擬網(wǎng)卡模擬方式.Tap/Tun虛擬網(wǎng)卡工作原理:http://www.ibm.com/developerworks/cn/linux/l-tuntap/Namespace:一種虛擬空間的實現(xiàn)方式,簡單來說就是在一臺PC上可以實現(xiàn)類似于兩臺PC通信的效果,將TCP協(xié)議增強器應(yīng)用軟件放在客戶端虛擬空間內(nèi),然后虛擬空間外的瀏覽器就可以認(rèn)為TCP協(xié)議增強器是在另一臺PC上。在Linux上創(chuàng)建虛擬空間參考:http://blog.csdn.net/dog250/article/details/26147357
編譯
源碼編譯首先介紹TAP模式的TCP協(xié)議增強器源碼編譯過程:1 在Ubuntu平臺上解壓縮源碼包2 解壓后進(jìn)入source文件夾,修改Makefile.in文件中Versionon
date\nCompile-time改為Version
on date
Compile-time,即用空格代替原來的”\n”2cd ../apps3./configure4cd ../source5./configure --gateway=yes –tap=yes6cd ..7make clean,make再介紹TUN模式的TCP協(xié)議增強器源碼編譯過程:1 在Ubuntu平臺上解壓縮源碼包2 解壓后進(jìn)入source文件夾,修改Makefile.in文件中Versionon
date\nCompile-time改為Version
on date
Compile-time,即用空格代替原來的”\n”2cd ../apps3./configure4cd ../source5./configure --gateway=yes --tun=yes6cd ..7make clean,make