zoukankan      html  css  js  c++  java
  • 对TCP/IP协议的一些看法(6):ICMP协议

    今天是连续坚持的第六天写博客,给自己鼓励下,fighting!

    今天主要写下对IP层另一个比较重要的协议——ICMP协议的看法。ICMP全称为Internet control management protocol,即网络控制管理协议,其主要作用是向主机发送错误信息和一些控制信息。常见的错误信息包括网络不可达,主机不可达,路由不可用等。最常用的ICMP协议包括了ping和traceroute。以下图为例:

    在运行处输入cmd即可进入DOS界面。上面我来对主机10.13.22.232进行ping,由于与目标主机处于同一子网,可以看到目标主机进行了回应。一般windows和linux系统都显示4个回复信息,这个可以设置来改变。32字节表示报文的长度,ICMP协议是装载在IP报文中的,其头部包括IP抱头和ICMP报文头,后面才是ICMP数据。TTL表示生存时间,报文每经过一个路由器,其对应的TTL都要减1,直到为0后丢弃该报文。windows一般初始TTL为64,linux为255.

    traceroute与ping的原理类似,它类似于一种试探来建立连接。首先设TTL为1,这样经过一个路由器后就被抛弃。之后设为2,则经过两个路由器被丢弃,以此类推,直到设置某个值后刚好能连接目标主机,则实现了一条通信路径的建立。

    上述所说的ICMP差错报文在以下情况下不会产生:

    1.ICMP差错报文本身不产生ICMP差错报文,否则一直在网络中循环,浪费网络资源

    2.目的地址是多播或广播地址的IP数据包

    3.作为链路层广播的数据包

    4.不是IP分片的第一片

    5.源地址不是单个主机的数据包

    重要的几个ICMP差错报文包括:

    1.主机不可达,指路由器收到一份数据包但不能进行转发时产生

    2.端口不可达,目标端口与某个正在运行的进程不一样

    3.重定向报文,指IP数据包应该被送到另一个路由器,重定向可以让路由器建立更加完善的路由表

  • 相关阅读:
    Unity3d与Android交互
    A star 寻路
    网络协议
    数据驱动
    有限状态机(FSM)
    自己封装一个Log模块
    Unity5.x版本AssetBundle加载研究
    Unity5.x版本AssetBundle打包研究
    alidoing --使用JS实现多语言框架、喜欢的请进、、瓦特平台!
    使用代码生成器“代码工厂”快速生成B/S程序代码
  • 原文地址:https://www.cnblogs.com/elninohjh/p/4227147.html
Copyright © 2011-2022 走看看