网络层(四)

4.8、网际控制报文协议 ICMP

概念

构建 IP网络时需要特别注意两点:

  • 确认网络是否正常工作
  • 遇到异常时进行问题诊断

而ICMP就是实现这些问题的协议

ICMP 的主要功能包括:

  • 确认IP包是否成功送达目标地址
  • 通知在发送过程当中IP包被丢弃的具体原因
  • 改善网络设置等

有了这些功能以后,就可以获得网络是否正常,设置是否有误以及设备有何异常等信息,从而便于进行网络上的问题诊断

网络层(四)_全球地址

ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议

ICMP 报文的格式

网络层(四)_全球地址_02

ICMP差错报告报文

终点不可达

假设主机H1给H2发送IP数据报,H1会将IP数据报发送给路由器R1,由R1帮其转发。若R1的路由表中没有网络N3的路由记录、默认路由以及主机H2的特定主机路由,则R1就不知道如何转发该数据报,只能将其丢弃。并向发送该数据报的源主机H1发送ICMP差错报告报文,其类型为终点不可达。

网络层(四)_全球地址_03

源点抑制

主机H1向H2发送IP数据报,当该数据报传输到路由器R2时,由于R2拥塞,也就是R2比较繁忙,R2根据自己的丢包策略丢弃了该数据报。并向发送该数据报的源主机H1发送ICMP差错报告报文,其类型为源点抑制。

网络层(四)_数据_04

时间超过

网络层(四)_全球地址_05

参数问题

网络层(四)_数据_06

改变路由(重定向)

网络层(四)_全球地址_07

不应发送ICMP差错报告报文

网络层(四)_ip地址_08

练习

网络层(四)_ip地址_09

ICMP询问报文

网络层(四)_ip地址_10

ICMP 应用举例

分组网间探测PING(Packet InterNet Groper)

网络层(四)_ip地址_11

跟踪路由(traceroute)

网络层(四)_全球地址_12

网络层(四)_ip地址_13

tracert 命令的实现原理

网络层(四)_全球地址_14

网络层(四)_ip地址_15

网络层(四)_数据_16

总结

网络层(四)_全球地址_17

4.9、虚拟专用网 VPN与网络地址转换 NAT

虚拟专用网 VPN(Virtual Private Network)

  • 由于IP 地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。
  • 考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网。
  • 假定在一个机构内部的计算机通信也是采用 TCP/IP 协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其 IP 地址

网络层(四)_数据_18

网络层(四)_全球地址_19

网络层(四)_全球地址_20

上图是因特网数字分配机构 IANA 官网查看的 IPv4地址空间中特殊地址的分配方案

用粉红色标出来的地址就是无需申请的、可自由分配的专用地址,或称私有地址。

给部门A的专用网分配的私有地址的网络号为:10.1.0.0

给部分B的专用网分配的私有地址的网络号为:10.2.0.0

网络层(四)_ip地址_21

私有地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信。

私有地址只能用作本地地址而不能用作全球地址。

在因特网中的所有路由器,对目的地址是私有地址的IP数据报一律不进行转发。

本地地址与全球地址

  • 本地地址— 仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向互联网的管理机构申请
  • 全球地址— 全球唯一的 IP 地址,必须向互联网的管理机构申请
  • 问题:在内部使用的本地地址就有可能和互联网中某个 IP 地址重合,这样就会出现地址的二义性问题
  • 部门A和部门B 各自至少需要一个路由器具有合法的全球IP地址,这样各自的专用网才能利用公用的因特网进行通信。

网络层(四)_ip地址_22

  • 部门A向部门B发送数据流程

网络层(四)_ip地址_23

R1收到该数据报后,发现其目的网络必须通过因特网才能到达,就将该内部IP数据报进行加密,这样就确保了内部IP数据报的安全,然后重新添加上数据报的首部,封装成为在因特网上发送的外部数据报。其首部中源地址字段的值为路由器R1的全球地址,目的地址字段的值为路由器R2的全球地址。路由器R2收到该外部IP数据报后,去掉其首部,将其数据部分进行解密,恢复出原来的内部IP数据报。这样就可以从其首部提取出源地址和目的地址。

网络层(四)_数据_24

两个专用网内的主机间发送的数据报是通过了公用的因特网,但在效果上就好像是在本机构的专用网上传送一样。

数据报在因特网中可能要经过多个网络和路由器,但从逻辑上看,R1和R2之间好像是一条直通的点对点链路。

网络层(四)_全球地址_25

因此也被称为IP隧道技术。

网络层(四)_ip地址_26

网络地址转换NAT(Network Address Translation)

网络层(四)_ip地址_27

举例

网络层(四)_ip地址_28

使用私有地址的主机,如何才能与因特网上使用全球IP地址的主机进行通信呢 ?

这需要在专用网络连接到因特网的路由器上安装NAT软件

网络层(四)_ip地址_29

装有 NAT软件的路由器叫做NAT路由器。

它至少有一个有效的外部全球IP地址。

这样,所有使用私有地址的主机在和外界通信时,都要在NAT路由器上将其私有地址转换为全球IP地址。

  • 假设,使用私有地址的主机要给因特网上使用全球IP地址的另一台主机发送IP数据报

网络层(四)_全球地址_30

  • 因特网上的这台主机给源主机发回数据报

网络层(四)_ip地址_31

  • 当专用网中的这两台使用私有地址的主机都要给因特网上使用全球地址的另一台主机发送数据报时,在NAT路由器的NAT转换表中就会产生两条记录,分别记录两个私有地址与两个全球地址的对应关系。

网络层(四)_ip地址_32

  • 这种基本转换存在一个问题

网络层(四)_ip地址_33

网络地址与端口号转换 NAPT

解决方法

网络层(四)_数据_34

我们现在用的很多家用路由器都是这种NART路由器。

内网主机与外网主机的通信,是否能由外网主机首先发起 ?

答案是否定的!!!

网络层(四)_数据_35

网络层(四)_ip地址_36

总结

网络层(四)_ip地址_37