step11: 注意 , 之前我们都是用的UDP数据包 , 目的只是为了在两个局域网的NAT上打个洞出来 , 实际上大部分应用用的都是TCP连接 , 所以 , 这时候我们还需要在A主动向B发起TCP连接 。 到此 , 我们就完成了两端之间的通信 。
这里估计大家会有疑惑 。
端口已经被udp用过了 , TCP再用 , 那岂不是端口重复占用(address already in use)?
其实并不会 , 端口重复占用的报错常见于两个TCP连接在不使用SO_REUSEADDR的情况下 , 重复使用了某个IP端口 。 而UDP和TCP之间却不会报这个错 。 之所以会有这个错 , 主要是因为在一个linux内核中 , 内核收到网络数据时 , 会通过五元组(传输协议 , 源IP , 目的IP , 源端口 , 目的端口)去唯一确定数据接受者 。 当五元组都一模一样的时候 , 内核就不知道该把数据发给谁 。 而UDP和TCP之间\"传输协议\"不同 , 因此五元组也不同 , 所以也就不会有上面的问题 。
NAPT还分为好多种类型 , 上面的nat打洞方案 , 都能成功吗?
关于NAPT , 确实还细分为好几种类型 , 比如完全锥形NAT和限制型NAT啥的 , 但这并不是本文的重点 。 所以我就略过了 。 我们现在常见的都是锥形NAT 。 上面的打洞方案适用于大部分场景 , 这其中包括限制最多的端口受限锥形NAT 。
总结
- IPV4地址有限 , 但通过NAT路由器 , 可以使得整个内网N多台机器 , 对外只使用一个公网IP , 大大节省了IP资源 。
- 内网机子主动连接公网IP , 中间的NAT会将内网机子的内网IP转换为公网IP , 从而实现内网和外网的数据交互 。
- 普通的NAT技术 , 只会修改网络包中的发送端和接收端IP地址 , 当内网设备较多时 , 将有可能导致冲突 。 因此一般都会使用NAPT技术 , 同时修改发送端和接收端的IP地址和端口 。
- 由于NAT的存在 , 公网IP是无法访问内网服务的 , 但通过内网穿透技术 , 就可以让公网IP访问内网服务 。 一波操作下来 , 就可以在公司的网络里访问家里的电脑 。
那我们为什么还需要IPv6?
另外IPv6号称地址多到每粒沙子都能拥有自己的IP地址 , 那我们还需要NAT吗?
- 近日|余承东:没有5G,我们用4G增强+WIFI 6来弥补
- 我们成年了! 每日经济新闻创刊18周年,线上发布五大创新项目
- 唉|这么又“杀”我微信了?
- 最近我们经常遇到这样的购机需求:工作为主|价格真香表现全面的“工作站级设计本”!惠普战99测评
- 12月13日消息|华硕推出rog魔方幻gt6三频万兆路由器
- 本文转自:央视网央视网消息:近日|超八倍任务时间!我国百吨级火箭发动机单台最长试车创新纪录
- 如何利用电脑录制网页?
- 如何将qlv转成mp4格式?
- 无线路由器现在大部分每家都有|无线路由器怎么关掉wifi操作方法和步骤
- 电池|iQOOZ6与真我10 Pro+,差价100的千元手机,谁更优秀
