三臺(tái)計(jì)算機(jī),
A在公網(wǎng)
B,C在不同的內(nèi)網(wǎng)
問題:C如何連接B的22端口
理論:
首先C發(fā)起連接到A的8000端口,建立一個(gè)【C機(jī)器的第1個(gè)連接】
然后B發(fā)起連接到A的8000端口,連接后,找到C建立的連接,進(jìn)行PIPE,
C發(fā)起連接到本地的22端口建立【C機(jī)器的第2個(gè)連接】,【C機(jī)器的第2個(gè)連接】和【C機(jī)器的第1個(gè)連接】進(jìn)行PIPE
問題:
C機(jī)器不知道該何時(shí)去建立【C機(jī)器的第2個(gè)連接】,如何能知道B機(jī)器已經(jīng)連接到了A機(jī)器,并且建立好了PIPE?
貌似原帖中有筆誤,你的目標(biāo)應(yīng)該是【B 連接 C 的 22 端口】,對吧?
A 在收到 B 的連接請求后,應(yīng)該通過【C機(jī)器的第1個(gè)連接】給 C 發(fā)送一個(gè)消息,C 收到這個(gè)消息,就知道該去建立【第 2 個(gè)連接】了,同時(shí)對【第 1 個(gè)連接】進(jìn)行協(xié)議轉(zhuǎn)換,改為與【第 2 個(gè)連接】進(jìn)行雙向轉(zhuǎn)發(fā)。
BTW,A 應(yīng)該監(jiān)聽兩個(gè)不同的端口,一個(gè)接收來自服務(wù)提供方(C)的連接,一個(gè)接收來自消費(fèi)方(B)的連接,你現(xiàn)在這樣都在 8000 端口接收連接,A 很難區(qū)分出一個(gè)新來的連接的目的。