關於內網穿透,內網映射的一些想法

今天在做php處理郵件的時候,應爲php mail()函數要求有一臺不需驗證就能用的smtp,這個只能在電腦上搭建,突然就想到了內網穿透,內網映射。當時計算機網絡老師講課的時候提過一句,當時想回來自己看看,後來有事就耽誤了。今天搜了一下,簡單寫寫,全是個人見解,歡迎指正。

1,什麼是內網穿透

簡單來講,在自己電腦上搭了一個apache服務器,或者其他的什麼服務器都行,甚至是求生之路。自己localhost訪問可以,別人在用一個局域網(交換機,無線網)下輸入ip也能訪問,但是除了這些別人就訪問不了了。這臺服務器是在內網的,不是外網(大家都能訪問),因爲你分配到的ip也只是一個局域網ip,外網壓根就找不到你。所以就有了這項技術,內網穿透。

2,內網穿透的例子

有次上web技術導論,老師讓做一個網頁,如果把網頁拷到u盤上拿過去展示太low了,直接在教學電腦上輸入網址去訪問我的筆記本多方便。這個筆記本是內網的,我就要把他映射到外網上,也就是內網穿透,這樣訪問一個外網地址就能相當於訪問自己pc了。網上已有的花生殼,net123等都可以用。那麼自己怎麼實現呢,因爲真的實現要用到外網的主機,然而窮碧並沒有可憐,所以只能猜想。

3,內網穿透的實現猜想

內網主機A向外網主機B發送數據,會經過你的網管M,所以真實的通訊過程是A->M->B,這時B收到的通訊是M的,也就是說M包辦了這個內網所有與外網的通訊,只是端口不同。所以A:a->M:ma->B:b,小b代表端口,B返回數據,B:b->M:ma,這時M中會有記錄,Ma這個端口是要給A的,至此完成通訊。重點就是M中會有記錄,那個端口給哪個主機,所以就利用這一點。
首先有臺外網主機B,然後內網主機A想B主動發送請求包,這個請求包包括A的ip,B會記錄下A的ip,M的ip,M的端口,然後new一個ServerSocket,端口ba,爲要映射的A開設映射服務,端口是ba,這個服務拿到的數據全都轉發給M:a,同時把ba返回給A,A這裏就知道B的端口。支持外網數據已經能通過B:ba發給A了,現在處理A如何回覆消息。應該是B再new一個Socket訪問M:ma,也就是A,這時B中的ServerSocket會拿到兩個Socket,一個是外網請求的,另一個是A的,把這兩個輸入輸出流以交換,搞定。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章