ip地址|IP 基础知识“全家桶”,45 张图一套带走( 十 )


NAT 穿越技术拥有这样的功能 , 它能够让网络应用程序主动发现自己位于 NAT 设备之后 , 并且会主动获得 NAT 设备的公有 IP , 并为自己建立端口映射条目 , 注意这些都是 NAT设备后的应用程序自动完成的 。
也就是说 , 在 NAT 穿越技术中 , NAT 设备后的应用程序处于主动地位 , 它已经明确地知道 NAT 设备要修改它外发的数据包 , 于是它主动配合 NAT 设备的操作 , 主动地建立好映射 , 这样就不像以前由 NAT 设备来建立映射了 。
说人话 , 就是客户端主动从 NAT 设备获取公有 IP 地址 , 然后自己建立端口映射条目 , 然后用这个条目对外通信 , 就不需要 NAT 设备来进行转换了 。
ICMP
ICMP 全称是 Internet Control Message Protocol , 也就是互联网控制报文协议 。
里面有个关键词 —— 控制 , 如何控制的呢?
网络包在复杂的网络传输环境里 , 常常会遇到各种问题 。
当遇到问题的时候 , 总不能死个不明不白 , 没头没脑的作风不是计算机网络的风格 。所以需要传出消息 , 报告遇到了什么问题 , 这样才可以调整传输策略 , 以此来控制整个局面 。
ICMP 功能都有啥?
ICMP主要的功能包括: 确认 IP 包是否成功送达目标地址、报告发送过程中 IP 包被废弃的原因和改善网络设置等 。
在IP通信中如果某个IP包因为某种原因未能达到目标地址 , 那么这个具体的原因将 由 ICMP 负责通知 。
ip地址|IP 基础知识“全家桶”,45 张图一套带走
文章图片

文章图片

ICMP 目标不可达消息
如上图例子 , 主机A向主机B发送了数据包 , 由于某种原因 , 途中的路由器2未能发现主机B的存在 , 这时 , 路由器2就会向主机A发送一个ICMP目标不可达数据包 , 说明发往主机B的包未能成功 。
ICMP 的这种通知消息会使用IP进行发送。
因此 , 从路由器2返回的 ICMP 包会按照往常的路由控制先经过路由器1再转发给主机A 。收到该 ICMP 包的主机A则分解 ICMP 的首部和数据域以后得知具体发生问题的原因 。
ICMP 类型
ICMP 大致可以分为两大类:一类是用于诊断的查询消息 , 也就是「 查询报文类型 」另一类是通知出错原因的错误消息 , 也就是「 差错报文类型 」
ip地址|IP 基础知识“全家桶”,45 张图一套带走
文章图片

文章图片

常见的 ICMP 类型IGMP
ICMP 跟 IGMP 是一点关系都没有的 , 就好像周杰与周杰伦的区别 , 大家不要混淆了 。
在前面我们知道了组播地址 , 也就是 D 类地址 , 既然是组播 , 那就说明是只有一组的主机能收到数据包 , 不在一组的主机不能收到数组包 , 怎么管理是否是在一组呢?那么 , 就需要IGMP协议了 。
ip地址|IP 基础知识“全家桶”,45 张图一套带走
文章图片

文章图片

组播模型
IGMP 是因特网组管理协议 , 工作在主机(组播成员)和最后一跳路由之间 , 如上图中的蓝色部分 。IGMP 报文向路由器申请加入和退出组播组 , 默认情况下路由器是不会转发组播包到连接中的主机 , 除非主机通过 IGMP 加入到组播组 , 主机申请加入到组播组时 , 路由器就会记录 IGMP 路由器表 , 路由器后续就会转发该组播地址的数据包了 。IGMP 报文采用 IP 封装 , IP 头部的协议号为 2 , 而且 TTL 字段值通常 为 1 , 因为 IGMP 是工作在主机与连接的路由器之间 。
IGMP 工作机制
IGMP 分为了三个版本分别是 , IGMPv1、IGMPv2、IGMPv3 。
接下来 , 以IGMPv2作为例子 , 说说 常规查询与响应和离开组播组这两个工作机制 。


推荐阅读