[問題] LAN PC透過Router 到 google流程

看板LinuxDev作者 (風)時間5年前 (2018/09/18 11:34), 編輯推噓3(3014)
留言17則, 5人參與, 5年前最新討論串1/2 (看更多)
大家好,最近被人問了一個問題,覺得有點深奧不知道要 去哪裡獲取這方面的知識,想請各位大大解惑。 假設現在 PC1 -- Router(Gateway) -- 外網許多Gateway -- Google PC2 -- PC1的電腦第一次想要 ping google.com , 1. 問PC1的封包怎麼到google的所有流程 2. PC1 一開始要決定封包的 SA DA(Destination MAC)要怎麼決定,PC1網路卡 driver(思考一般通用網路卡的行為)是不是會先過濾一下封包是不是要往哪裡丟 ? PC1網卡driver怎麼判斷, 丟出去的封包 DA怎麼決定? 3. 假設封包跑到了Gateway , Gateway 怎麼知道要步要Routing? 如果是看routing table決定,那麼 Gateway Routing Table怎麼查表的? 4. 最後從Gateway出去時會經過NAT轉換source IP,在經過很多層的Gateway到達 Google, 那傳回來的封包 Gateway 怎麼知道要 DNAT 到哪一個 PCx?會有port 紀錄嗎還是什麼方法? NAT表怎麼查表? 以上問題我只會回答上層大概,關於底層和如何查表都沒概念呢? 例如: 一開始先檢查PC1 MAC cache有沒有那個MAC,找對應的IP。如果沒有就先發 一個ARP 封包,然後沒人回應就往 Gateway發,但是不知道 DA MAC會是誰(可能是 先填Gateway?),所以 目的IP 可能先寫8.8.8.8(假設已經知道google IP), 然後Gateway,看到目標查表發現要routing,幫忙做MASQARE(類似SNAT改源地址), 然後就送出去了。 希望有大大能夠提供很詳細的解答呢(尤其著重於網卡行為 查表route NAT等), 謝謝各位。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.93.45 ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1537241647.A.427.html

09/18 13:58, 5年前 , 1F
看一下arp protocol 不就知道了?
09/18 13:58, 1F

09/18 13:59, 5年前 , 2F
查一下broadcasts mac addr 不就知道了?
09/18 13:59, 2F

09/18 14:07, 5年前 , 3F
routing太龐大,不在這裡贅述
09/18 14:07, 3F

09/19 09:33, 5年前 , 4F
網路 白色那本沒看 ?
09/19 09:33, 4F

09/19 15:36, 5年前 , 5F
→ 我有查ARP找的方式 理論上沒人回覆DA就先填gateway去
09/19 15:36, 5F

09/19 15:37, 5年前 , 6F
→問,然後目的IP填8.8.8.8 煩請大大說明一下嗎?謝謝
09/19 15:37, 6F

09/20 00:59, 5年前 , 7F
DA與自身IP不同網段(NetworkID不同)就會先往Gateway送了
09/20 00:59, 7F

09/20 01:00, 5年前 , 8F
,Router收到封包後,先查RoutingTable,查不到就往Rout
09/20 01:00, 8F

09/20 01:00, 5年前 , 9F
er的DefaultRoute去丟,NAT在這時候動作,看你是StaticN
09/20 01:00, 9F

09/20 01:00, 5年前 , 10F
AT(一對一)還是PAT(一對多),這部分資訊是記錄在Router
09/20 01:00, 10F

09/20 01:00, 5年前 , 11F
的NAT Table底下,StaticNAT就是一個InsideLocal對一個I
09/20 01:00, 11F

09/20 01:00, 5年前 , 12F
nsidGlobal,PAT的話則是一個InsideLocal加上隨機Port N
09/20 01:00, 12F

09/20 01:00, 5年前 , 13F
umber,對上同一個InsideGlobal對上與InsideLocal相同
09/20 01:00, 13F

09/20 01:01, 5年前 , 14F
的Port Number,之後就透過外部的Router一步一步通往8.8
09/20 01:01, 14F

09/20 01:01, 5年前 , 15F
.8.8這台主機的位置,回傳回來的資訊就照剛剛的路再反
09/20 01:01, 15F

09/20 01:01, 5年前 , 16F
走回來,如有錯請指正,歡迎討論
09/20 01:01, 16F

08/25 20:33, 5年前 , 17F
這好像我當初M面試的題目
08/25 20:33, 17F
文章代碼(AID): #1Re78lGd (LinuxDev)
文章代碼(AID): #1Re78lGd (LinuxDev)