淺談網站搭建中的內網穿透、端口轉發等知識點

背景:以前閒得很,想要本身搭建一個網站,服務器是內網中的一個設備。但因爲是家庭寬帶,沒有公網Ip,80、8080、443等端口也是被封掉的(忽然以爲好可憐),因此使用了花生殼的內網穿透,以後對其的原理產生了好奇,搜索了一些資料、系統化地呈現下來。web

1.普通網站的訪問流程:服務器

  用戶輸入域名->DNS服務器查找到服務器對應的Ip->服務器的80端口(或者443,用在HTTPS中)中的軟件監控到了訪問,作出響應。微信

    PS:如何在同一臺服務器上部署多個網站?網站

      這就涉及到了一個主機頭的概念。參考博文:https://blog.csdn.net/qq578933760/article/details/7707574。實質上就是服務器會讀取用戶請求中關於域名的部分,再轉到對應的網站下。spa

2.部署在內網的服務器(有固定公網Ip、80端口可用時)的訪問流程:.net

  用戶輸入域名->DNS服務器查找到網關的ip->網關收到訪問申請,要訪問本身的80端口->根據預先在網關中設置好的端口映射規則,將申請轉發給內網中的服務器(注意,此時是內網通訊,網關使用的是本身的內網Ip)->服務器返回消息,發送給網關的內網ip->網關經過公網ip將消息發送給用戶代理

3.部署在內網的服務器(沒有固定公網ip、80端口不可用時)的訪問流程:blog

  這時咱們能夠提出一種設想,若是我租用一臺有固定公網ip、80端口可用的服務器,並將域名綁定到這一服務器對應的ip上,以後設置反向代理,指定網關的公網ip並指定非80端口。同時,雖然沒有固定公網ip,可是咱們能夠設置一個同步流程,每次從新隨機分配公網Ip時,咱們都將這個ip同步到服務器上。流程就會變成:ip

  用戶輸入域名->DNS服務器查找到咱們所租用的服務器的ip—>服務器80端口檢測到訪問,反向代理回網關的動態公網ip(指定非80端口),也就是轉發->網關非80端口收到訪問申請->根據預先在網關中設置好的端口映射規則,將申請轉發給內網中的服務器->服務器返回消息,發送給網關的內網ip->網關將內容返回咱們所租用的服務器->服務器返回內容給用戶。部署

  實際上,這已經和如今市面上比較流行的內網穿透軟件,例如花生殼,的原理比較接近的。可是花生殼的內網穿透是不須要配置網關的端口映射規則的,這一點是怎麼作到的呢?

4.以花生殼爲例的不須要配置端口映射規則的訪問流程:

*注:這只是本人的推斷,不表明軟件自己真實的原理

  和上一步不一樣的是,花生殼使用時要求服務器要一直運行着花生殼的客戶端,而域名也是綁定在花生殼的服務器下的。那麼這實際上就不是單純的web通訊了,用戶發送消息後花生殼的服務器接收到消息,以後就是服務器端和客戶端的通訊,原理和微信電腦端和手機端的相互通訊同樣,因此天然不須要配置端口映射。

  固然,不管是花生殼的方式,仍是3中的方式,不只會影響訪問速度,用於轉發的服務器的負載和流量也是不小的。並且速度上和流量上會有限制,並無徹底體現本身搭建服務器的優點。

----------------------------------------------------------------------------------

參考資料:

  1. https://www.zhihu.com/question/21993610
  2. https://zhuanlan.zhihu.com/p/26960644
  3. https://www.jianshu.com/p/39825e2d71da
相關文章
相關標籤/搜索