TCP-IP详解笔记5

ICMPv4和ICMPv6: Internet控制报文协议

  • Internet控制报文协议(Internet Control Message Protocol, ICMP)与IP结合使用,以便提供与IP协议层配置和IP数据报处理相关的诊断和控制信息。
  • ICMP即不属于网络层协议,也不属于传输层协议,而是属于两者之间。
  • ICMP负责传递可能需要注意的差错和控制报文。
  • ICMP报文是在IP数据报内被封装传输的。

ICMP报文

  • ICMP报文可分为两大类:

    • 有关IP数据报传递的ICMP报文(称为差错报文error message);

      • 目的不可达、重定向、超时和参数问题。
    • 有关信息采集和配置的ICMP报文(称为查询或者信息类报文 information message)。
      • 回显请求和回显应答,路由器通告和路由器请求。
  • 对传入的信息类请求将被操作系统自动处理,而差错类报文传递给用户进程或传输层协议,进程可以选择对它采取行动或忽略他们。
  • ICMP差错报文不会对以下报文进行响应:
    • 另一个IMP差错报文;
    • 头部损坏的数据报(校验和错误);
    • IP层的广播/组播数据报;
    • 封装在链路层广播或组播帧中的数据报;
    • 无效或者网络为零的源地址的数据报;
    • 出第一个之外的其他分片。
  • 假如一个路由器接收到一个来自主机的数据报,并确定自身并不是主机将数据报投递到目的地的对应下一跳,则该路由器发动一个重定向报文到主机并将该报文发送到正确的路由器(或主机)。
  • traceroute工具被用于确定从发送者到目的地路径上的路由器。

ICMP查询/信息类报文

  • 广泛使用的ICMP查询/信息类报文时回显请求和应答报文,通常称为ping, 以及路由器发现报文。
  • 设计ICMP的攻击主要分3类: 泛洪(flood)、炸弹(bomb)和信息泄露(information disclosure).
  • Internet控制报文协议(ICMPv4和ICMPv6)是每一个IP实现中的必要组成部分。
    • ICMP报文是携带在IP数据报中的,具有端到端校验和的报文。

广播和本地组播

  • 4种IP地址:

    • 单播(unicast), 任播(anycast), 组播(multicast), 广播(broadcast).
  • 链路层地址如何有效地用于从一台计算机向其他几台计算机发送组播或广播流量。
  • 互联网组管理协议(IGMP)和IPv6组播侦听发现(MLD)协议,用来通知IPv4和IPv6组播路由器子网中那些组播地址正在使用。
  • 广播和组播为应用程序提供了两种服务:
    • 数据分组交互至多个目的地。
    • 通过客户端请求/发现服务器。
  • 组播只涉及那些支持或使用特定服务或协议的系统,一个广播请求会影响在广播范围内所有可以到达的主机,而组播只影响那些可能对该请求有兴趣的主机。
    • 广播更高开销和简单性;
    • 组播效率改善和复杂性。
    • IPv6不支持广播,仅支持组播。
  • 只有使用UDP传输协议的用户应用程序利用广播和组播,此时应用程序发送单个报文到多个接收方才是有意义的。
  • TCP是面向连接的协议,这意味着两台主机(由IP地址指定)和每台主机上的一个进程(由端口号指定)之间的一个连接,TCP可以使用单播和任播地址,但是不能使用广播或组播地址。
  • 广播是指将报文发送到网络中的所有可能的接收者。
    • 路由器简单地将它接收到的任意报文副本专利除报文到达的接口一下的每个接口。
    • 组播MAC地址中高维字节的底序位打开。
    • 使用广播的应用程序使用UDP协议,然后调用一组普通API来发送流量。
  • 组播是为了减小在广播中涉及的开销,可以只向那些对它感兴趣的接收方发送流量。
    • 通过发送方指明接收方,或是通过接收方独立地指明它们的兴趣。网络只负责向预期的/感兴趣的接收方来发送流量。
    • 组播状态(multicast state)必须由主机和路由器来保持,已说明那些接收方对那些流量有兴趣。
    • 特定源组播(SSM)允许终端点明确地包含或排除从一组特定发送方发送到一个组播组的流量。
      • 确定单个源的位置比确定很多源的位置更容易。
  • 将组播地址转换为802 MAC/ 以太网地址:
    • 为了在链路层网络中有效地承载IP组播,在IP层和链路层帧的数据分组和地址之间应该有一个一对一的映射。
  • 当发送任意的IP数据分组时,必须决定使用哪个地址和接口。
    • IPv6中每个接口有多个地址被认为是正常的。
    • netstat -rn命令显示路由表的输出情况。
  • 接收组播数据报: 组播的基本是在主机给定的接口上进程加入和离开一个或多个组播组的概念。
    • 在一个给定接口上的组播组的成员资格是动态的,它随进程加入或离开组而改变,组的成员资格与接口相关。
    • 一个进程可以在多个接口上加入同一组,也可以加入同一接口上的多个组,或是其中的任意组合。
  • 在一个典型的交换式以太网环境中,广播和组播沿着在交换机之间形成的一棵生成树在VLAN中的所有段被复制。
  • 网络接口卡(NIC)一般分为两类:
    • 基于组播硬件地址的散列值的过滤,主机软件可以表达对该硬件地址的兴趣,由于散列冲突,一些不需要的帧总是可以通过。
    • 侦听组播地址的一张有限表,如果主机需要接收超过表中能够容纳的更多的组播地址的帧,NIC将进入一种组播混杂模式。
      • 所有组播流量将交给主机软件。

