看 TCP/IP 协议族一书,关于 NAT 有些问题

2016-09-03 17:38:27 +08:00
 Yangz

今天看_TCP/IP_协议族,看到 NAT 的时候有些疑问:如果 NAT 使用一台路由器将专用网络与全球网络分开,并且使用一张转换表来决定相应交付的转发;那么来自内部的对于典型端口(比如说 80 )的大量请求会造成这个路由器对外的典型端口发生拥堵吗? 这种拥堵: 1 、或是我理解错误,还是真实存在呢? 2 、假如确实存在,应付它的办法是不是分时多工之类的?

2680 次点击
所在节点    问与答
14 条回复
ltux
2016-09-03 17:59:00 +08:00
何为“对外的典型端口”?你最好给个例子详细说明你的问题,基于你现在的描述我看不出来你到底是怎么理解的。
NAT 转换是 ip:port 成对转换。
Yangz
2016-09-03 20:06:21 +08:00
@ltux ltux 你好!我理解的一种情况是:专用网络里有很多设备同时通过 80 端口基于 HTTP 外网服务器进行 GET ,此时路由器处会造成拥堵吗?关于第二个问题:假如有拥堵,路由器是不是会有一个处理请求的队列,按照一定的顺序进行处理呢?
Reficul
2016-09-03 20:36:19 +08:00
路由器后面的主机去 GET 外网服务器,不一定要通过 80 端口吧。远端是 80 端口,主机上应该是一个高位的随机端口。

另外主机后面的 IP:port 经过 NAT 就是通过路由器外网 IP :随机端口 与远端服务器通信的
gefranks
2016-09-03 20:41:09 +08:00
据说访问量特别大的时候是会有拥堵,因为路由器上的转换后的源端口和源 ip 不够用了,但是一般不会。
wevsty
2016-09-03 20:41:28 +08:00
楼上正解
访问远端 80 端口并不是意味着一定通过 NAT 的 80 端口出去,是 NAT 设备随机一个高位端口用来通讯的。所以不存在堵塞的问题
billlee
2016-09-03 22:32:44 +08:00
楼主你 TCP 都没理解对吧,连接服务器的 80 端口时,客户端并不需要使用 80 端口的。
firefox12
2016-09-03 22:39:07 +08:00
你理解是对的,端口会不够用。 路由器不会堵塞,它会简单的扔掉过载的包。对路由器而言只有 ip 包 没有消息的概念
flynaj
2016-09-04 02:20:29 +08:00
肯定会啊,包处理速度,还有带宽都是会的,队列,还是丢包,看路由器处理了,感兴趣可以整个 ros 研究一下,这是它的流控部分 http://wiki.mikrotik.com/wiki/Manual:Queue
kaneg
2016-09-04 11:02:37 +08:00
端口数量是有限的,做多 65536 个,如果客户的请求数量超过了,应该就会出现阻塞和丢包
Yangz
2016-09-04 11:04:07 +08:00
@Reficul @Yangz @firefox12 @flynaj @gefranks @wevsty 谢谢大家,我现在明白一些了。 @billlee 是的,我对传输控制协议了解得还不多,我再去学习一下。 @flynaj flynaj 你好,请问你指的 ros 是什么呢?我看了一下,感觉像 QoS ,不知是不是我搞错了。
wevsty
2016-09-04 12:22:31 +08:00
@Yangz ros 指的是一个软路由 OS
flynaj
2016-09-04 15:05:07 +08:00
@Yangz 我现在用的这个 https://item.taobao.com/item.htm?id=3733944776
学习可以下载这个 http://www.mikrotik.com/download 装到虚拟机测试测试.下面 Cloud Hosted Router,那些虚拟机格式.
xieyudi1990
2016-09-04 19:02:22 +08:00
NAT 网关动的是 TCP 源端口。

我一直认为, NAT 不能算是标准的路由器,只能算是代理。
Yangz
2016-09-05 17:49:28 +08:00
@flynaj @wevsty 谢谢!我有空实验一下 ros 这个系统。

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

https://www.v2ex.com/t/303690

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

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

© 2021 V2EX