從一次遠端ip連線docker引發的計網複習

2021-10-21 22:53:09 字數 1713 閱讀 4230

上一次認真學習計網還是去年春招找實習2333,現在回頭複習一下,看了幾本書,部落格,感覺又有了新的學習心得。

最近買了丐版阿里雲伺服器,在本地寫畢設,做完一部分想發到阿里雲上部署瞅瞅。通過idea-docker外掛程式連線阿里雲上的docker,驚呼竟然可以通過公網ip直接連線(在這之前樓主都是以為只有有了網域名稱才可以訪問,一直以為需要通過公網ip+私網ip的方式才能建立連線)。

通過上文也可以知道樓主計網基礎並不紮實了2333。

總共看了兩本書,一篇部落格:

路由選擇規則:

無匹配則使用預設路由下一跳

無缺省路由則使用icmp協議回傳錯誤報文。

沒找具體的圖,可以根據本機快取等抽象一下。

一張ip -> mac 的對映表。

arp協議的演算法:

考慮本機快取都失效,需要廣播的情況。

這裡講述兩種情況:

假設 a主機 發往 b主機

交換表結構:

當知曉了接收方mac位址,需要通過交換機傳送報文,通過查詢交換表即可知道傳輸埠,走對應埠線路即可。

當交換表中沒有查詢到對應埠時,則全發。這裡可能會有人想這麼做可能會浪費很多傳輸資源,但其實沒有那麼大的問題,當接收方接收到報文時會拆幀檢查接收方的mac位址是否為自己,若不是則直接丟棄了。

這裡也不分類,全部以《網路號,主機號》(即超網)的形式講解。

起初博主看了很多文章,都將其比作 某市 + 某小區;這樣說就會帶來許多誤解,從現實的角度想,別的地方的人要聯絡我豈不是需要同時知道公網ip與私網ip才能定位到我。起碼在樓主這個轉不過腦筋來的理解上這是錯誤的,只要分配了公網ip,就一定能找到你

在非直接交付中,路由**中起作用的只是網路號(這裡其實不是很準確,應該是在每一次做路由選擇時與每一條目掩碼計算出來的網路號),當需要直接交付時(本機/同一區域網)主機號才會發揮作用。

關於私網ip,是僅在內網使用的ip,畢竟不與外網連線的網路中也需要互相傳遞資訊,也需要借助 tcp/ip 來完成。

當然有時內網也需要與外部進行連線,這裡分為兩種:

上圖為採用nat/napt技術時內網訪問外網的流程,同樣的也需要乙個路由器(該路由器具有nat/napt技術)。

上圖為napt表位址對映。nat下的對映沒有埠。

只能從內網訪問外網,外網訪問不到內網(若入方向表中無對映,並且對於外網來說只能看到nat路由器的ip/埠)。

當 內網a主機 想要訪問 外網中的b主機 時,第乙個閘道器出口必定為nat路由器(因為要訪問外網,網路號肯定不是同樣的),當包到達nat路由器時,該路由器從閒置埠中抽乙個出來作為內網對映,改寫ip首部 源ip,發包。收包時再與對映表做匹配即可,匹配不到直接丟棄。

可以看出公網ip與私網ip沒有任何關係。

而私網ip存在的原因就是 公網ip是有限的(網路號確定的情況下,主機號是有限的),該主機並不需要聯網(或很少連線,只在使用時分配,使用完畢**)。

可能還有想寫和補充的,暫時先到這裡。

從一次起床遲了想到的

因為在外面作專案,想到雖然在工作上有單位的規定,但是古語云 將在外君命有所不授 這是受特定的條件決定的。我作為專案負責人,為了保證專案的順利進行,制定了乙個 工作規範 規定了在日常工作和生活中的一些要求,包括作息時間等。這個規範在整個專案小組中作了討論,得到了大家的一致認可,也就是說我不是將自己的意...

記一次paramiko遠端連線遇到的坑

背景 工作中遇到了乙個問題,需要用到windows向windows連線 檔案傳發 以及,linux向windows連線 檔案傳發 的需求。問題1 在網上搜尋方法的時候,發現別人可以直接用paramiko連線windows,並用psutil 獲取cpu 記憶體等資料,和我們連線linux基本一樣的,那...

一次遠端的談話

遠端svn讓智哥幫下忙,為了方便我們就用notepad聊天的,為了紀念我就留下來了 你沒有裝svn恩嗎 恩我現在裝 你看著只裝客戶端就行 我沒有伺服器端啊 那伺服器段怎麼辦啊 中心那台沒有服務嗎?那個機子有問題了 行 那裝吧好的 我自己裝?你裝我看著吧 行好的zh細小 而謝謝謝 裝那個盤?sdld ...