比如我家的宽带分配的 IP 地址为 22.22.22.22 ,一个路由器上连接了两电脑,分配的地址为 192.168.0.10 和 192.168.0.20 。如果我访问一个网站,网站肯定会把数据发送到 22.22.22.22 ,那么路由器怎么分辨要把数据发往哪个电脑呢。
如果路由器只是把收到的数据广播,那么如果两台电脑同时访问一个网站时该怎么分辨呢?
1
bingwenshi 2015-12-12 12:55:25 +08:00
|
2
yexm0 2015-12-12 12:58:52 +08:00 via Android
mac 地址是唯一的:-)
|
3
bingwenshi 2015-12-12 13:02:25 +08:00
错了,这个问题的话,应该看交换机的 http://baike.baidu.com/view/116641.htm
|
4
KyL OP @yexm0 但是目标服务器收到的请求中只有 IP ,没有源电脑的 MAC ,返回的响应里自然也只有 IP ,没有 MAC 啊。
|
5
des 2015-12-12 13:04:29 +08:00 1
|
6
powergx 2015-12-12 13:06:19 +08:00 via iPhone
nat 转换 , port 对应内网 ip
|
7
bingwenshi 2015-12-12 13:10:45 +08:00
@des 是的
|
8
a302800411 2015-12-12 13:23:14 +08:00
楼主需要看一下计算机网络,你的计算机像服务器发送请求建立一条连接,当连接建立成功,路由器就已经分配信道了,不仅仅是你家的路由器,也包括运营商的路由器。可以想象成逻辑上已经建立了一条独立的车道
|
9
jasontse 2015-12-12 13:46:31 +08:00 via iPad
远端服务器只管回复数据包给 2.2.2.2 ,至于发给内网哪台电脑是 NAT 网关(路由器)的事情,路由器通过匹配 NAT 五元组记录来确定应该发给哪台电脑。
|
10
dalaomj 2015-12-12 13:52:51 +08:00
其实路由器也没那么聪明。只有这种简单的单层网络结构应付自如。
但只要网络结构稍微一复杂,数据包就不知往哪发了,极易产生“环路”问题。 |
13
imn1 2015-12-12 14:46:48 +08:00
这事理应请教支付宝,他们是专家
|
14
e1eph4nt 2015-12-12 17:14:52 +08:00
google iptables, netfilter, snat, masquerade
|
15
Tink 2015-12-12 17:17:02 +08:00 via iPhone
nat
|
16
SPACELAN 2015-12-12 22:47:17 +08:00
路由器通过端口来判断包是发给子网里哪个电脑的,具体的映射关系也是存在路由器里面的
|