TCP桥接工具设计
引言
疫情期間,都被隔離在家,但是開發(fā)不能停,這次調(diào)試的是一個(gè)船舶綜測(cè)系統(tǒng),硬件和嵌入式組都基本調(diào)好了,我負(fù)責(zé)寫上位機(jī),上位機(jī)功能比較多,花的時(shí)間比較長,主要是通過USB串口接入到硬件設(shè)備上按通信協(xié)議進(jìn)行數(shù)據(jù)測(cè)量。由于不能和硬件組的在一塊調(diào),就想辦法讓串口穿透網(wǎng)絡(luò)讓我這邊的開發(fā)環(huán)境和硬件設(shè)備無障礙、短延遲的聯(lián)通。因此就有了《串口和TCP互相轉(zhuǎn)發(fā)工具》的解決方案。使用這個(gè)方案中基本上解決了串口穿透網(wǎng)絡(luò)的問題,不過中間還是經(jīng)過了FRP做了內(nèi)網(wǎng)穿透,閑暇之余,就考慮自己做個(gè)輕量級(jí)的TCP橋接小工具,此工具應(yīng)該運(yùn)行在Windows平臺(tái)下,是服務(wù)端程序,可以接受多個(gè)TCP客戶端的連接,并將從每個(gè)TCP連接接收的數(shù)據(jù),轉(zhuǎn)發(fā)給其他連接,實(shí)現(xiàn)多個(gè)TCP連接間的透明橋接,并盡量做到高效率、高并發(fā)。
這可能應(yīng)用到一些需要遠(yuǎn)程聯(lián)通的低速設(shè)備間,最典型的是部署在2個(gè)邊緣計(jì)算機(jī)上,2個(gè)計(jì)算機(jī)串口連接需要通信的設(shè)備,通過此工具將2個(gè)串口透明橋接起來,達(dá)到串口遠(yuǎn)程互聯(lián)。也可以達(dá)到使部署在內(nèi)網(wǎng)內(nèi)的計(jì)算機(jī)直接通過TCP遠(yuǎn)程訪問遠(yuǎn)端邊緣計(jì)算機(jī)上的串口的目的,這在數(shù)據(jù)采集、數(shù)據(jù)遠(yuǎn)程傳送等場(chǎng)景有比較多的應(yīng)用。
軟件設(shè)計(jì)
為了讓橋接更加靈活,軟件設(shè)計(jì)了2個(gè)監(jiān)聽端口,一個(gè)用于完全的透明橋接,一個(gè)用于基于標(biāo)簽的橋接。
在非標(biāo)簽橋接中,基本的處理流程就是將從任意一個(gè)TCP連接發(fā)來的數(shù)據(jù),轉(zhuǎn)發(fā)給所有其他的TCP連接,沒有應(yīng)用層的連接過程,適合于簡單的點(diǎn)對(duì)點(diǎn)透?jìng)鳌?/p>
在基于標(biāo)簽的橋接中,加入了應(yīng)用層的連接建立過程。在TCP連接建立成功后,客戶端需要首先發(fā)送標(biāo)簽信息,具體格式如下:
| 標(biāo)簽 | 4 | 4個(gè)字節(jié)的整數(shù)標(biāo)簽,標(biāo)簽0保留不可用,用于標(biāo)識(shí)非標(biāo)簽橋接連接。-1標(biāo)識(shí)此連接雖然建立,但沒有綁定到有效標(biāo)簽。 |
| 保留 | 4 | 4個(gè)字節(jié)的保留字段,用于以后協(xié)議擴(kuò)展 |
| 校驗(yàn) | 1 | 1個(gè)字節(jié)的校驗(yàn)和,將前面8個(gè)字節(jié)相加得到的結(jié)果 |
| 用戶數(shù)據(jù)流 | 任意 | 承載的用戶數(shù)據(jù)流 |
TCP橋接工具接收夠9個(gè)字節(jié)后,對(duì)前8個(gè)字節(jié)進(jìn)行校驗(yàn)和計(jì)算,如果計(jì)算的結(jié)果和第9個(gè)字節(jié)相符,則認(rèn)為是正確的標(biāo)簽,則將此連接和此標(biāo)簽關(guān)聯(lián)。如果校驗(yàn)和不正確,說明客戶端發(fā)送的協(xié)議不是橋接協(xié)議,則直接斷開連接。這樣所有的客戶端連接都會(huì)在TCP橋接工具上關(guān)聯(lián)到一個(gè)標(biāo)簽上。關(guān)聯(lián)好標(biāo)簽后,當(dāng)一個(gè)TCP連接數(shù)據(jù)給TCP橋接工具時(shí),TCP橋接工具會(huì)查找此連接關(guān)聯(lián)的標(biāo)簽,并將數(shù)據(jù)轉(zhuǎn)發(fā)給所有關(guān)聯(lián)到此標(biāo)簽的連接。
軟件界面如下:
?
軟件測(cè)試
軟件設(shè)計(jì)每個(gè)端口最大并發(fā)1000連接,經(jīng)過壓力測(cè)試,軟件能在每個(gè)端口并發(fā)1000的壓力下持續(xù)穩(wěn)定運(yùn)行,而占用資源并不是太高。
軟件下載
軟件下載鏈接如下,有什么意見和好的建議歡迎討論。
TCP橋接工具V2.2.2.1 - 多線程版,嵌入式網(wǎng)絡(luò)穿透調(diào)試?yán)?/p>
https://download.csdn.net/download/kernelspirit/85310399
總結(jié)
- 上一篇: 1200兆路由器网速_水星MAC1200
- 下一篇: 关于新手使用CPC客户端的操作指南