Re: [問題] LAN PC透過Router 到 google流程
※ 引述《q1472587 (風)》之銘言:
: 大家好,最近被人問了一個問題,覺得有點深奧不知道要
: 去哪裡獲取這方面的知識,想請各位大大解惑。
: 假設現在 PC1 --
: Router(Gateway) -- 外網許多Gateway -- Google
: PC2 --
: PC1的電腦第一次想要 ping google.com ,
: 1. 問PC1的封包怎麼到google的所有流程
簡單視圖。你畫的不錯~
: 2. PC1 一開始要決定封包的 SA DA(Destination MAC)要怎麼決定,PC1網路卡
: driver(思考一般通用網路卡的行為)是不是會先過濾一下封包是不是要往哪裡丟
: ? PC1網卡driver怎麼判斷, 丟出去的封包 DA怎麼決定?
arp network。用網卡和ip(內網ip)達到網路封包傳輸。所以你的router(gateway)下
有幾台電腦(裝置);靠MAC address和IP可以知道同個子網路內的裝置。
: 3. 假設封包跑到了Gateway , Gateway 怎麼知道要步要Routing? 如果是看routing
: table決定,那麼 Gateway Routing Table怎麼查表的?
Router知道要傳送哪些封包;這我不是很了解,應為router根據封包的內容要查找的網域透
過DNS查找目的地位置(IP)。Router(gateway)之後就是大海(internet了)。
(有請專業的回答了~)
: 4. 最後從Gateway出去時會經過NAT轉換source IP,在經過很多層的Gateway到達
: Google, 那傳回來的封包 Gateway 怎麼知道要 DNAT 到哪一個 PCx?會有port
: 紀錄嗎還是什麼方法? NAT表怎麼查表?
NAT有對應IP,router有提供routering的功能也有NAT的功能。而Linux的iptable也有NAT功
能。可以用IP對應,可以指定來源和目的地,用port和位置等作為條件。
(complex & complicate),可能要用excel寫個條件後面寫出對應的iptable描述。
這裡野人獻曝。
EX: [root@localhost /]#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 218.29.30.31
EX: [root@localhost /]#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
: 以上問題我只會回答上層大概,關於底層和如何查表都沒概念呢?
: 例如:
: 一開始先檢查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), 來自: 36.227.169.229
※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1537955134.A.9AE.html
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章