美文网首页
网络层(三):IP协议

网络层(三):IP协议

作者: ywhu | 来源:发表于2017-09-25 21:47 被阅读0次

网际控制报文协议 ICMP

概述

ICMP 经常被认为是IP层的一个组成部分,它传递差错报文以及其他需要注意的信息。ICMP 报文通常被 IP 层或更高层协议(TCP 或UDP)使用。ICMP报文是在 IP 数据报内部传输的。IP协议是不可靠协议,不能保证 IP 数据报能够成功的到达目的主机,无法进行差错控制,而ICMP协议能够协助IP协议完成这些功能

ICMP作为IP数据报的数据,加上数据报的首部,组成IP数据报发送出去

  • 类型:一个8位类型字段,表示ICMP数据包类型;

  • 代码:一个8位代码域,表示指定类型中的一个功能,如果一个类型中只有一种功能,代码域置为 0;

  • 检验和:数据包中ICMP部分上的一个16位检验和;

报文类型

ICMP 报文大致可分为两类:差错报文、查询报文

ICMP报文前4个字节是统一的格式,有三个字段组成:类型、代码和校验和。接着4个字节内容和ICMP类型有关。最后是数据字段,长度取决于ICMP的类型

不产生 ICMP 差错报文的几种情况:

  • ICMP 报文差错(ICMP查询报文可能会产生ICMP差错报文);

  • 目的地址是广播地址或多播地址的 IP 数据报;

  • 作为链路层广播的数据报;

  • 不是 IP 分片的第一片;

  • 源地址不是单个主机的数据报,也就是说,源地址不可能是零地址、环回地址、广播地址或多播地址;

ICMP差错报文的几种情况

  • ICMP 目标不可达消息:IP 路由器无法将 IP 数据报发送给目的地址时,会给发送端主机返回一个目标不可达 ICMP 消息,并在这个消息中显示不可达的具体原因。

  • ICMP 重定向消息:如果路由器发现发送端主机使用次优的路径发送数据时,那么它会返回一个 ICMP 重定向消息给这个主机,这个消息包含了最合适的路由信息和源数据。主要发生在路由器持有更好的路由信息的情况下,路由器会通过这个 ICMP 重定向消息给发送端主机一个更合适的发送路由。

  • ICMP 超时消息:IP 数据包中有一个字段 TTL(Time to live,生存周期),它的值随着每经过一个路由器就会减 1,直到减到 0 时该 IP 数据包被丢弃。此时,IP 路由器将发送一个 ICMP 超时消息给发送端主机,并通知该包已被丢弃。

  • 源抑制消息:当 TCP/IP 主机发送数据到另一主机时,如果速度达到路由器或者链路的饱和状态,路由器发出一个 ICMP 源抑制消息。

ICMP 查询报文

  • ICMP 回送消息:用于进行通信的主机或路由之间,判断发送数据包是否成功到达对端的消息。可以向对端主机发送回送请求消息,也可以接收对端主机回来的回送应答消息。

  • ICMP 地址掩码消息:主要用于主机或路由想要了解子网掩码的情况。可以向那些主机或路由器发送 ICMP 地址掩码请求消息,然后通过接收 ICMP 地址掩码应答消息获取子网掩码信息。

  • ICMP 时间戳消息:可以向那些主机或路由器发送 ICMP 时间戳请求消息,然后通过接收 ICMP 时间戳应答消息获取时间信息。

Ping 程序

Ping 程序利用ICMP回显请求报文和回显应答报文(而不用经过传输层)来测试目标主机是否可达。它是一个检查系统连接性的基本诊断工具。

ICMP 回显请求和 ICMP 回显应答报文是配合工作的。当源主机向目标主机发送了 ICMP 回显请求数据包后,它期待着目标主机的回答。目标主机在收到一个 ICMP 回显请求数据包后,它会交换源、目的主机的地址,然后将收到的 ICMP 回显请求数据包中的数据部分原封不动地封装在自己的 ICMP 回显应答数据包中,然后发回给发送 ICMP 回显请求的一方。如果校验正确,发送者便认为目标主机的回显服务正常,也即物理连接畅通。

例如:在终端上 Ping 下谷歌的地址,神奇的发现谷歌地址既然不用翻墙都能上了,而且丢包率 0%。

1. $ ping www.google.com

2. PING www.google.com (173.194.127.148) 56(84) bytes of data.

3. 64 bytes from hkg03s13-in-f20.1e100.net (173.194.127.148): icmp_req=1 ttl=48 time=11.0 ms

4. 64 bytes from hkg03s13-in-f20.1e100.net (173.194.127.148): icmp_req=2 ttl=48 time=10.8 ms

5. 64 bytes from hkg03s13-in-f20.1e100.net (173.194.127.148): icmp_req=3 ttl=48 time=11.1 ms

6. 64 bytes from hkg03s13-in-f20.1e100.net (173.194.127.148): icmp_req=4 ttl=48 time=10.8 ms

7. 64 bytes from hkg03s13-in-f20.1e100.net (173.194.127.148): icmp_req=5 ttl=48 time=11.1 ms

8. 64 bytes from hkg03s13-in-f20.1e100.net (173.194.127.148): icmp_req=6 ttl=48 time=11.0 ms

9. 64 bytes from hkg03s13-in-f20.1e100.net (173.194.127.148): icmp_req=7 ttl=48 time=10.5 ms

10. 64 bytes from hkg03s13-in-f20.1e100.net (173.194.127.148): icmp_req=8 ttl=48 time=9.96 ms

11. 64 bytes from hkg03s13-in-f20.1e100.net (173.194.127.148): icmp_req=9 ttl=48 time=10.9 ms

12. ^C

13. --- www.google.com ping statistics ---

14. 9 packets transmitted, 9 received, 0% packet loss, time 8009ms

15. rtt min/avg/max/mdev = 9.963/10.830/11.123/0.368 ms

相关文章

  • 五、IP协议

    IP 协议简介 IP 协议位于 TCP/IP 协议的第三层——网络层。与传输层协议相比,网络层的责任是提供点到点(...

  • IP协议简介

    IP 协议简介 IP 协议位于 TCP/IP 协议的第三层——网络层。与传输层协议相比,网络层的责任是提供点到点(...

  • Socket,http长连接与短连接

    TCP/IP TCP/IP是个协议组,可分为三个层次:网络层,传输层和应用层. 在网络层有IP协议,ICMP协议,...

  • http和socket之长连接和短连接区别

    TCP/IP TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、...

  • http和socket之长连接和短连接区别

    TCP/IP TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、...

  • TCP/IP 协议族

    TCP/IPTCP/IP 是个协议族,可以分为三个层次:网络层、传输层和应用层在网络层有:IP协议、ICMP协议、...

  • TCP、UDP、HTTP及Socket简单讲解

    一、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议...

  • TCP、UDP、HTTP协议

    1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议...

  • 对HTTP,TCP,UDP的认识

    1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、...

  • TCP/IP

    1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议...

网友评论

      本文标题:网络层(三):IP协议

      本文链接:https://www.haomeiwen.com/subject/arxjextx.html