我們都看過經(jīng)典的電影場景。警方已經(jīng)追蹤到壞人的電話,他們準(zhǔn)備沖進房間。槍支準(zhǔn)備就緒,氣氛緊張,執(zhí)法部門破門而入 - 卻發(fā)現(xiàn)兩部電話已連接,麥克風(fēng)到揚聲器和揚聲器到麥克風(fēng),轉(zhuǎn)達(dá)了罪犯的要求。
這不僅是一個經(jīng)典的電影比喻,而且還是 TCP 隧道的一個簡單示例。讓我們探討一下這是什么以及為什么它是現(xiàn)代物聯(lián)網(wǎng)的重要概念。
回歸本源
讓我們退后一步,解釋一下這里發(fā)生了什么。首先,互聯(lián)網(wǎng)上的大多數(shù)服務(wù)使用傳輸控制協(xié)議 (TCP) 連接作為客戶端和服務(wù)器程序之間的通信方式。TCP 連接就像電話連接一樣,一旦“通話”接通,就可以通過對著麥克風(fēng)(電話的輸入通道)說話并激活另一端的揚聲器(輸出接收端的信道)。同樣,反之亦然。
為了完成電話類比,請考慮可以創(chuàng)建 TCP 連接,就像使用分機號碼撥打電話一樣。與電話號碼一樣,TCP 連接使用 IP 地址和分機號碼連接到服務(wù)器的 IP 地址(電話號碼)和正確的端口(分機)。例如,當(dāng)有人請求一個網(wǎng)頁時,瀏覽器會打開一個 TCP 連接到由 IP 地址指定的網(wǎng)絡(luò)服務(wù)器。同樣,將其視為電話對話,然后瀏覽器對 TCP“麥克風(fēng)”“說話”以請求特定頁面,然后將其傳輸?shù)骄W(wǎng)絡(luò)服務(wù)器端的接收器。然后,網(wǎng)絡(luò)服務(wù)器定位網(wǎng)頁并將其傳回給瀏覽器以“聽到”,這意味著它顯示了用戶的數(shù)據(jù)。很簡單,對吧?這就是為什么在如此多的客戶端/服務(wù)器應(yīng)用程序中使用 TCP 來請求和接收數(shù)據(jù)的原因。
IoT 中典型的 TCP 客戶端/服務(wù)器應(yīng)用程序,例如連接到 IoT 設(shè)備(服務(wù)器)的智能手機應(yīng)用程序(客戶端)。這種連接類似于電話交談。(來源:Nabto)
防火墻的連接問題
但有一個問題。假設(shè)您想使用 TCP 隧道在 IoT 中創(chuàng)建客戶端/服務(wù)器應(yīng)用程序,例如連接到 IoT 設(shè)備(服務(wù)器)的智能手機應(yīng)用程序(客戶端)。不幸的是,實現(xiàn)這一目標(biāo)說起來容易做起來難。
為什么?那么,如果智能手機和物聯(lián)網(wǎng)設(shè)備位于同一個局域網(wǎng)上,表現(xiàn)為WIFI,那么應(yīng)該沒有問題,因為建立連接只是智能手機定位物聯(lián)網(wǎng)設(shè)備IP地址的問題。但這并不是那么有用,就像您與物聯(lián)網(wǎng)設(shè)備位于同一建筑物中一樣,您只需親自前往設(shè)備并與之交互即可。
另一方面,如果您在遠(yuǎn)程操作,您的智能手機(和您)將在您的局域網(wǎng)之外,這意味著建立連接更加困難,因為您的家庭網(wǎng)絡(luò)防火墻會阻止來自網(wǎng)絡(luò)外部的連接. 當(dāng)然,您可以為此類連接打開防火墻,也可以將 IoT 設(shè)備放置在防火墻之外的可公開訪問的 IP 地址上。但是,不建議這樣做,因為您的物聯(lián)網(wǎng)設(shè)備可能容易受到來自整個互聯(lián)網(wǎng)的攻擊。
家庭網(wǎng)絡(luò)防火墻可能會阻止外部連接,使遠(yuǎn)程客戶端難以從 IoT 設(shè)備讀取數(shù)據(jù);并且為物聯(lián)網(wǎng)設(shè)備打開防火墻不是一種選擇,因為它很容易被黑客入侵。(來源:Nabto)
通過TCP隧道找到解決方法
物聯(lián)網(wǎng)開發(fā)者面臨的問題是:我們?nèi)绾瓮ㄟ^防火墻連接到外部世界?我們?nèi)绾我园踩姆绞阶龅竭@一點?這兩個問題的答案都是帶有嵌入式中繼的TCP隧道。該解決方案允許設(shè)備保持在防火墻后面,同時跨公共通道安全通信。此外,在中間有一個中繼,作為額外的預(yù)防措施,可以對這些通信進行加密和身份驗證。TCP隧道的工作原理是在客戶端運行一個小程序,該程序?qū)CP連接/請求開放??雌饋硐襁@樣。隧道接收器端接觸到在物聯(lián)網(wǎng)設(shè)備上運行的隧道調(diào)度器端程序。一旦隧道調(diào)度器收到此類“伸出”,它將創(chuàng)建到數(shù)據(jù)應(yīng)用物聯(lián)網(wǎng)設(shè)備的TCP連接,隧道接收器和隧道調(diào)度器將在兩個連接之間接收和轉(zhuǎn)發(fā)數(shù)據(jù)。對于TCP客戶端,它看起來就像TCP服務(wù)器端在本地運行,而對于TCP服務(wù)器端應(yīng)用程序,它看起來就像客戶端在本地連接。
TCP 隧道通過在客戶端運行一個小程序來工作,該程序?qū)?TCP 連接/請求開放。(來源:Nabto)
另一個特點是,如果您認(rèn)為本地連接是安全的,例如在您的手機或程序之間的物聯(lián)網(wǎng)設(shè)備內(nèi)部發(fā)生的連接,隧道可以變得非常安全。隧道接收器和隧道調(diào)度器之間的連接可以使用證書進行強身份驗證,同樣,可以通過加密保護隱私。這對于攜帶敏感或私人數(shù)據(jù)的設(shè)備尤其重要,例如網(wǎng)絡(luò)攝像頭或可穿戴設(shè)備。
例如,在視頻設(shè)備中,TCP 隧道通常用于在現(xiàn)有視頻播放器客戶端和 TCP 視頻流服務(wù)(例如 IP 攝像機上的 RTSP 服務(wù)器)之間發(fā)送和接收圖像。同時,對現(xiàn)有 HTTP 服務(wù)的安全遠(yuǎn)程訪問在提供對管理應(yīng)用程序的遠(yuǎn)程訪問方面很受歡迎。我個人非常喜歡這個解決方案及其簡單性。在客戶端或服務(wù)器端都不需要進行任何調(diào)整——相反,當(dāng)客戶端實際與隧道調(diào)度程序通信時,它會相信它是在本地與服務(wù)器通信。實際上,這種簡單的 TCP 隧道“魔法”允許物聯(lián)網(wǎng)設(shè)備從安全位置與外部世界連接。
審核編輯 黃昊宇
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2910文章
44752瀏覽量
374587 -
TCP
+關(guān)注
關(guān)注
8文章
1372瀏覽量
79142
發(fā)布評論請先 登錄
相關(guān)推薦
評論