• 网络协议-TCP/IP基础(5)


    • ICMP经常被认为是IP层的一个组成部分,它传递差错报文以及其他需要注意的信息。
    • ICMP报文通常被IP层或更高层的协议使用,一些ICMP报文把差错报文返回给用户进程。
    • ICMP报文是在IP数据报内部被传输的。

     

     类型字段可以有15个不同的值,以描述特定类型的ICMP报文,某些ICMP报文还使用代码字段的值来进一步描述不同的条件。

    检验和字段覆盖整个ICMP报文,使用的算法与IP首部检验和算法相同,ICMP检验和是必需的。


    ICMP报文类型

    •  图中最后两列表表明ICMP报文是一份查询报文还是一份差错报文,因为对ICMP差错报文有时候需要进行特殊处理,因此需要进行区分。
    • 例如,对ICMP差错报文进行响应时,永远不会产生另一份ICMP差错报文(如果没有这个限制,可能会遇到一个差错产生另一个差错的情况,而差错再产生差错,会无限循环)。
    • 当发送一份ICMP差错报文时,报文始终包含IP首部和产生ICMP差错报文的IP数据报的前8个字节,这样接收ICMP差错报文的模块就会把它与某个特定的协议和用户进程联系起来。

    下面各种情况都不会产生ICMP差错报文:

    1. ICMP差错报文
    2. 目的地址是广播地址或多播地址的IP数据报
    3. 作为链路层广播的数据报
    4. 不是IP分片的第一片
    5. 源地址不是单个主机的数据报,这就是说,源地址不能为零地址、环回地址、广播地址或多播地址。

    ICMP重定向

    当IP数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送ICMP重定向差错报文给IP数据报的发送端,只有当主机可以选择路由器发送分组的情况下,才可能看到ICMP重定向报文。

    假定主机发送一份IP数据报给R1。

    R1收到数据报并检查它的路由表,发现R2是发送该数据报的下一站,当它把数据报发送给R2时,R1检测到它正在发送的接口和数据报到达的接口是相同的。

    R1发送一份ICMP重定向差错报文给主机,告诉主机以后把数据报发送给R2而不是R1。

     ICMP重定向报文的格式如下

     ICMP重定向报文的接收者必须查看三个IP地址:

    • 导致重定向的IP地址(即ICMP重定向报文的数据位于IP数据报的首部)
    • 发送ICMP重定向数据报的路由器的IP地址(包含重定向信息的IP数据报中的源地址)
    • 应该采用的路由器IP地址

    ICMP重定向报文规则

    • 重定向报文只能由路由器生成,而不能由主机生成。
    • 重定向报文是为了主机使用的,而不是为了路由器使用。

    一台主机收到ICMP重定向报文后,在修改路由表之前要做出一些检查,是为了防止路由器或主机的误操作,以及恶意用户的破坏,导致错误的修改路由表。

    • 新的路由器必须直接与网络相连。
    • 重定向报文必须来自到达当前目的地所选择的路由器。
    • 重定向报文不能让主机本身作为路由器。
    • 重新选择的路由器必须是间接路由。
  • 相关阅读:
    fetch的优点
    gitignore不起作用
    css动画和js动画区别
    工业家居气象空气环境质量监测仪记录数据甲醛PM2.5二氧化碳大气压温湿度
    摆脱淘宝、京东、拼多多内部引流消费规则,自建网站利用其完成支付
    语音朗读模块TTS文本变量实时转语音朗读科大讯飞XFS5152CE芯片AI
    PCB altium designer AD10 AD20 导出DWG CAD文件 过孔问题
    【Creator3】如何在3D场景中实现炫酷传送门,和简单的小地图功能,RenderTexture技术应用
    B站视频:【Creator3】好玩的编队代码 魔性排列停不下来 附源码及出处
    B站视频:《四图猜词》 Part3 | CocosCreator游戏开发教程
  • 原文地址:https://www.cnblogs.com/Virus-Faker/p/14745713.html
Copyright © 2020-2023  润新知