互联网组管理协议和组播侦听发现协议

  • 当组播数据报在广域网或是跨越多个子网的企业中转发时,组播路由(multicast routing)应该由一个或多个组播路由器启动。

    • 方向路径转发检查(RPF), 对于组播回路来说非常重要。
    • 组播路由在很大程度上是独立于由IP路由器提供的传统的单播路由。
  • IPv4使用互联网组管理协议(IGMP)和IPv6使用的组播侦听发现协议(MLD)用于允许组播路由器了解附近的主机感兴趣的组。
    • IGMP被封装为一个单独的协议;
    • MLD是ICMPv6报文的一种类型。
  • IGMP和MLD由组成员的主机执行的和由组播路由器执行的。
    • 报告报文,组记录向量。
  • IGMP或MLD的失效或更一般的组播,可以导致不需要的组播流量的分配,或没有灵力交互期望的组播流量。
    • IGMP和MLD处理的失败类型包含组播路由器的失效和协议报文的丢失。
    • 通过允许多个组播路由器在同一链路上运行,可以处理组播路由器潜在的失效故障。
  • 多个组播路由器实现的第一种类型的协调是查询其选举(querier election).
    • 每个组播路由器可以侦听其他的查询。
  • IGMP和MLD是软状态的协议,他们也处理路由器的失效、协议报文的丢失以及与早期协议版本的互操作性。
    • 很多设备是基于触发状态改变和协议动作的计时器来启动这些功能的。
  • 由于IGMP和MLD是信令协议,可以控制组播流量的流动,使用这些协议的攻击主要是Dos攻击或资源使用攻击。
    • 通过发送IGMP或MLD来订阅大量的高带宽的组播组来发起。

TCP-IP详解笔记5的更多相关文章

  1. TCP/IP详解 笔记十四

    TCP/IP协议(二)  连接的建立与终止 tcpdump -S输出TCP报文的格式 格式: 源>目的:标志 (标志就是tcp头部).标识首字符意义如下: 例如:telnet 某服务的输出(包括 ...

  2. TCP/IP详解 笔记一

    概述: Tcp-ip让网络上的计算机进行通信,而不管计算机和操作系统是否一样. 分层结构: Tcp/ip协议族是多层协议的组合,而tcp和ip只是其中的两个协议而已. 一个通信举例: 注意图的右上方: ...

  3. TCP/IP详解 笔记十三

    TCP协议(一) 概述 特点 1,  面向连接可靠的字节流服务 2,  只有两方通信,不能用于广播或多播 3,  应用数据被TCP分隔为最合适发送的数据段,传给IP协议栈 4,  发送端并启动定时器, ...

  4. TCP/IP详解 笔记十一

    域名服务系统(DNS) DNS:名字到IP转换:电子邮件选路信息:分布式数据库 解析器:是通过gethostbyname(3)和gethostbyaddr(3)来实现的 最常用的名字服务器是BIND ...

  5. TCP/IP详解 笔记九

    广播和多播 多播和广播只能用于UDP包,TCP明确在两个进程间建立连接. 多播:帧只传送给属于多播组的多个接口 主机对帧的过滤过程: 通常网卡只接收那些目的地址为本物理接口地址或广播地址的帧:设置为混 ...

  6. TCP/IP详解 笔记八

    UDP协议 UDP是传输层协议,提供无连接不可靠的数据传输,其优点失效率高,确定确定是无序不可靠. 报文格式 UDP头部 TCP和UDP的端口号是独立的 UDP长度是指UDP数据报的总长度 UDP的校 ...

  7. TCP/IP 详解笔记

    最早的 TCP 协议文档是 RFC793. TCP 提供一种面向连接的.可靠的字节流服务. 面向连接容易理解,那么什么是字节流服务呢? 答:两个应用程序通过 TCP 连接交换 8 bit 字节构成的字 ...

  8. TCP/IP详解 笔记十二

    简单文件传送协议 TFTP 1)         初衷是为了引导无盘系统 2)         使用UDP 3)         代码都能适合只读存储器 无盘主机通过RARP获得ip地址后进行一个TF ...

  9. TCP/IP详解 笔记十

    IGMP Internet组管理协议 IGMP的作用:让一个物理网络上的所有系统知道主机所在的多播组: 让路由器知道多播数据报应该向哪个端口转发. IGMP有固定长度,没有可选数据,在ip头部的协议值 ...

  10. TCP/IP详解学习笔记

    TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...

随机推荐

  1. .NET Core 实现 Redis 批量查询指定格式的Key

    一. 问题场景 Redis 作为当前最流行的内存型 NoSQL 数据库,被许多公司所使用,作为分布式缓存.我们在实际使用中一般都会为 key 带上指定的前缀或者其他定义的格式.当由于我们程序出现bug ...

  2. SpringCloud(8)微服务监控Spring Boot Admin

    1.简介 Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件.Spring Boot Admin 分为 Server 端和 Client 端,Spring ...

  3. Numpy基本操作

    NumPy:数组计算 NumPy是高性能科学计算和数据分析的基础包.它是Pandas等其他各种工具的基础 NumPy的主要功能: ndarray,一个多维数据结构,高校且节省空间 无需循环即可对整组数 ...

  4. 细述:nginx http内核模块提供的变量和解释

    导读 ngx_http_core_module模块在处理请求时,会有大量的变量,这些变量可以通过访问日志来记录下来,也可以用于其它nginx模块. 在我们对请求做策略如改写等等都会使用到一些变量,顺便 ...

  5. 我遇到的response.sendRedirect跳转不了问题

    response.sendRedirect不跳转的原因可以归纳为(其中第三点是我遇到的问题): 前人经验: 在使用response.sendRedirect时,前面不能有HTML输出: 在respon ...

  6. [转帖]Linux中的15个基本‘ls’命令示例

    Linux中的15个基本‘ls’命令示例 https://linux.cn/article-5109-1.html ls -lt 和 ls -ltr 来查看文件新旧顺序. list time rese ...

  7. vue.js实战——方法设置默认参数

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Android艺术——深看Activity的生命周期

    探究Activity的生命周期 1.典型情况下的生命周期分析:onCreate 初始化工作,加载布局资源和数据:onStart ac正在启动但是无法交互,后台:onResume ac可见,显示在前台: ...

  9. Activiti6事件及监听器配置(学习笔记)

    1.事件及监听器原理 当流程引擎启动的时候,我们定义的监听器,就已经注册在一个事件类型上面. 注册的方式有多种,它可以注册在所有的事件类型上面.也可以注册在指定的几个事件类型上面,这样引擎启动的时候就 ...

  10. 使用lombok自动生成链式调用

    本文转载:使用 Lombok 自动生成 Getter and Setter