zoukankan      html  css  js  c++  java
  • 网络--网络层协议

    IP协议

    ip数据报格式

    IP 数据报的首部长度和数据长度都是可变长的,但总是4 字节的整数倍。对于IPv4,4 位版本字段是4。
    4 位首部长度的数值是以4 字节为单位的,最小值为5,也就是说首部长度最小是4x5=20 字节,也就是不带任何选项的IP 首部,4 位能表示的最大值是15,也就是说首部长度最大是60 字节
    8 位TOS 字段有3 个位用来指定IP 数据报的优先级(目前已经废弃不用),还有4 个位表示可选的服务类型(最小延迟、最大呑吐量、最大可靠性、最小成本),还有一个位总是0。
    总长度是整个数据报(包括IP 首部和IP 层payload)的字节数。每传一个IP 数据报,16 位的标识加1,可用于分片和重新组装数据报。3 位标志和13 位片偏移用于分片。
    TTL(Time to live)是这样用的:源主机为数据包设定一个生存时间,比如64,每过一个路由器就把该值减1,如果减到0 就表示路由已经太长了仍然找不到目的主机的网络,就丢弃该包,因此这个生存时间的单位不是秒,而是跳(hop)
    协议字段指示上层协议是TCP、UDP、ICMP 还是IGMP。然后是校验和,只校验IP 首部,数据的校验由更高层协议负责。IPv4的IP 地址长度为32 位。
     

    网际控制报文协议ICMP

    目的:
      为了提高 IP 数据报交付成功的机会
    注意:
      ● 允许主机和路由器报告差错情况和提供有关异常情况的报告
      ● ICMP不是高层协议,而是IP层的协议
      ● ICMP报文作为IP层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去
      ● ICMP报文的前4个字节是统一的格式,共有三个字段:即类型,代码和检验和.接着的4个字节的内容与ICMP的类型有关
    种类:
      ● ICMP 差错报告报文:
        ○ 终点不可达
        ○ 源点抑制(Source quench)
        ○ 时间超过
        ○ 参数问题
        ○ 改变路由(重定向)(Redirect)
      ● ICMP 询问报文:
        ○ 回送请求和回答报文
        ○ 时间戳请求和回答报文

    报文格式:

    所有的ICMP差错报告报文中的数据字段都具有同样的格式。将收到的需要进行差错报告IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段。再加上响应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。提取收到的数据报的数据字段的前8个字节是为了得到运输层的端口号(对于TCP和UDP)以及运输层报文的发送序号(对于TCP)。
     
    ICMP地址掩码请求和应答报文

    ICMP不可达报文

    日常生活中,邮寄包裹会经过多个传递环节,任意一环如果无法传下去,都会返回寄件人,并附上无法邮寄的原因。同理,当路由器收到一个无法传递下去的IP报文时,会发送ICMP目的不可达报文(Type为3)给IP报文的源发送方。报文中的Code就表示发送失败的原因。
    Code
    0 = net unreachable;
    1 = host unreachable;
    2 = protocol unreachable;
    3 = port unreachable;
    4 = fragmentation needed and DF set;
    5 = source route failed.

    ICMP回显请求和回显应答报文格式

    ICMP超时报文

    网络传输IP数据报的过程中,如果IP数据包的TTL值逐渐递减为0时,需要丢弃数据报。这时,路由器需要向源发送方发送ICMP超时报文(Type为11),Code为0,表示传输过程中超时了。
    一个IP数据报可能会因为过大而被分片,然后在目的主机侧把所有的分片重组。如果主机迟迟没有等到所有的分片报文,就会向源发送方发送一个ICMP超时报文,Code为1,表示分片重组超时了。

    ICMP重定向报文

    当路由收到IP数据报,发现数据报的目的地址在路由表上没有,它就会发ICMP重定向报文(Type为5)给源发送方,提醒它想要发送的地址不在,去其他地方找找

    ICMP路由器请求报文格式

    ICMP路由器通告报文格式

    ICMP 源站抑制差错报文格式

      ICMP 类型:

    不应发送ICMP差错报告报文的情况:
      ● 对第一个分片的数据报片的所有后续数据报片都不发送ICMP 差错报告报文
      ● 多播地址的数据报都不发送ICMP差错报告报文
      ● 特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP差错报告报文


    IGMP 是Internet Group Management Protocol(互联网组管理协议)的简称。它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。

    IGMP主要功能
    当一台主机加入到一个新的组时,它发送一个IGMP消息到组地址以宣告它的成员身份,多播路由器和交换机就可以从中学习到组的成员。利用从IGMP中获取到的信息,路由器和交换机在每个接口上维护一个多播组成员的列表。
    IGMP报文格式和分类
    一个完整的IGMP数据报:正如ICMP一样, IGMP 也被当作IP 层的一部分。

    IGMP报文的基本格式:IGMP有固定的报文长度,没有可选数据。

    1) 4位IGMP版本。
    2) 4位IGMP类型:为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。
    3) 16位校验和:检验和字段覆盖整个IGMP报文。使用的算法和IP首部校验和算法相同。IGMP的检验和是必需的。

  • 相关阅读:
    动态表单功能
    IDEA2019版Run Dashboard调出方案
    js页面传递参数为中文乱码问题解决方法
    layui 一行多列控件时使用table布局
    npm 安装包失败 --- 清除npm缓存
    解析数据库连接字符串 (将Data Source、Initial Catalog、User ID、Password取出)
    SQL SERVER 存储过程语法
    mvc5 跨域访问
    钟表
    MVC session过期如何处理跳转(转)
  • 原文地址:https://www.cnblogs.com/tla001/p/6485813.html
Copyright © 2011-2022 走看看