二、 IP 地址的基础知识( 六 )


很抽象?来,看下面的图解就能瞬间明白了 。
图中有两个客户端 192.168.1.10 和 192.168.1.11 同时与服务器 183.232.231.172 进行通信,并且这两个客户端的本地端口都是 1025 。
此时,两个私有 IP 地址都转换 IP 地址为公有地址 120.229.175.121,但是以不同的端口号作为区分 。
于是,生成?个 NAPT 路由器的转换表,就可以正确地转换地址跟端口的组合,令客户端 A、B 能同时与服务器之间进行通信 。
这种转换表在 NAT 路由器上自动生成 。例如,在 TCP 的情况下,建立TCP 连接首次握手时的 SYN 包?经发出,就会生成这个表 。而后又随着收到关闭连接时发出 FIN 包的确认应答从表中被删除 。
NAT 那么牛逼,难道就没缺点了吗?
当然有缺陷,肯定没有十全十美的方案 。
由于 NAT/NAPT 都依赖于自己的转换表,因此会有以下的问题:
如何解决 NAT 潜在的问题呢?
解决的方法主要有两种方法 。
第?种就是改用IPv6:
IPv6 可用范围非常大,以至于每台设备都可以配置?个公有 IP 地址,就不搞那么多花里胡哨的地址转换了,但是IPv6 普及速度还需要?些时间 。
第二种 NAT 穿透技术:
NAT 穿越技术拥有这样的功能,它能够让网络应用程序主动发现自己位于 NAT 设备之后,并且会主动获得 NAT 设备的公有 IP,并为自己建立端口映射条目,注意这些都是 NAT设备后的应用程序自动完成的 。
也就是说,在 NAT 穿透技术中,NAT设备后的应用程序处于主动地位,它已经明确地知道 NAT 设备要修改它外发的数据包,于是它主动配合 NAT 设备的操作,主动地建立好映射,这样就不像以前由 NAT 设备来建立映射了 。
说人话,就是客户端主动从 NAT 设备获取公有 IP 地址,然后自己建立端口映射条目,然后用这个条目对外通信,就不需要 NAT 设备来进行转换了 。
ICMP
ICMP 全称是,也就是互联网控制报文协议 。
里面有个关键词 —— 控制,如何控制的呢?
网络包在复杂的网络传输环境里,常常会遇到各种问题 。
当遇到问题的时候,总不能死个不明不白,没头没脑的作风不是计算机网络的风格 。所以需要传出消息,报告遇到了什么问题,这样才可以调整传输策略,以此来控制整个局面 。
ICMP 功能都有啥?
ICMP 主要的功能包括:确认 IP 包是否成功送达目标地址、报告发送过程中 IP 包被废弃的原因和改善网络设置等 。
在 IP 通信中如果某个 IP 包因为某种原因未能达到目标地址,那么这个具体的原因将由 ICMP 负责通知 。
如上图例子,主机 A 向主机 B 发送了数据包,由于某种原因,途中的路由器 2 未能发现主机 B 的存在,
这时,路由器 2 就会向主机 A 发送?个 ICMP 目标不可达数据包,说明发往主机 B 的包未能成功 。
ICMP 的这种通知消息会使用IP 进行发送。
因此,从路由器 2 返回的 ICMP 包会按照往常的路由控制先经过路由器 1 再转发给主机 A。收到该 ICMP
包的主机 A 则分解 ICMP 的?部和数据域以后得知具体发?问题的原因 。
ICMP 类型:
ICMP 大致可以分为两大类:
IGMP
ICMP 跟 IGMP 是?点关系都没有的,就好像周杰与周杰伦的区别,大家不要混淆了 。
在前面我们知道了组播地址,也就是 D 类地址,既然是组播,那就说明是只有?组的主机能收到数据包,不在?组的主机不能收到数组包,怎么管理是否是在一组呢?那么,就需要 IGMP 协议了 。
IGMP 是因特网组管理协议,工作在主机(组播成员)和最后一跳路由之间,如上图中的蓝色部分 。
IGMP 工作机制: