感觉这样的行为区分抽象为复用和分用, 略勉强....感觉只是正常的职责的分离
还有想问问, TCP 长连接在 NAT 路由器里面是如何实现的?
书上的描述是:
通过 NAT 路由器的通信必须有专用网内的主机发起
内网主机向外网主机建立 TCP 链接, 那么链接建立之后, 外网主机给内网主机通过链接发送数据, 为什么可以通信?
不清楚 NAT 地址交换表的表项的增删机制是怎样的, 求解~
1
billlee 2018-01-12 20:43:09 +08:00
多个信号共用一条信道传输就叫做 multiplexing, 没毛病啊
NAT 这里说的是 SNAT. NAT 表记录的是内网 (IP:端口) <-> 网关的外网 (IP:端口) 之间的映射关系。从外网看来,连接是建立在网关的外网 (IP:端口) <-> 服务器 (IP:端口) 之间的。外网主机向网关的 (IP:端口) 发送数据,网关就能收到。然后网关再根据 NAT 表找到对应的内网 (IP:端口), 抓拿过去。 |
2
deepkolos OP @billlee 我觉得 IP 层服务性质的, 复用就没必要强调吧, 又不是一次性的.. 就像基础设施那样. 并且说的信号只是数据段的含义不同而已. 还有介绍 IP 层的时候也没有强调数据链路层的复用功能. 介绍数据链路层也没有强调物理层的复用功能. 所以就有点怪怪的感觉.
至于分用, 感觉也是类似的, 在数据链路层的帧, 也一样没有强调分用的功能, 并且书本上分用的定义描述, 那不是端口要干的事情么? 至于如何正确交付, 感觉是交付策略. 所以感觉"分用"这个词又是很搭边, 略微勉强, 并且, 运输层应该强调不是交付策略么? 如何交付的问题. 每一个层的职责都不同, 复用和分用的定义感觉在那个层都适用, 但是为什么要在运输层强调捏? NAT 的疑问: 书本上的描述有 NAT 和 NAPT, 没有看到 SNAT 的描述, 可能是教材问题, 不过也是这个流程. 后面仔细看了地址转换表, 发现是内网地址+端口映射到外网的端口, 有些疑问解决了, 剩下是不清楚 NAT 地址交换表的表项的增删机制是怎样的, 因为 TCP 链接建立之后是全双工通信, 就意味着地址转换表是一直都有的咯, 那是 TCP 链接断开, NAT 地址转换表对应的表项是否也被删除? |
3
deepkolos OP @billlee 我感觉 ngrok 实现内网穿透的关键就是在于 NAT 路由器里面存在转换表项, 如果清楚 NAT 的表项的增删机制, 说不定还可以内网的主机 a 通过伪造 IP 数据包, 可以开启一小会内网主机 b 的某个端口~
|