刚刚想到了一个问题,关于路由器和网络地址转换,百思不得其解。

2016-01-06 19:27:35 +08:00
 Chigogo
大多用户的上网方案:用路由器共享一个公网 IP 上网。(下有轻微排版,手机党横屏观看更加)

为此,路由器对数据包的地址字段做如下处理:
      服务器地址        客户机地址
原数据包  <目的 IP+端口号>  +  <内网 IP+端口号>    路由器将其映射到
新数据包  <目的 IP+端口号>  +  <公网 IP+新的端口号> 然后把数据包发出去

在接收反馈时再进行相反的映射。





问题来了,当几十台(保守估计)电脑同时使用路由器,每台电脑有许多进程同时上网时,路由器一共才 65536 个端口号,怎么着也不够用啊。
如果说,路由器端在硬件上扩充端口数,比如扩充到 655360 个,那么处理后的新数据包到达服务器后,其端口号也是非法的,超过上限。




所以到底是如何解决的?(只学过教材上的计算机网络,水平太渣,望不吝赐教)
2769 次点击
所在节点    问与答
22 条回复
jasontse
2016-01-07 09:33:40 +08:00
@Chigogo
五元组,源地址 / 源端口 / 协议 / 目标地址 / 目标端口,只要有一项不同它就是另一组。
lyh3222
2016-01-07 09:38:37 +08:00
然后, UDP 和 TCP 是分开的,所以可以看成是 65536*2 个端口号

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/248854

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX