作者q1472587 (风)
看板LinuxDev
标题[问题] LAN PC透过Router 到 google流程
时间Tue Sep 18 11:34:04 2018
大家好,最近被人问了一个问题,觉得有点深奥不知道要
去哪里获取这方面的知识,想请各位大大解惑。
假设现在 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://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1537241647.A.427.html
1F:推 pttano: 看一下arp protocol 不就知道了? 09/18 13:58
2F:→ pttano: 查一下broadcasts mac addr 不就知道了? 09/18 13:59
3F:推 pttano: routing太庞大,不在这里赘述 09/18 14:07
4F:→ alongalone: 网路 白色那本没看 ? 09/19 09:33
5F:→ q1472587: → 我有查ARP找的方式 理论上没人回覆DA就先填gateway去 09/19 15:36
6F:→ q1472587: →问,然後目的IP填8.8.8.8 烦请大大说明一下吗?谢谢 09/19 15:37
7F:→ axuiolji: DA与自身IP不同网段(NetworkID不同)就会先往Gateway送了 09/20 00:59
8F:→ axuiolji: ,Router收到封包後,先查RoutingTable,查不到就往Rout 09/20 01:00
9F:→ axuiolji: er的DefaultRoute去丢,NAT在这时候动作,看你是StaticN 09/20 01:00
10F:→ axuiolji: AT(一对一)还是PAT(一对多),这部分资讯是记录在Router 09/20 01:00
11F:→ axuiolji: 的NAT Table底下,StaticNAT就是一个InsideLocal对一个I 09/20 01:00
12F:→ axuiolji: nsidGlobal,PAT的话则是一个InsideLocal加上随机Port N 09/20 01:00
13F:→ axuiolji: umber,对上同一个InsideGlobal对上与InsideLocal相同 09/20 01:00
14F:→ axuiolji: 的Port Number,之後就透过外部的Router一步一步通往8.8 09/20 01:01
15F:→ axuiolji: .8.8这台主机的位置,回传回来的资讯就照刚刚的路再反 09/20 01:01
16F:→ axuiolji: 走回来,如有错请指正,欢迎讨论 09/20 01:01
17F:推 pandadao: 这好像我当初M面试的题目 08/25 20:33